modernc.org/z@v1.7.4/lib/z_linux_riscv64.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_riscv64.go -pkgname z -trace-translation-units /tmp/go-generate-2452420230/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 _ *libc.TLS 20 var _ types.Size_t 21 22 const ( 23 AIO_PRIO_DELTA_MAX = 20 24 BASE = 65521 25 BC_BASE_MAX = 99 26 BC_DIM_MAX = 2048 27 BC_SCALE_MAX = 99 28 BC_STRING_MAX = 1000 29 BIG_ENDIAN = 4321 30 BYTE_ORDER = 1234 31 CHARCLASS_NAME_MAX = 2048 32 CHAR_BIT = 8 33 CHAR_MAX = 255 34 CHAR_MIN = 0 35 COLL_WEIGHTS_MAX = 255 36 DEF_MEM_LEVEL = 8 37 DEF_WBITS = 15 38 DELAYTIMER_MAX = 2147483647 39 DYN_TREES = 2 40 EXIT_FAILURE = 1 41 EXIT_SUCCESS = 0 42 EXPR_NEST_MAX = 32 43 FAR = 0 44 FD_SETSIZE = 1024 45 F_LOCK = 1 46 F_OK = 0 47 F_TEST = 3 48 F_TLOCK = 2 49 F_ULOCK = 0 50 HAVE_HIDDEN = 1 51 HAVE_MEMCPY = 0 52 HOST_NAME_MAX = 64 53 INT_MAX = 2147483647 54 INT_MIN = -2147483648 55 LINE_MAX = 2048 56 LITTLE_ENDIAN = 1234 57 LLONG_MAX = 9223372036854775807 58 LLONG_MIN = -9223372036854775808 59 LOGIN_NAME_MAX = 256 60 LONG_MAX = 9223372036854775807 61 LONG_MIN = -9223372036854775808 62 L_INCR = 1 63 L_SET = 0 64 L_XTND = 2 65 MAX_CANON = 255 66 MAX_INPUT = 255 67 MAX_MATCH = 258 68 MAX_MEM_LEVEL = 9 69 MAX_WBITS = 15 70 MB_LEN_MAX = 16 71 MIN_MATCH = 3 72 MQ_PRIO_MAX = 32768 73 NAME_MAX = 255 74 NGROUPS_MAX = 65536 75 NMAX = 5552 76 OS_CODE = 3 77 PATH_MAX = 4096 78 PDP_ENDIAN = 3412 79 PIPE_BUF = 4096 80 PRESET_DICT = 0x20 81 PTHREAD_DESTRUCTOR_ITERATIONS = 4 82 PTHREAD_KEYS_MAX = 1024 83 PTHREAD_STACK_MIN = 16384 84 RAND_MAX = 2147483647 85 RE_DUP_MAX = 32767 86 RTSIG_MAX = 32 87 R_OK = 4 88 SCHAR_MAX = 127 89 SCHAR_MIN = -128 90 SEEK_CUR = 1 91 SEEK_END = 2 92 SEEK_SET = 0 93 SEM_VALUE_MAX = 2147483647 94 SHRT_MAX = 32767 95 SHRT_MIN = -32768 96 SSIZE_MAX = 9223372036854775807 97 STATIC_TREES = 1 98 STDC = 0 99 STDC99 = 0 100 STDERR_FILENO = 2 101 STDIN_FILENO = 0 102 STDOUT_FILENO = 1 103 STORED_BLOCK = 0 104 TTY_NAME_MAX = 32 105 UCHAR_MAX = 255 106 UINT_MAX = 4294967295 107 ULLONG_MAX = 18446744073709551615 108 ULONG_MAX = 18446744073709551615 109 USHRT_MAX = 65535 110 WCONTINUED = 8 111 WEXITED = 4 112 WNOHANG = 1 113 WNOWAIT = 0x01000000 114 WSTOPPED = 2 115 WUNTRACED = 2 116 W_OK = 2 117 XATTR_LIST_MAX = 65536 118 XATTR_NAME_MAX = 255 119 XATTR_SIZE_MAX = 65536 120 X_OK = 1 121 ZCONF_H = 0 122 ZEXPORT = 0 123 ZEXPORTVA = 0 124 ZLIB_H = 0 125 ZLIB_VERNUM = 0x12b0 126 ZLIB_VERSION = "1.2.11" 127 ZLIB_VER_MAJOR = 1 128 ZLIB_VER_MINOR = 2 129 ZLIB_VER_REVISION = 11 130 ZLIB_VER_SUBREVISION = 0 131 ZUTIL_H = 0 132 Z_ASCII = 1 133 Z_BEST_COMPRESSION = 9 134 Z_BEST_SPEED = 1 135 Z_BINARY = 0 136 Z_BLOCK = 5 137 Z_BUF_ERROR = -5 138 Z_DATA_ERROR = -3 139 Z_DEFAULT_COMPRESSION = -1 140 Z_DEFAULT_STRATEGY = 0 141 Z_DEFLATED = 8 142 Z_ERRNO = -1 143 Z_FILTERED = 1 144 Z_FINISH = 4 145 Z_FIXED = 4 146 Z_FULL_FLUSH = 3 147 Z_HAVE_STDARG_H = 0 148 Z_HAVE_UNISTD_H = 0 149 Z_HUFFMAN_ONLY = 2 150 Z_LARGE64 = 0 151 Z_LFS64 = 0 152 Z_MEM_ERROR = -4 153 Z_NEED_DICT = 2 154 Z_NO_COMPRESSION = 0 155 Z_NO_FLUSH = 0 156 Z_NULL = 0 157 Z_OK = 0 158 Z_PARTIAL_FLUSH = 1 159 Z_RLE = 3 160 Z_STREAM_END = 1 161 Z_STREAM_ERROR = -2 162 Z_SYNC_FLUSH = 2 163 Z_TEXT = 1 164 Z_TREES = 6 165 Z_UNKNOWN = 2 166 Z_VERSION_ERROR = -6 167 Z_WANT64 = 0 168 X_ALLOCA_H = 1 169 X_ANSI_STDARG_H_ = 0 170 X_ANSI_STDDEF_H = 0 171 X_ATFILE_SOURCE = 1 172 X_BITS_BYTESWAP_H = 1 173 X_BITS_ENDIANNESS_H = 1 174 X_BITS_ENDIAN_H = 1 175 X_BITS_FLOATN_COMMON_H = 0 176 X_BITS_FLOATN_H = 0 177 X_BITS_POSIX1_LIM_H = 1 178 X_BITS_POSIX2_LIM_H = 1 179 X_BITS_POSIX_OPT_H = 1 180 X_BITS_PTHREADTYPES_ARCH_H = 1 181 X_BITS_PTHREADTYPES_COMMON_H = 1 182 X_BITS_STDINT_INTN_H = 1 183 X_BITS_TIME64_H = 1 184 X_BITS_TYPESIZES_H = 1 185 X_BITS_TYPES_H = 1 186 X_BITS_TYPES_LOCALE_T_H = 1 187 X_BITS_TYPES___LOCALE_T_H = 1 188 X_BITS_UINTN_IDENTITY_H = 1 189 X_BSD_PTRDIFF_T_ = 0 190 X_BSD_SIZE_T_ = 0 191 X_BSD_SIZE_T_DEFINED_ = 0 192 X_DEFAULT_SOURCE = 1 193 X_ENDIAN_H = 1 194 X_FEATURES_H = 1 195 X_FILE_OFFSET_BITS = 64 196 X_GCC_LIMITS_H_ = 0 197 X_GCC_MAX_ALIGN_T = 0 198 X_GCC_PTRDIFF_T = 0 199 X_GCC_SIZE_T = 0 200 X_GCC_WCHAR_T = 0 201 X_GETOPT_CORE_H = 1 202 X_GETOPT_POSIX_H = 1 203 X_LARGEFILE64_SOURCE = 1 204 X_LFS64_ASYNCHRONOUS_IO = 1 205 X_LFS64_LARGEFILE = 1 206 X_LFS64_STDIO = 1 207 X_LFS_ASYNCHRONOUS_IO = 1 208 X_LFS_LARGEFILE = 1 209 X_LIBC_LIMITS_H_ = 1 210 X_LIMITS_H___ = 0 211 X_LINUX_LIMITS_H = 0 212 X_LP64 = 1 213 X_POSIX2_BC_BASE_MAX = 99 214 X_POSIX2_BC_DIM_MAX = 2048 215 X_POSIX2_BC_SCALE_MAX = 99 216 X_POSIX2_BC_STRING_MAX = 1000 217 X_POSIX2_CHARCLASS_NAME_MAX = 14 218 X_POSIX2_CHAR_TERM = 200809 219 X_POSIX2_COLL_WEIGHTS_MAX = 2 220 X_POSIX2_C_BIND = 200809 221 X_POSIX2_C_DEV = 200809 222 X_POSIX2_C_VERSION = 200809 223 X_POSIX2_EXPR_NEST_MAX = 32 224 X_POSIX2_LINE_MAX = 2048 225 X_POSIX2_LOCALEDEF = 200809 226 X_POSIX2_RE_DUP_MAX = 255 227 X_POSIX2_SW_DEV = 200809 228 X_POSIX2_VERSION = 200809 229 X_POSIX_ADVISORY_INFO = 200809 230 X_POSIX_AIO_LISTIO_MAX = 2 231 X_POSIX_AIO_MAX = 1 232 X_POSIX_ARG_MAX = 4096 233 X_POSIX_ASYNCHRONOUS_IO = 200809 234 X_POSIX_ASYNC_IO = 1 235 X_POSIX_BARRIERS = 200809 236 X_POSIX_CHILD_MAX = 25 237 X_POSIX_CHOWN_RESTRICTED = 0 238 X_POSIX_CLOCKRES_MIN = 20000000 239 X_POSIX_CLOCK_SELECTION = 200809 240 X_POSIX_CPUTIME = 0 241 X_POSIX_C_SOURCE = 200809 242 X_POSIX_DELAYTIMER_MAX = 32 243 X_POSIX_FSYNC = 200809 244 X_POSIX_HOST_NAME_MAX = 255 245 X_POSIX_IPV6 = 200809 246 X_POSIX_JOB_CONTROL = 1 247 X_POSIX_LINK_MAX = 8 248 X_POSIX_LOGIN_NAME_MAX = 9 249 X_POSIX_MAPPED_FILES = 200809 250 X_POSIX_MAX_CANON = 255 251 X_POSIX_MAX_INPUT = 255 252 X_POSIX_MEMLOCK = 200809 253 X_POSIX_MEMLOCK_RANGE = 200809 254 X_POSIX_MEMORY_PROTECTION = 200809 255 X_POSIX_MESSAGE_PASSING = 200809 256 X_POSIX_MONOTONIC_CLOCK = 0 257 X_POSIX_MQ_OPEN_MAX = 8 258 X_POSIX_MQ_PRIO_MAX = 32 259 X_POSIX_NAME_MAX = 14 260 X_POSIX_NGROUPS_MAX = 8 261 X_POSIX_NO_TRUNC = 1 262 X_POSIX_OPEN_MAX = 20 263 X_POSIX_PATH_MAX = 256 264 X_POSIX_PIPE_BUF = 512 265 X_POSIX_PRIORITIZED_IO = 200809 266 X_POSIX_PRIORITY_SCHEDULING = 200809 267 X_POSIX_RAW_SOCKETS = 200809 268 X_POSIX_READER_WRITER_LOCKS = 200809 269 X_POSIX_REALTIME_SIGNALS = 200809 270 X_POSIX_REENTRANT_FUNCTIONS = 1 271 X_POSIX_REGEXP = 1 272 X_POSIX_RE_DUP_MAX = 255 273 X_POSIX_RTSIG_MAX = 8 274 X_POSIX_SAVED_IDS = 1 275 X_POSIX_SEMAPHORES = 200809 276 X_POSIX_SEM_NSEMS_MAX = 256 277 X_POSIX_SEM_VALUE_MAX = 32767 278 X_POSIX_SHARED_MEMORY_OBJECTS = 200809 279 X_POSIX_SHELL = 1 280 X_POSIX_SIGQUEUE_MAX = 32 281 X_POSIX_SOURCE = 1 282 X_POSIX_SPAWN = 200809 283 X_POSIX_SPIN_LOCKS = 200809 284 X_POSIX_SPORADIC_SERVER = -1 285 X_POSIX_SSIZE_MAX = 32767 286 X_POSIX_STREAM_MAX = 8 287 X_POSIX_SYMLINK_MAX = 255 288 X_POSIX_SYMLOOP_MAX = 8 289 X_POSIX_SYNCHRONIZED_IO = 200809 290 X_POSIX_THREADS = 200809 291 X_POSIX_THREAD_ATTR_STACKADDR = 200809 292 X_POSIX_THREAD_ATTR_STACKSIZE = 200809 293 X_POSIX_THREAD_CPUTIME = 0 294 X_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4 295 X_POSIX_THREAD_KEYS_MAX = 128 296 X_POSIX_THREAD_PRIORITY_SCHEDULING = 200809 297 X_POSIX_THREAD_PRIO_INHERIT = 200809 298 X_POSIX_THREAD_PRIO_PROTECT = 200809 299 X_POSIX_THREAD_PROCESS_SHARED = 200809 300 X_POSIX_THREAD_ROBUST_PRIO_INHERIT = 200809 301 X_POSIX_THREAD_ROBUST_PRIO_PROTECT = -1 302 X_POSIX_THREAD_SAFE_FUNCTIONS = 200809 303 X_POSIX_THREAD_SPORADIC_SERVER = -1 304 X_POSIX_THREAD_THREADS_MAX = 64 305 X_POSIX_TIMEOUTS = 200809 306 X_POSIX_TIMERS = 200809 307 X_POSIX_TIMER_MAX = 32 308 X_POSIX_TRACE = -1 309 X_POSIX_TRACE_EVENT_FILTER = -1 310 X_POSIX_TRACE_INHERIT = -1 311 X_POSIX_TRACE_LOG = -1 312 X_POSIX_TTY_NAME_MAX = 9 313 X_POSIX_TYPED_MEMORY_OBJECTS = -1 314 X_POSIX_TZNAME_MAX = 6 315 X_POSIX_V6_ILP32_OFF32 = -1 316 X_POSIX_V6_ILP32_OFFBIG = -1 317 X_POSIX_V6_LP64_OFF64 = 1 318 X_POSIX_V6_LPBIG_OFFBIG = -1 319 X_POSIX_V7_ILP32_OFF32 = -1 320 X_POSIX_V7_ILP32_OFFBIG = -1 321 X_POSIX_V7_LP64_OFF64 = 1 322 X_POSIX_V7_LPBIG_OFFBIG = -1 323 X_POSIX_VDISABLE = 0 324 X_POSIX_VERSION = 200809 325 X_PTRDIFF_T = 0 326 X_PTRDIFF_T_ = 0 327 X_PTRDIFF_T_DECLARED = 0 328 X_RWLOCK_INTERNAL_H = 0 329 X_SIZET_ = 0 330 X_SIZE_T = 0 331 X_SIZE_T_ = 0 332 X_SIZE_T_DECLARED = 0 333 X_SIZE_T_DEFINED = 0 334 X_SIZE_T_DEFINED_ = 0 335 X_STDARG_H = 0 336 X_STDC_PREDEF_H = 1 337 X_STDDEF_H = 0 338 X_STDDEF_H_ = 0 339 X_STDLIB_H = 1 340 X_STRINGS_H = 1 341 X_STRING_H = 1 342 X_STRUCT_TIMESPEC = 1 343 X_SYS_CDEFS_H = 1 344 X_SYS_SELECT_H = 1 345 X_SYS_SIZE_T_H = 0 346 X_SYS_TYPES_H = 1 347 X_THREAD_MUTEX_INTERNAL_H = 1 348 X_THREAD_SHARED_TYPES_H = 1 349 X_T_PTRDIFF = 0 350 X_T_PTRDIFF_ = 0 351 X_T_SIZE = 0 352 X_T_SIZE_ = 0 353 X_T_WCHAR = 0 354 X_T_WCHAR_ = 0 355 X_UNISTD_H = 1 356 X_VA_LIST = 0 357 X_VA_LIST_ = 0 358 X_VA_LIST_DEFINED = 0 359 X_VA_LIST_T_H = 0 360 X_WCHAR_T = 0 361 X_WCHAR_T_ = 0 362 X_WCHAR_T_DECLARED = 0 363 X_WCHAR_T_DEFINED = 0 364 X_WCHAR_T_DEFINED_ = 0 365 X_WCHAR_T_H = 0 366 X_XBS5_ILP32_OFF32 = -1 367 X_XBS5_ILP32_OFFBIG = -1 368 X_XBS5_LP64_OFF64 = 1 369 X_XBS5_LPBIG_OFFBIG = -1 370 X_XOPEN_ENH_I18N = 1 371 X_XOPEN_LEGACY = 1 372 X_XOPEN_REALTIME = 1 373 X_XOPEN_REALTIME_THREADS = 1 374 X_XOPEN_SHM = 1 375 X_XOPEN_UNIX = 1 376 X_XOPEN_VERSION = 700 377 X_XOPEN_XCU_VERSION = 4 378 X_XOPEN_XPG2 = 1 379 X_XOPEN_XPG3 = 1 380 X_XOPEN_XPG4 = 1 381 Linux = 1 382 Unix = 1 383 Z_const = 0 384 BYFOUR = 0 385 GF2_DIM = 32 386 TBLS = 8 387 BL_CODES = 19 388 BUSY_STATE = 113 389 Buf_size = 16 390 COMMENT_STATE = 91 391 DEFLATE_H = 0 392 D_CODES = 30 393 EXTRA_STATE = 69 394 FINISH_STATE = 666 395 GZIP = 0 396 GZIP_STATE = 57 397 HCRC_STATE = 103 398 HEAP_SIZE = 573 399 INIT_STATE = 42 400 LENGTH_CODES = 29 401 LITERALS = 256 402 L_CODES = 286 403 MAX_BITS = 15 404 MAX_STORED = 65535 405 MIN_LOOKAHEAD = 262 406 NAME_STATE = 73 407 NIL = 0 408 TOO_FAR = 4096 409 WIN_INIT = 258 410 AT_EACCESS = 0x200 411 AT_FDCWD = -100 412 AT_REMOVEDIR = 0x200 413 AT_SYMLINK_FOLLOW = 0x400 414 AT_SYMLINK_NOFOLLOW = 0x100 415 BUFSIZ = 8192 416 COPY1 = 1 417 E2BIG = 7 418 EACCES = 13 419 EADDRINUSE = 98 420 EADDRNOTAVAIL = 99 421 EADV = 68 422 EAFNOSUPPORT = 97 423 EAGAIN = 11 424 EALREADY = 114 425 EBADE = 52 426 EBADF = 9 427 EBADFD = 77 428 EBADMSG = 74 429 EBADR = 53 430 EBADRQC = 56 431 EBADSLT = 57 432 EBFONT = 59 433 EBUSY = 16 434 ECANCELED = 125 435 ECHILD = 10 436 ECHRNG = 44 437 ECOMM = 70 438 ECONNABORTED = 103 439 ECONNREFUSED = 111 440 ECONNRESET = 104 441 EDEADLK = 35 442 EDEADLOCK = 35 443 EDESTADDRREQ = 89 444 EDOM = 33 445 EDOTDOT = 73 446 EDQUOT = 122 447 EEXIST = 17 448 EFAULT = 14 449 EFBIG = 27 450 EHOSTDOWN = 112 451 EHOSTUNREACH = 113 452 EHWPOISON = 133 453 EIDRM = 43 454 EILSEQ = 84 455 EINPROGRESS = 115 456 EINTR = 4 457 EINVAL = 22 458 EIO = 5 459 EISCONN = 106 460 EISDIR = 21 461 EISNAM = 120 462 EKEYEXPIRED = 127 463 EKEYREJECTED = 129 464 EKEYREVOKED = 128 465 EL2HLT = 51 466 EL2NSYNC = 45 467 EL3HLT = 46 468 EL3RST = 47 469 ELIBACC = 79 470 ELIBBAD = 80 471 ELIBEXEC = 83 472 ELIBMAX = 82 473 ELIBSCN = 81 474 ELNRNG = 48 475 ELOOP = 40 476 EMEDIUMTYPE = 124 477 EMFILE = 24 478 EMLINK = 31 479 EMSGSIZE = 90 480 EMULTIHOP = 72 481 ENAMETOOLONG = 36 482 ENAVAIL = 119 483 ENETDOWN = 100 484 ENETRESET = 102 485 ENETUNREACH = 101 486 ENFILE = 23 487 ENOANO = 55 488 ENOBUFS = 105 489 ENOCSI = 50 490 ENODATA = 61 491 ENODEV = 19 492 ENOENT = 2 493 ENOEXEC = 8 494 ENOKEY = 126 495 ENOLCK = 37 496 ENOLINK = 67 497 ENOMEDIUM = 123 498 ENOMEM = 12 499 ENOMSG = 42 500 ENONET = 64 501 ENOPKG = 65 502 ENOPROTOOPT = 92 503 ENOSPC = 28 504 ENOSR = 63 505 ENOSTR = 60 506 ENOSYS = 38 507 ENOTBLK = 15 508 ENOTCONN = 107 509 ENOTDIR = 20 510 ENOTEMPTY = 39 511 ENOTNAM = 118 512 ENOTRECOVERABLE = 131 513 ENOTSOCK = 88 514 ENOTSUP = 95 515 ENOTTY = 25 516 ENOTUNIQ = 76 517 ENXIO = 6 518 EOF = -1 519 EOPNOTSUPP = 95 520 EOVERFLOW = 75 521 EOWNERDEAD = 130 522 EPERM = 1 523 EPFNOSUPPORT = 96 524 EPIPE = 32 525 EPROTO = 71 526 EPROTONOSUPPORT = 93 527 EPROTOTYPE = 91 528 ERANGE = 34 529 EREMCHG = 78 530 EREMOTE = 66 531 EREMOTEIO = 121 532 ERESTART = 85 533 ERFKILL = 132 534 EROFS = 30 535 ESHUTDOWN = 108 536 ESOCKTNOSUPPORT = 94 537 ESPIPE = 29 538 ESRCH = 3 539 ESRMNT = 69 540 ESTALE = 116 541 ESTRPIPE = 86 542 ETIME = 62 543 ETIMEDOUT = 110 544 ETOOMANYREFS = 109 545 ETXTBSY = 26 546 EUCLEAN = 117 547 EUNATCH = 49 548 EUSERS = 87 549 EWOULDBLOCK = 11 550 EXDEV = 18 551 EXFULL = 54 552 FAPPEND = 1024 553 FASYNC = 8192 554 FD_CLOEXEC = 1 555 FFSYNC = 1052672 556 FILENAME_MAX = 4096 557 FNDELAY = 2048 558 FNONBLOCK = 2048 559 FOPEN_MAX = 16 560 F_DUPFD = 0 561 F_DUPFD_CLOEXEC = 1030 562 F_EXLCK = 4 563 F_GETFD = 1 564 F_GETFL = 3 565 F_GETLK = 5 566 F_GETLK64 = 5 567 F_GETOWN = 9 568 F_RDLCK = 0 569 F_SETFD = 2 570 F_SETFL = 4 571 F_SETLK = 6 572 F_SETLK64 = 6 573 F_SETLKW = 7 574 F_SETLKW64 = 7 575 F_SETOWN = 8 576 F_SHLCK = 8 577 F_UNLCK = 2 578 F_WRLCK = 1 579 GZBUFSIZE = 8192 580 GZ_APPEND = 1 581 GZ_NONE = 0 582 GZ_READ = 7247 583 GZ_WRITE = 31153 584 HAVE_VSNPRINTF = 0 585 LOCK_EX = 2 586 LOCK_NB = 4 587 LOCK_SH = 1 588 LOCK_UN = 8 589 LOOK = 0 590 L_ctermid = 9 591 L_tmpnam = 20 592 O_ACCMODE = 0003 593 O_APPEND = 02000 594 O_ASYNC = 020000 595 O_CLOEXEC = 524288 596 O_CREAT = 0100 597 O_DIRECTORY = 65536 598 O_DSYNC = 4096 599 O_EXCL = 0200 600 O_FSYNC = 1052672 601 O_LARGEFILE = 0 602 O_NDELAY = 2048 603 O_NOCTTY = 0400 604 O_NOFOLLOW = 131072 605 O_NONBLOCK = 04000 606 O_RDONLY = 00 607 O_RDWR = 02 608 O_RSYNC = 1052672 609 O_SYNC = 04010000 610 O_TRUNC = 01000 611 O_WRONLY = 01 612 POSIX_FADV_DONTNEED = 4 613 POSIX_FADV_NOREUSE = 5 614 POSIX_FADV_NORMAL = 0 615 POSIX_FADV_RANDOM = 1 616 POSIX_FADV_SEQUENTIAL = 2 617 POSIX_FADV_WILLNEED = 3 618 P_tmpdir = "/tmp" 619 S_IFBLK = 24576 620 S_IFCHR = 8192 621 S_IFDIR = 16384 622 S_IFIFO = 4096 623 S_IFLNK = 40960 624 S_IFMT = 61440 625 S_IFREG = 32768 626 S_IFSOCK = 49152 627 S_IRGRP = 32 628 S_IROTH = 4 629 S_IRUSR = 256 630 S_IRWXG = 56 631 S_IRWXO = 7 632 S_IRWXU = 448 633 S_ISGID = 1024 634 S_ISUID = 2048 635 S_ISVTX = 512 636 S_IWGRP = 16 637 S_IWOTH = 2 638 S_IWUSR = 128 639 S_IXGRP = 8 640 S_IXOTH = 1 641 S_IXUSR = 64 642 TMP_MAX = 238328 643 UTIME_NOW = 1073741823 644 UTIME_OMIT = 1073741822 645 X_ASM_GENERIC_ERRNO_BASE_H = 0 646 X_ASM_GENERIC_ERRNO_H = 0 647 X_BITS_ERRNO_H = 1 648 X_BITS_STAT_H = 1 649 X_BITS_STDIO_LIM_H = 1 650 X_BITS_STRUCT_STAT_H = 1 651 X_ERRNO_H = 1 652 X_FCNTL_H = 1 653 X_IOFBF = 0 654 X_IOLBF = 1 655 X_IONBF = 2 656 X_IO_EOF_SEEN = 0x0010 657 X_IO_ERR_SEEN = 0x0020 658 X_IO_USER_LOCK = 0x8000 659 X_LARGEFILE_SOURCE = 1 660 X_STATBUF_ST_BLKSIZE = 0 661 X_STATBUF_ST_NSEC = 0 662 X_STATBUF_ST_RDEV = 0 663 X_STDIO_H = 1 664 ENOUGH = 1444 665 ENOUGH_DISTS = 592 666 ENOUGH_LENS = 852 667 GUNZIP = 0 668 MAXBITS = 15 669 DIST_CODE_LEN = 512 670 END_BLOCK = 256 671 MAX_BL_BITS = 7 672 REPZ_11_138 = 18 673 REPZ_3_10 = 17 674 REP_3_6 = 16 675 SMALLEST = 1 676 ) 677 678 // Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf'; 679 // the `_SC_*' symbols for the NAME argument to `sysconf'; 680 // and the `_CS_*' symbols for the NAME argument to `confstr'. 681 // `sysconf', `pathconf', and `confstr' NAME values. Generic version. 682 // Copyright (C) 1993-2021 Free Software Foundation, Inc. 683 // This file is part of the GNU C Library. 684 // 685 // The GNU C Library is free software; you can redistribute it and/or 686 // modify it under the terms of the GNU Lesser General Public 687 // License as published by the Free Software Foundation; either 688 // version 2.1 of the License, or (at your option) any later version. 689 // 690 // The GNU C Library is distributed in the hope that it will be useful, 691 // but WITHOUT ANY WARRANTY; without even the implied warranty of 692 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 693 // Lesser General Public License for more details. 694 // 695 // You should have received a copy of the GNU Lesser General Public 696 // License along with the GNU C Library; if not, see 697 // <https://www.gnu.org/licenses/>. 698 699 // Values for the NAME argument to `pathconf' and `fpathconf'. 700 const ( /* confname.h:24:1: */ 701 X_PC_LINK_MAX = 0 702 X_PC_MAX_CANON = 1 703 X_PC_MAX_INPUT = 2 704 X_PC_NAME_MAX = 3 705 X_PC_PATH_MAX = 4 706 X_PC_PIPE_BUF = 5 707 X_PC_CHOWN_RESTRICTED = 6 708 X_PC_NO_TRUNC = 7 709 X_PC_VDISABLE = 8 710 X_PC_SYNC_IO = 9 711 X_PC_ASYNC_IO = 10 712 X_PC_PRIO_IO = 11 713 X_PC_SOCK_MAXBUF = 12 714 X_PC_FILESIZEBITS = 13 715 X_PC_REC_INCR_XFER_SIZE = 14 716 X_PC_REC_MAX_XFER_SIZE = 15 717 X_PC_REC_MIN_XFER_SIZE = 16 718 X_PC_REC_XFER_ALIGN = 17 719 X_PC_ALLOC_SIZE_MIN = 18 720 X_PC_SYMLINK_MAX = 19 721 X_PC_2_SYMLINKS = 20 722 ) 723 724 // Values for the NAME argument to `confstr'. 725 const ( /* confname.h:539:1: */ 726 X_CS_PATH = 0 // The default search path. 727 728 X_CS_V6_WIDTH_RESTRICTED_ENVS = 1 729 730 X_CS_GNU_LIBC_VERSION = 2 731 X_CS_GNU_LIBPTHREAD_VERSION = 3 732 733 X_CS_V5_WIDTH_RESTRICTED_ENVS = 4 734 735 X_CS_V7_WIDTH_RESTRICTED_ENVS = 5 736 737 X_CS_LFS_CFLAGS = 1000 738 X_CS_LFS_LDFLAGS = 1001 739 X_CS_LFS_LIBS = 1002 740 X_CS_LFS_LINTFLAGS = 1003 741 X_CS_LFS64_CFLAGS = 1004 742 X_CS_LFS64_LDFLAGS = 1005 743 X_CS_LFS64_LIBS = 1006 744 X_CS_LFS64_LINTFLAGS = 1007 745 746 X_CS_XBS5_ILP32_OFF32_CFLAGS = 1100 747 X_CS_XBS5_ILP32_OFF32_LDFLAGS = 1101 748 X_CS_XBS5_ILP32_OFF32_LIBS = 1102 749 X_CS_XBS5_ILP32_OFF32_LINTFLAGS = 1103 750 X_CS_XBS5_ILP32_OFFBIG_CFLAGS = 1104 751 X_CS_XBS5_ILP32_OFFBIG_LDFLAGS = 1105 752 X_CS_XBS5_ILP32_OFFBIG_LIBS = 1106 753 X_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107 754 X_CS_XBS5_LP64_OFF64_CFLAGS = 1108 755 X_CS_XBS5_LP64_OFF64_LDFLAGS = 1109 756 X_CS_XBS5_LP64_OFF64_LIBS = 1110 757 X_CS_XBS5_LP64_OFF64_LINTFLAGS = 1111 758 X_CS_XBS5_LPBIG_OFFBIG_CFLAGS = 1112 759 X_CS_XBS5_LPBIG_OFFBIG_LDFLAGS = 1113 760 X_CS_XBS5_LPBIG_OFFBIG_LIBS = 1114 761 X_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115 762 763 X_CS_POSIX_V6_ILP32_OFF32_CFLAGS = 1116 764 X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS = 1117 765 X_CS_POSIX_V6_ILP32_OFF32_LIBS = 1118 766 X_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS = 1119 767 X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS = 1120 768 X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS = 1121 769 X_CS_POSIX_V6_ILP32_OFFBIG_LIBS = 1122 770 X_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123 771 X_CS_POSIX_V6_LP64_OFF64_CFLAGS = 1124 772 X_CS_POSIX_V6_LP64_OFF64_LDFLAGS = 1125 773 X_CS_POSIX_V6_LP64_OFF64_LIBS = 1126 774 X_CS_POSIX_V6_LP64_OFF64_LINTFLAGS = 1127 775 X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS = 1128 776 X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS = 1129 777 X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS = 1130 778 X_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131 779 780 X_CS_POSIX_V7_ILP32_OFF32_CFLAGS = 1132 781 X_CS_POSIX_V7_ILP32_OFF32_LDFLAGS = 1133 782 X_CS_POSIX_V7_ILP32_OFF32_LIBS = 1134 783 X_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS = 1135 784 X_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS = 1136 785 X_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS = 1137 786 X_CS_POSIX_V7_ILP32_OFFBIG_LIBS = 1138 787 X_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139 788 X_CS_POSIX_V7_LP64_OFF64_CFLAGS = 1140 789 X_CS_POSIX_V7_LP64_OFF64_LDFLAGS = 1141 790 X_CS_POSIX_V7_LP64_OFF64_LIBS = 1142 791 X_CS_POSIX_V7_LP64_OFF64_LINTFLAGS = 1143 792 X_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS = 1144 793 X_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS = 1145 794 X_CS_POSIX_V7_LPBIG_OFFBIG_LIBS = 1146 795 X_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147 796 797 X_CS_V6_ENV = 1148 798 X_CS_V7_ENV = 1149 799 ) 800 801 // Values for the argument to `sysconf'. 802 const ( /* confname.h:71:1: */ 803 X_SC_ARG_MAX = 0 804 X_SC_CHILD_MAX = 1 805 X_SC_CLK_TCK = 2 806 X_SC_NGROUPS_MAX = 3 807 X_SC_OPEN_MAX = 4 808 X_SC_STREAM_MAX = 5 809 X_SC_TZNAME_MAX = 6 810 X_SC_JOB_CONTROL = 7 811 X_SC_SAVED_IDS = 8 812 X_SC_REALTIME_SIGNALS = 9 813 X_SC_PRIORITY_SCHEDULING = 10 814 X_SC_TIMERS = 11 815 X_SC_ASYNCHRONOUS_IO = 12 816 X_SC_PRIORITIZED_IO = 13 817 X_SC_SYNCHRONIZED_IO = 14 818 X_SC_FSYNC = 15 819 X_SC_MAPPED_FILES = 16 820 X_SC_MEMLOCK = 17 821 X_SC_MEMLOCK_RANGE = 18 822 X_SC_MEMORY_PROTECTION = 19 823 X_SC_MESSAGE_PASSING = 20 824 X_SC_SEMAPHORES = 21 825 X_SC_SHARED_MEMORY_OBJECTS = 22 826 X_SC_AIO_LISTIO_MAX = 23 827 X_SC_AIO_MAX = 24 828 X_SC_AIO_PRIO_DELTA_MAX = 25 829 X_SC_DELAYTIMER_MAX = 26 830 X_SC_MQ_OPEN_MAX = 27 831 X_SC_MQ_PRIO_MAX = 28 832 X_SC_VERSION = 29 833 X_SC_PAGESIZE = 30 834 X_SC_RTSIG_MAX = 31 835 X_SC_SEM_NSEMS_MAX = 32 836 X_SC_SEM_VALUE_MAX = 33 837 X_SC_SIGQUEUE_MAX = 34 838 X_SC_TIMER_MAX = 35 839 840 // Values for the argument to `sysconf' 841 // corresponding to _POSIX2_* symbols. 842 X_SC_BC_BASE_MAX = 36 843 X_SC_BC_DIM_MAX = 37 844 X_SC_BC_SCALE_MAX = 38 845 X_SC_BC_STRING_MAX = 39 846 X_SC_COLL_WEIGHTS_MAX = 40 847 X_SC_EQUIV_CLASS_MAX = 41 848 X_SC_EXPR_NEST_MAX = 42 849 X_SC_LINE_MAX = 43 850 X_SC_RE_DUP_MAX = 44 851 X_SC_CHARCLASS_NAME_MAX = 45 852 853 X_SC_2_VERSION = 46 854 X_SC_2_C_BIND = 47 855 X_SC_2_C_DEV = 48 856 X_SC_2_FORT_DEV = 49 857 X_SC_2_FORT_RUN = 50 858 X_SC_2_SW_DEV = 51 859 X_SC_2_LOCALEDEF = 52 860 861 X_SC_PII = 53 862 X_SC_PII_XTI = 54 863 X_SC_PII_SOCKET = 55 864 X_SC_PII_INTERNET = 56 865 X_SC_PII_OSI = 57 866 X_SC_POLL = 58 867 X_SC_SELECT = 59 868 X_SC_UIO_MAXIOV = 60 869 X_SC_IOV_MAX = 60 870 X_SC_PII_INTERNET_STREAM = 61 871 X_SC_PII_INTERNET_DGRAM = 62 872 X_SC_PII_OSI_COTS = 63 873 X_SC_PII_OSI_CLTS = 64 874 X_SC_PII_OSI_M = 65 875 X_SC_T_IOV_MAX = 66 876 877 // Values according to POSIX 1003.1c (POSIX threads). 878 X_SC_THREADS = 67 879 X_SC_THREAD_SAFE_FUNCTIONS = 68 880 X_SC_GETGR_R_SIZE_MAX = 69 881 X_SC_GETPW_R_SIZE_MAX = 70 882 X_SC_LOGIN_NAME_MAX = 71 883 X_SC_TTY_NAME_MAX = 72 884 X_SC_THREAD_DESTRUCTOR_ITERATIONS = 73 885 X_SC_THREAD_KEYS_MAX = 74 886 X_SC_THREAD_STACK_MIN = 75 887 X_SC_THREAD_THREADS_MAX = 76 888 X_SC_THREAD_ATTR_STACKADDR = 77 889 X_SC_THREAD_ATTR_STACKSIZE = 78 890 X_SC_THREAD_PRIORITY_SCHEDULING = 79 891 X_SC_THREAD_PRIO_INHERIT = 80 892 X_SC_THREAD_PRIO_PROTECT = 81 893 X_SC_THREAD_PROCESS_SHARED = 82 894 895 X_SC_NPROCESSORS_CONF = 83 896 X_SC_NPROCESSORS_ONLN = 84 897 X_SC_PHYS_PAGES = 85 898 X_SC_AVPHYS_PAGES = 86 899 X_SC_ATEXIT_MAX = 87 900 X_SC_PASS_MAX = 88 901 902 X_SC_XOPEN_VERSION = 89 903 X_SC_XOPEN_XCU_VERSION = 90 904 X_SC_XOPEN_UNIX = 91 905 X_SC_XOPEN_CRYPT = 92 906 X_SC_XOPEN_ENH_I18N = 93 907 X_SC_XOPEN_SHM = 94 908 909 X_SC_2_CHAR_TERM = 95 910 X_SC_2_C_VERSION = 96 911 X_SC_2_UPE = 97 912 913 X_SC_XOPEN_XPG2 = 98 914 X_SC_XOPEN_XPG3 = 99 915 X_SC_XOPEN_XPG4 = 100 916 917 X_SC_CHAR_BIT = 101 918 X_SC_CHAR_MAX = 102 919 X_SC_CHAR_MIN = 103 920 X_SC_INT_MAX = 104 921 X_SC_INT_MIN = 105 922 X_SC_LONG_BIT = 106 923 X_SC_WORD_BIT = 107 924 X_SC_MB_LEN_MAX = 108 925 X_SC_NZERO = 109 926 X_SC_SSIZE_MAX = 110 927 X_SC_SCHAR_MAX = 111 928 X_SC_SCHAR_MIN = 112 929 X_SC_SHRT_MAX = 113 930 X_SC_SHRT_MIN = 114 931 X_SC_UCHAR_MAX = 115 932 X_SC_UINT_MAX = 116 933 X_SC_ULONG_MAX = 117 934 X_SC_USHRT_MAX = 118 935 936 X_SC_NL_ARGMAX = 119 937 X_SC_NL_LANGMAX = 120 938 X_SC_NL_MSGMAX = 121 939 X_SC_NL_NMAX = 122 940 X_SC_NL_SETMAX = 123 941 X_SC_NL_TEXTMAX = 124 942 943 X_SC_XBS5_ILP32_OFF32 = 125 944 X_SC_XBS5_ILP32_OFFBIG = 126 945 X_SC_XBS5_LP64_OFF64 = 127 946 X_SC_XBS5_LPBIG_OFFBIG = 128 947 948 X_SC_XOPEN_LEGACY = 129 949 X_SC_XOPEN_REALTIME = 130 950 X_SC_XOPEN_REALTIME_THREADS = 131 951 952 X_SC_ADVISORY_INFO = 132 953 X_SC_BARRIERS = 133 954 X_SC_BASE = 134 955 X_SC_C_LANG_SUPPORT = 135 956 X_SC_C_LANG_SUPPORT_R = 136 957 X_SC_CLOCK_SELECTION = 137 958 X_SC_CPUTIME = 138 959 X_SC_THREAD_CPUTIME = 139 960 X_SC_DEVICE_IO = 140 961 X_SC_DEVICE_SPECIFIC = 141 962 X_SC_DEVICE_SPECIFIC_R = 142 963 X_SC_FD_MGMT = 143 964 X_SC_FIFO = 144 965 X_SC_PIPE = 145 966 X_SC_FILE_ATTRIBUTES = 146 967 X_SC_FILE_LOCKING = 147 968 X_SC_FILE_SYSTEM = 148 969 X_SC_MONOTONIC_CLOCK = 149 970 X_SC_MULTI_PROCESS = 150 971 X_SC_SINGLE_PROCESS = 151 972 X_SC_NETWORKING = 152 973 X_SC_READER_WRITER_LOCKS = 153 974 X_SC_SPIN_LOCKS = 154 975 X_SC_REGEXP = 155 976 X_SC_REGEX_VERSION = 156 977 X_SC_SHELL = 157 978 X_SC_SIGNALS = 158 979 X_SC_SPAWN = 159 980 X_SC_SPORADIC_SERVER = 160 981 X_SC_THREAD_SPORADIC_SERVER = 161 982 X_SC_SYSTEM_DATABASE = 162 983 X_SC_SYSTEM_DATABASE_R = 163 984 X_SC_TIMEOUTS = 164 985 X_SC_TYPED_MEMORY_OBJECTS = 165 986 X_SC_USER_GROUPS = 166 987 X_SC_USER_GROUPS_R = 167 988 X_SC_2_PBS = 168 989 X_SC_2_PBS_ACCOUNTING = 169 990 X_SC_2_PBS_LOCATE = 170 991 X_SC_2_PBS_MESSAGE = 171 992 X_SC_2_PBS_TRACK = 172 993 X_SC_SYMLOOP_MAX = 173 994 X_SC_STREAMS = 174 995 X_SC_2_PBS_CHECKPOINT = 175 996 997 X_SC_V6_ILP32_OFF32 = 176 998 X_SC_V6_ILP32_OFFBIG = 177 999 X_SC_V6_LP64_OFF64 = 178 1000 X_SC_V6_LPBIG_OFFBIG = 179 1001 1002 X_SC_HOST_NAME_MAX = 180 1003 X_SC_TRACE = 181 1004 X_SC_TRACE_EVENT_FILTER = 182 1005 X_SC_TRACE_INHERIT = 183 1006 X_SC_TRACE_LOG = 184 1007 1008 X_SC_LEVEL1_ICACHE_SIZE = 185 1009 X_SC_LEVEL1_ICACHE_ASSOC = 186 1010 X_SC_LEVEL1_ICACHE_LINESIZE = 187 1011 X_SC_LEVEL1_DCACHE_SIZE = 188 1012 X_SC_LEVEL1_DCACHE_ASSOC = 189 1013 X_SC_LEVEL1_DCACHE_LINESIZE = 190 1014 X_SC_LEVEL2_CACHE_SIZE = 191 1015 X_SC_LEVEL2_CACHE_ASSOC = 192 1016 X_SC_LEVEL2_CACHE_LINESIZE = 193 1017 X_SC_LEVEL3_CACHE_SIZE = 194 1018 X_SC_LEVEL3_CACHE_ASSOC = 195 1019 X_SC_LEVEL3_CACHE_LINESIZE = 196 1020 X_SC_LEVEL4_CACHE_SIZE = 197 1021 X_SC_LEVEL4_CACHE_ASSOC = 198 1022 X_SC_LEVEL4_CACHE_LINESIZE = 199 1023 // Leave room here, maybe we need a few more cache levels some day. 1024 1025 X_SC_IPV6 = 235 1026 X_SC_RAW_SOCKETS = 236 1027 1028 X_SC_V7_ILP32_OFF32 = 237 1029 X_SC_V7_ILP32_OFFBIG = 238 1030 X_SC_V7_LP64_OFF64 = 239 1031 X_SC_V7_LPBIG_OFFBIG = 240 1032 1033 X_SC_SS_REPL_MAX = 241 1034 1035 X_SC_TRACE_EVENT_NAME_MAX = 242 1036 X_SC_TRACE_NAME_MAX = 243 1037 X_SC_TRACE_SYS_MAX = 244 1038 X_SC_TRACE_USER_EVENT_MAX = 245 1039 1040 X_SC_XOPEN_STREAMS = 246 1041 1042 X_SC_THREAD_ROBUST_PRIO_INHERIT = 247 1043 X_SC_THREAD_ROBUST_PRIO_PROTECT = 248 1044 1045 X_SC_MINSIGSTKSZ = 249 1046 1047 X_SC_SIGSTKSZ = 250 1048 ) 1049 1050 // 1051 // If you use the zlib library in a product, an acknowledgment is welcome 1052 // in the documentation of your product. If for some reason you cannot 1053 // include such an acknowledgment, I would appreciate that you keep this 1054 // copyright string in the executable of your product. 1055 // 1056 1057 // =========================================================================== 1058 // Function prototypes. 1059 const ( /* deflate.c:66:1: */ 1060 Need_more = 0 // block not completed, need more input or more output 1061 Block_done = 1 // block flush performed 1062 Finish_started = 2 // finish started, need only more output at next deflate 1063 Finish_done = 3 1064 ) 1065 1066 // inflate.h -- internal inflate state definition 1067 // Copyright (C) 1995-2016 Mark Adler 1068 // For conditions of distribution and use, see copyright notice in zlib.h 1069 1070 // WARNING: this file should *not* be used by applications. It is 1071 // part of the implementation of the compression library and is 1072 // subject to change. Applications should only use zlib.h. 1073 // 1074 1075 // define NO_GZIP when compiling if you want to disable gzip header and 1076 // trailer decoding by inflate(). NO_GZIP would be used to avoid linking in 1077 // the crc code when it is not needed. For shared libraries, gzip decoding 1078 // should be left enabled. 1079 1080 // Possible inflate modes between inflate() calls 1081 const ( /* inflate.h:20:1: */ 1082 HEAD = 16180 // i: waiting for magic header 1083 FLAGS = 16181 // i: waiting for method and flags (gzip) 1084 TIME = 16182 // i: waiting for modification time (gzip) 1085 OS = 16183 // i: waiting for extra flags and operating system (gzip) 1086 EXLEN = 16184 // i: waiting for extra length (gzip) 1087 EXTRA = 16185 // i: waiting for extra bytes (gzip) 1088 NAME = 16186 // i: waiting for end of file name (gzip) 1089 COMMENT = 16187 // i: waiting for end of comment (gzip) 1090 HCRC = 16188 // i: waiting for header crc (gzip) 1091 DICTID = 16189 // i: waiting for dictionary check value 1092 DICT = 16190 // waiting for inflateSetDictionary() call 1093 TYPE = 16191 // i: waiting for type bits, including last-flag bit 1094 TYPEDO = 16192 // i: same, but skip check to exit inflate on new block 1095 STORED = 16193 // i: waiting for stored size (length and complement) 1096 COPY_ = 16194 // i/o: same as COPY below, but only first time in 1097 COPY = 16195 // i/o: waiting for input or output to copy stored block 1098 TABLE = 16196 // i: waiting for dynamic block table lengths 1099 LENLENS = 16197 // i: waiting for code length code lengths 1100 CODELENS = 16198 // i: waiting for length/lit and distance code lengths 1101 LEN_ = 16199 // i: same as LEN below, but only first time in 1102 LEN = 16200 // i: waiting for length/lit/eob code 1103 LENEXT = 16201 // i: waiting for length extra bits 1104 DIST = 16202 // i: waiting for distance code 1105 DISTEXT = 16203 // i: waiting for distance extra bits 1106 MATCH = 16204 // o: waiting for output space to copy string 1107 LIT = 16205 // o: waiting for output space to write literal 1108 CHECK = 16206 // i: waiting for 32-bit check value 1109 LENGTH = 16207 // i: waiting for 32-bit length (gzip) 1110 DONE = 16208 // finished check, done -- remain here until reset 1111 BAD = 16209 // got a data error -- remain here until reset 1112 MEM = 16210 // got an inflate() memory error -- remain here until reset 1113 SYNC = 16211 1114 ) 1115 1116 // op values as set by inflate_table(): 1117 // 00000000 - literal 1118 // 0000tttt - table link, tttt != 0 is the number of table index bits 1119 // 0001eeee - length or distance, eeee is the number of extra bits 1120 // 01100000 - end of block 1121 // 01000000 - invalid code 1122 // 1123 1124 // Maximum size of the dynamic table. The maximum number of code structures is 1125 // 1444, which is the sum of 852 for literal/length codes and 592 for distance 1126 // codes. These values were found by exhaustive searches using the program 1127 // examples/enough.c found in the zlib distribtution. The arguments to that 1128 // program are the number of symbols, the initial root table size, and the 1129 // maximum bit length of a code. "enough 286 9 15" for literal/length codes 1130 // returns returns 852, and "enough 30 6 15" for distance codes returns 592. 1131 // The initial root table size (9 or 6) is found in the fifth argument of the 1132 // inflate_table() calls in inflate.c and infback.c. If the root table size is 1133 // changed, then these maximum sizes would be need to be recalculated and 1134 // updated. 1135 1136 // Type of code to build for inflate_table() 1137 const ( /* inftrees.h:54:1: */ 1138 CODES = 0 1139 LENS = 1 1140 DISTS = 2 1141 ) 1142 1143 type Ptrdiff_t = int64 /* <builtin>:3:26 */ 1144 1145 type Size_t = uint64 /* <builtin>:9:23 */ 1146 1147 type Wchar_t = int32 /* <builtin>:15:24 */ 1148 1149 type X__int128_t = struct { 1150 Flo int64 1151 Fhi int64 1152 } /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128 1153 type X__uint128_t = struct { 1154 Flo uint64 1155 Fhi uint64 1156 } /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128 1157 1158 type X__builtin_va_list = uintptr /* <builtin>:46:14 */ 1159 type X__float128 = float64 /* <builtin>:47:21 */ 1160 1161 // A null pointer constant. 1162 1163 // Offset of member MEMBER in a struct of type TYPE. 1164 1165 // Type whose alignment is supported in every context and is at least 1166 // as great as that of any standard type not using alignment 1167 // specifiers. 1168 type Max_align_t = struct { 1169 F__max_align_ll int64 1170 F__max_align_ld float64 1171 } /* stddef.h:426:3 */ 1172 1173 type Z_size_t = Size_t /* zconf.h:248:21 */ 1174 1175 // Maximum value for memLevel in deflateInit2 1176 1177 // Maximum value for windowBits in deflateInit2 and inflateInit2. 1178 // WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files 1179 // created by gzip. (Files created by minigzip can still be extracted by 1180 // gzip.) 1181 1182 // The memory requirements for deflate are (in bytes): 1183 // (1 << (windowBits+2)) + (1 << (memLevel+9)) 1184 // that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) 1185 // plus a few kilobytes for small objects. For example, if you want to reduce 1186 // the default memory requirements from 256K to 128K, compile with 1187 // make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" 1188 // Of course this will generally degrade compression (there's no free lunch). 1189 // 1190 // The memory requirements for inflate are (in bytes) 1 << windowBits 1191 // that is, 32K for windowBits=15 (default value) plus about 7 kilobytes 1192 // for small objects. 1193 1194 // Type declarations 1195 1196 // The following definitions for FAR are needed only for MSDOS mixed 1197 // model programming (small or medium model with some far allocations). 1198 // This was tested only with MSC; for other MSDOS compilers you may have 1199 // to define NO_MEMCPY in zutil.h. If you don't need the mixed model, 1200 // just define FAR to be empty. 1201 1202 type Byte = uint8 /* zconf.h:391:24 */ // 8 bits 1203 type UInt = uint32 /* zconf.h:393:24 */ // 16 bits or more 1204 type ULong = uint64 /* zconf.h:394:24 */ // 32 bits or more 1205 1206 type Bytef = Byte /* zconf.h:400:22 */ 1207 type Charf = uint8 /* zconf.h:402:19 */ 1208 type Intf = int32 /* zconf.h:403:19 */ 1209 type UIntf = UInt /* zconf.h:404:19 */ 1210 type ULongf = ULong /* zconf.h:405:19 */ 1211 1212 type Voidpc = uintptr /* zconf.h:408:23 */ 1213 type Voidpf = uintptr /* zconf.h:409:23 */ 1214 type Voidp = uintptr /* zconf.h:410:23 */ 1215 1216 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 1217 // 1218 // This file is part of GCC. 1219 // 1220 // GCC is free software; you can redistribute it and/or modify it under 1221 // the terms of the GNU General Public License as published by the Free 1222 // Software Foundation; either version 3, or (at your option) any later 1223 // version. 1224 // 1225 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY 1226 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 1227 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 1228 // for more details. 1229 // 1230 // Under Section 7 of GPL version 3, you are granted additional 1231 // permissions described in the GCC Runtime Library Exception, version 1232 // 3.1, as published by the Free Software Foundation. 1233 // 1234 // You should have received a copy of the GNU General Public License and 1235 // a copy of the GCC Runtime Library Exception along with this program; 1236 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 1237 // <http://www.gnu.org/licenses/>. 1238 1239 // This administrivia gets added to the beginning of limits.h 1240 // if the system has its own version of limits.h. 1241 1242 // We use _GCC_LIMITS_H_ because we want this not to match 1243 // any macros that the system's limits.h uses for its own purposes. 1244 1245 // Use "..." so that we find syslimits.h only in this same directory. 1246 // syslimits.h stands for the system's own limits.h file. 1247 // If we can use it ok unmodified, then we install this text. 1248 // If fixincludes fixes it, then the fixed version is installed 1249 // instead of this text. 1250 1251 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 1252 // This file is part of the GNU C Library. 1253 // 1254 // The GNU C Library is free software; you can redistribute it and/or 1255 // modify it under the terms of the GNU Lesser General Public 1256 // License as published by the Free Software Foundation; either 1257 // version 2.1 of the License, or (at your option) any later version. 1258 // 1259 // The GNU C Library is distributed in the hope that it will be useful, 1260 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1261 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1262 // Lesser General Public License for more details. 1263 // 1264 // You should have received a copy of the GNU Lesser General Public 1265 // License along with the GNU C Library; if not, see 1266 // <https://www.gnu.org/licenses/>. 1267 1268 // ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types <limits.h> 1269 1270 // Handle feature test macros at the start of a header. 1271 // Copyright (C) 2016-2021 Free Software Foundation, Inc. 1272 // This file is part of the GNU C Library. 1273 // 1274 // The GNU C Library is free software; you can redistribute it and/or 1275 // modify it under the terms of the GNU Lesser General Public 1276 // License as published by the Free Software Foundation; either 1277 // version 2.1 of the License, or (at your option) any later version. 1278 // 1279 // The GNU C Library is distributed in the hope that it will be useful, 1280 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1281 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1282 // Lesser General Public License for more details. 1283 // 1284 // You should have received a copy of the GNU Lesser General Public 1285 // License along with the GNU C Library; if not, see 1286 // <https://www.gnu.org/licenses/>. 1287 1288 // This header is internal to glibc and should not be included outside 1289 // of glibc headers. Headers including it must define 1290 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 1291 // cannot have multiple include guards because ISO C feature test 1292 // macros depend on the definition of the macro when an affected 1293 // header is included, not when the first system header is 1294 // included. 1295 1296 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 1297 // This file is part of the GNU C Library. 1298 // 1299 // The GNU C Library is free software; you can redistribute it and/or 1300 // modify it under the terms of the GNU Lesser General Public 1301 // License as published by the Free Software Foundation; either 1302 // version 2.1 of the License, or (at your option) any later version. 1303 // 1304 // The GNU C Library is distributed in the hope that it will be useful, 1305 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1306 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1307 // Lesser General Public License for more details. 1308 // 1309 // You should have received a copy of the GNU Lesser General Public 1310 // License along with the GNU C Library; if not, see 1311 // <https://www.gnu.org/licenses/>. 1312 1313 // These are defined by the user (or the compiler) 1314 // to specify the desired environment: 1315 // 1316 // __STRICT_ANSI__ ISO Standard C. 1317 // _ISOC99_SOURCE Extensions to ISO C89 from ISO C99. 1318 // _ISOC11_SOURCE Extensions to ISO C99 from ISO C11. 1319 // _ISOC2X_SOURCE Extensions to ISO C99 from ISO C2X. 1320 // __STDC_WANT_LIB_EXT2__ 1321 // Extensions to ISO C99 from TR 27431-2:2010. 1322 // __STDC_WANT_IEC_60559_BFP_EXT__ 1323 // Extensions to ISO C11 from TS 18661-1:2014. 1324 // __STDC_WANT_IEC_60559_FUNCS_EXT__ 1325 // Extensions to ISO C11 from TS 18661-4:2015. 1326 // __STDC_WANT_IEC_60559_TYPES_EXT__ 1327 // Extensions to ISO C11 from TS 18661-3:2015. 1328 // __STDC_WANT_IEC_60559_EXT__ 1329 // ISO C2X interfaces defined only in Annex F. 1330 // 1331 // _POSIX_SOURCE IEEE Std 1003.1. 1332 // _POSIX_C_SOURCE If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2; 1333 // if >=199309L, add IEEE Std 1003.1b-1993; 1334 // if >=199506L, add IEEE Std 1003.1c-1995; 1335 // if >=200112L, all of IEEE 1003.1-2004 1336 // if >=200809L, all of IEEE 1003.1-2008 1337 // _XOPEN_SOURCE Includes POSIX and XPG things. Set to 500 if 1338 // Single Unix conformance is wanted, to 600 for the 1339 // sixth revision, to 700 for the seventh revision. 1340 // _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions. 1341 // _LARGEFILE_SOURCE Some more functions for correct standard I/O. 1342 // _LARGEFILE64_SOURCE Additional functionality from LFS for large files. 1343 // _FILE_OFFSET_BITS=N Select default filesystem interface. 1344 // _ATFILE_SOURCE Additional *at interfaces. 1345 // _DYNAMIC_STACK_SIZE_SOURCE Select correct (but non compile-time constant) 1346 // MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN. 1347 // _GNU_SOURCE All of the above, plus GNU extensions. 1348 // _DEFAULT_SOURCE The default set of features (taking precedence over 1349 // __STRICT_ANSI__). 1350 // 1351 // _FORTIFY_SOURCE Add security hardening to many library functions. 1352 // Set to 1 or 2; 2 performs stricter checks than 1. 1353 // 1354 // _REENTRANT, _THREAD_SAFE 1355 // Obsolete; equivalent to _POSIX_C_SOURCE=199506L. 1356 // 1357 // The `-ansi' switch to the GNU C compiler, and standards conformance 1358 // options such as `-std=c99', define __STRICT_ANSI__. If none of 1359 // these are defined, or if _DEFAULT_SOURCE is defined, the default is 1360 // to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to 1361 // 200809L, as well as enabling miscellaneous functions from BSD and 1362 // SVID. If more than one of these are defined, they accumulate. For 1363 // example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together 1364 // give you ISO C, 1003.1, and 1003.2, but nothing else. 1365 // 1366 // These are defined by this file and are used by the 1367 // header files to decide what to declare or define: 1368 // 1369 // __GLIBC_USE (F) Define things from feature set F. This is defined 1370 // to 1 or 0; the subsequent macros are either defined 1371 // or undefined, and those tests should be moved to 1372 // __GLIBC_USE. 1373 // __USE_ISOC11 Define ISO C11 things. 1374 // __USE_ISOC99 Define ISO C99 things. 1375 // __USE_ISOC95 Define ISO C90 AMD1 (C95) things. 1376 // __USE_ISOCXX11 Define ISO C++11 things. 1377 // __USE_POSIX Define IEEE Std 1003.1 things. 1378 // __USE_POSIX2 Define IEEE Std 1003.2 things. 1379 // __USE_POSIX199309 Define IEEE Std 1003.1, and .1b things. 1380 // __USE_POSIX199506 Define IEEE Std 1003.1, .1b, .1c and .1i things. 1381 // __USE_XOPEN Define XPG things. 1382 // __USE_XOPEN_EXTENDED Define X/Open Unix things. 1383 // __USE_UNIX98 Define Single Unix V2 things. 1384 // __USE_XOPEN2K Define XPG6 things. 1385 // __USE_XOPEN2KXSI Define XPG6 XSI things. 1386 // __USE_XOPEN2K8 Define XPG7 things. 1387 // __USE_XOPEN2K8XSI Define XPG7 XSI things. 1388 // __USE_LARGEFILE Define correct standard I/O things. 1389 // __USE_LARGEFILE64 Define LFS things with separate names. 1390 // __USE_FILE_OFFSET64 Define 64bit interface as default. 1391 // __USE_MISC Define things from 4.3BSD or System V Unix. 1392 // __USE_ATFILE Define *at interfaces and AT_* constants for them. 1393 // __USE_DYNAMIC_STACK_SIZE Define correct (but non compile-time constant) 1394 // MINSIGSTKSZ, SIGSTKSZ and PTHREAD_STACK_MIN. 1395 // __USE_GNU Define GNU extensions. 1396 // __USE_FORTIFY_LEVEL Additional security measures used, according to level. 1397 // 1398 // The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are 1399 // defined by this file unconditionally. `__GNU_LIBRARY__' is provided 1400 // only for compatibility. All new code should use the other symbols 1401 // to test for features. 1402 // 1403 // All macros listed above as possibly being defined by this file are 1404 // explicitly undefined if they are not explicitly defined. 1405 // Feature-test macros that are not defined by the user or compiler 1406 // but are implied by the other feature-test macros defined (or by the 1407 // lack of any definitions) are defined by the file. 1408 // 1409 // ISO C feature test macros depend on the definition of the macro 1410 // when an affected header is included, not when the first system 1411 // header is included, and so they are handled in 1412 // <bits/libc-header-start.h>, which does not have a multiple include 1413 // guard. Feature test macros that can be handled from the first 1414 // system header included are handled here. 1415 1416 // Undefine everything, so we get a clean slate. 1417 1418 // Suppress kernel-name space pollution unless user expressedly asks 1419 // for it. 1420 1421 // Convenience macro to test the version of gcc. 1422 // Use like this: 1423 // #if __GNUC_PREREQ (2,8) 1424 // ... code requiring gcc 2.8 or later ... 1425 // #endif 1426 // Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was 1427 // added in 2.0. 1428 1429 // Similarly for clang. Features added to GCC after version 4.2 may 1430 // or may not also be available in clang, and clang's definitions of 1431 // __GNUC(_MINOR)__ are fixed at 4 and 2 respectively. Not all such 1432 // features can be queried via __has_extension/__has_feature. 1433 1434 // Whether to use feature set F. 1435 1436 // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for 1437 // _DEFAULT_SOURCE. If _DEFAULT_SOURCE is present we do not 1438 // issue a warning; the expectation is that the source is being 1439 // transitioned to use the new macro. 1440 1441 // If _GNU_SOURCE was defined by the user, turn on all the other features. 1442 1443 // If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined, 1444 // define _DEFAULT_SOURCE. 1445 1446 // This is to enable the ISO C2X extension. 1447 1448 // This is to enable the ISO C11 extension. 1449 1450 // This is to enable the ISO C99 extension. 1451 1452 // This is to enable the ISO C90 Amendment 1:1995 extension. 1453 1454 // If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE 1455 // is defined, use POSIX.1-2008 (or another version depending on 1456 // _XOPEN_SOURCE). 1457 1458 // Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be 1459 // defined in all multithreaded code. GNU libc has not required this 1460 // for many years. We now treat them as compatibility synonyms for 1461 // _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with 1462 // comprehensive support for multithreaded code. Using them never 1463 // lowers the selected level of POSIX conformance, only raises it. 1464 1465 // Features part to handle 64-bit time_t support. 1466 // Copyright (C) 2021 Free Software Foundation, Inc. 1467 // This file is part of the GNU C Library. 1468 // 1469 // The GNU C Library is free software; you can redistribute it and/or 1470 // modify it under the terms of the GNU Lesser General Public 1471 // License as published by the Free Software Foundation; either 1472 // version 2.1 of the License, or (at your option) any later version. 1473 // 1474 // The GNU C Library is distributed in the hope that it will be useful, 1475 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1476 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1477 // Lesser General Public License for more details. 1478 // 1479 // You should have received a copy of the GNU Lesser General Public 1480 // License along with the GNU C Library; if not, see 1481 // <https://www.gnu.org/licenses/>. 1482 1483 // We need to know the word size in order to check the time size. 1484 // Determine the wordsize from the preprocessor defines. RISC-V version. 1485 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 1486 // This file is part of the GNU C Library. 1487 // 1488 // The GNU C Library is free software; you can redistribute it and/or 1489 // modify it under the terms of the GNU Lesser General Public 1490 // License as published by the Free Software Foundation; either 1491 // version 2.1 of the License, or (at your option) any later version. 1492 // 1493 // The GNU C Library is distributed in the hope that it will be useful, 1494 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1495 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1496 // Lesser General Public License for more details. 1497 // 1498 // You should have received a copy of the GNU Lesser General Public 1499 // License along with the GNU C Library. If not, see 1500 // <https://www.gnu.org/licenses/>. 1501 1502 // Bit size of the time_t type at glibc build time, RISC-V case. 1503 // Copyright (C) 2020-2021 Free Software Foundation, Inc. 1504 // This file is part of the GNU C Library. 1505 // 1506 // The GNU C Library is free software; you can redistribute it and/or 1507 // modify it under the terms of the GNU Lesser General Public 1508 // License as published by the Free Software Foundation; either 1509 // version 2.1 of the License, or (at your option) any later version. 1510 // 1511 // The GNU C Library is distributed in the hope that it will be useful, 1512 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1513 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1514 // Lesser General Public License for more details. 1515 // 1516 // You should have received a copy of the GNU Lesser General Public 1517 // License along with the GNU C Library; if not, see 1518 // <https://www.gnu.org/licenses/>. 1519 1520 // Determine the wordsize from the preprocessor defines. RISC-V version. 1521 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 1522 // This file is part of the GNU C Library. 1523 // 1524 // The GNU C Library is free software; you can redistribute it and/or 1525 // modify it under the terms of the GNU Lesser General Public 1526 // License as published by the Free Software Foundation; either 1527 // version 2.1 of the License, or (at your option) any later version. 1528 // 1529 // The GNU C Library is distributed in the hope that it will be useful, 1530 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1531 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1532 // Lesser General Public License for more details. 1533 // 1534 // You should have received a copy of the GNU Lesser General Public 1535 // License along with the GNU C Library. If not, see 1536 // <https://www.gnu.org/licenses/>. 1537 1538 // RV32 and RV64 both use 64-bit time_t 1539 1540 // The function 'gets' existed in C89, but is impossible to use 1541 // safely. It has been removed from ISO C11 and ISO C++14. Note: for 1542 // compatibility with various implementations of <cstdio>, this test 1543 // must consider only the value of __cplusplus when compiling C++. 1544 1545 // GNU formerly extended the scanf functions with modified format 1546 // specifiers %as, %aS, and %a[...] that allocate a buffer for the 1547 // input using malloc. This extension conflicts with ISO C99, which 1548 // defines %a as a standalone format specifier that reads a floating- 1549 // point number; moreover, POSIX.1-2008 provides the same feature 1550 // using the modifier letter 'm' instead (%ms, %mS, %m[...]). 1551 // 1552 // We now follow C99 unless GNU extensions are active and the compiler 1553 // is specifically in C89 or C++98 mode (strict or not). For 1554 // instance, with GCC, -std=gnu11 will have C99-compliant scanf with 1555 // or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the 1556 // old extension. 1557 1558 // Get definitions of __STDC_* predefined macros, if the compiler has 1559 // not preincluded this header automatically. 1560 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 1561 // This file is part of the GNU C Library. 1562 // 1563 // The GNU C Library is free software; you can redistribute it and/or 1564 // modify it under the terms of the GNU Lesser General Public 1565 // License as published by the Free Software Foundation; either 1566 // version 2.1 of the License, or (at your option) any later version. 1567 // 1568 // The GNU C Library is distributed in the hope that it will be useful, 1569 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1570 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1571 // Lesser General Public License for more details. 1572 // 1573 // You should have received a copy of the GNU Lesser General Public 1574 // License along with the GNU C Library; if not, see 1575 // <https://www.gnu.org/licenses/>. 1576 1577 // This macro indicates that the installed library is the GNU C Library. 1578 // For historic reasons the value now is 6 and this will stay from now 1579 // on. The use of this variable is deprecated. Use __GLIBC__ and 1580 // __GLIBC_MINOR__ now (see below) when you want to test for a specific 1581 // GNU C library version and use the values in <gnu/lib-names.h> to get 1582 // the sonames of the shared libraries. 1583 1584 // Major and minor version number of the GNU C library package. Use 1585 // these macros to test for features in specific releases. 1586 1587 // This is here only because every header file already includes this one. 1588 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 1589 // This file is part of the GNU C Library. 1590 // 1591 // The GNU C Library is free software; you can redistribute it and/or 1592 // modify it under the terms of the GNU Lesser General Public 1593 // License as published by the Free Software Foundation; either 1594 // version 2.1 of the License, or (at your option) any later version. 1595 // 1596 // The GNU C Library is distributed in the hope that it will be useful, 1597 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1598 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1599 // Lesser General Public License for more details. 1600 // 1601 // You should have received a copy of the GNU Lesser General Public 1602 // License along with the GNU C Library; if not, see 1603 // <https://www.gnu.org/licenses/>. 1604 1605 // We are almost always included from features.h. 1606 1607 // The GNU libc does not support any K&R compilers or the traditional mode 1608 // of ISO C compilers anymore. Check for some of the combinations not 1609 // supported anymore. 1610 1611 // Some user header file might have defined this before. 1612 1613 // Compilers that lack __has_attribute may object to 1614 // #if defined __has_attribute && __has_attribute (...) 1615 // even though they do not need to evaluate the right-hand side of the &&. 1616 // Similarly for __has_builtin, etc. 1617 1618 // All functions, except those with callbacks or those that 1619 // synchronize memory, are leaf functions. 1620 1621 // GCC can always grok prototypes. For C++ programs we add throw() 1622 // to help it optimize the function calls. But this only works with 1623 // gcc 2.8.x and egcs. For gcc 3.4 and up we even mark C functions 1624 // as non-throwing using a function attribute since programs can use 1625 // the -fexceptions options for C code as well. 1626 1627 // These two macros are not used in glibc anymore. They are kept here 1628 // only because some other projects expect the macros to be defined. 1629 1630 // For these things, GCC behaves the ANSI way normally, 1631 // and the non-ANSI way under -traditional. 1632 1633 // This is not a typedef so `const __ptr_t' does the right thing. 1634 1635 // C++ needs to know that types and declarations are C, not C++. 1636 1637 // Fortify support. 1638 1639 // Use __builtin_dynamic_object_size at _FORTIFY_SOURCE=3 when available. 1640 1641 // Support for flexible arrays. 1642 // Headers that should use flexible arrays only if they're "real" 1643 // (e.g. only if they won't affect sizeof()) should test 1644 // #if __glibc_c99_flexarr_available. 1645 1646 // __asm__ ("xyz") is used throughout the headers to rename functions 1647 // at the assembly language level. This is wrapped by the __REDIRECT 1648 // macro, in order to support compilers that can do this some other 1649 // way. When compilers don't support asm-names at all, we have to do 1650 // preprocessor tricks instead (which don't have exactly the right 1651 // semantics, but it's the best we can do). 1652 // 1653 // Example: 1654 // int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid); 1655 1656 // 1657 // #elif __SOME_OTHER_COMPILER__ 1658 // 1659 // # define __REDIRECT(name, proto, alias) name proto; _Pragma("let " #name " = " #alias) 1660 1661 // GCC and clang have various useful declarations that can be made with 1662 // the '__attribute__' syntax. All of the ways we use this do fine if 1663 // they are omitted for compilers that don't understand it. 1664 1665 // At some point during the gcc 2.96 development the `malloc' attribute 1666 // for functions was introduced. We don't want to use it unconditionally 1667 // (although this would be possible) since it generates warnings. 1668 1669 // Tell the compiler which arguments to an allocation function 1670 // indicate the size of the allocation. 1671 1672 // At some point during the gcc 2.96 development the `pure' attribute 1673 // for functions was introduced. We don't want to use it unconditionally 1674 // (although this would be possible) since it generates warnings. 1675 1676 // This declaration tells the compiler that the value is constant. 1677 1678 // At some point during the gcc 3.1 development the `used' attribute 1679 // for functions was introduced. We don't want to use it unconditionally 1680 // (although this would be possible) since it generates warnings. 1681 1682 // Since version 3.2, gcc allows marking deprecated functions. 1683 1684 // Since version 4.5, gcc also allows one to specify the message printed 1685 // when a deprecated function is used. clang claims to be gcc 4.2, but 1686 // may also support this feature. 1687 1688 // At some point during the gcc 2.8 development the `format_arg' attribute 1689 // for functions was introduced. We don't want to use it unconditionally 1690 // (although this would be possible) since it generates warnings. 1691 // If several `format_arg' attributes are given for the same function, in 1692 // gcc-3.0 and older, all but the last one are ignored. In newer gccs, 1693 // all designated arguments are considered. 1694 1695 // At some point during the gcc 2.97 development the `strfmon' format 1696 // attribute for functions was introduced. We don't want to use it 1697 // unconditionally (although this would be possible) since it 1698 // generates warnings. 1699 1700 // The nonnull function attribute marks pointer parameters that 1701 // must not be NULL. 1702 1703 // The returns_nonnull function attribute marks the return type of the function 1704 // as always being non-null. 1705 1706 // If fortification mode, we warn about unused results of certain 1707 // function calls which can lead to problems. 1708 1709 // Forces a function to be always inlined. 1710 // The Linux kernel defines __always_inline in stddef.h (283d7573), and 1711 // it conflicts with this definition. Therefore undefine it first to 1712 // allow either header to be included first. 1713 1714 // Associate error messages with the source location of the call site rather 1715 // than with the source location inside the function. 1716 1717 // GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99 1718 // inline semantics, unless -fgnu89-inline is used. Using __GNUC_STDC_INLINE__ 1719 // or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions 1720 // older than 4.3 may define these macros and still not guarantee GNU inlining 1721 // semantics. 1722 // 1723 // clang++ identifies itself as gcc-4.2, but has support for GNU inlining 1724 // semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and 1725 // __GNUC_GNU_INLINE__ macro definitions. 1726 1727 // GCC 4.3 and above allow passing all anonymous arguments of an 1728 // __extern_always_inline function to some other vararg function. 1729 1730 // It is possible to compile containing GCC extensions even if GCC is 1731 // run in pedantic mode if the uses are carefully marked using the 1732 // `__extension__' keyword. But this is not generally available before 1733 // version 2.8. 1734 1735 // __restrict is known in EGCS 1.2 and above, and in clang. 1736 // It works also in C++ mode (outside of arrays), but only when spelled 1737 // as '__restrict', not 'restrict'. 1738 1739 // ISO C99 also allows to declare arrays as non-overlapping. The syntax is 1740 // array_name[restrict] 1741 // GCC 3.1 and clang support this. 1742 // This syntax is not usable in C++ mode. 1743 1744 // Describes a char array whose address can safely be passed as the first 1745 // argument to strncpy and strncat, as the char array is not necessarily 1746 // a NUL-terminated string. 1747 1748 // Undefine (also defined in libc-symbols.h). 1749 // Copies attributes from the declaration or type referenced by 1750 // the argument. 1751 1752 // The #ifndef lets Gnulib avoid including these on non-glibc 1753 // platforms, where the includes typically do not exist. 1754 // Determine the wordsize from the preprocessor defines. RISC-V version. 1755 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 1756 // This file is part of the GNU C Library. 1757 // 1758 // The GNU C Library is free software; you can redistribute it and/or 1759 // modify it under the terms of the GNU Lesser General Public 1760 // License as published by the Free Software Foundation; either 1761 // version 2.1 of the License, or (at your option) any later version. 1762 // 1763 // The GNU C Library is distributed in the hope that it will be useful, 1764 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1765 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1766 // Lesser General Public License for more details. 1767 // 1768 // You should have received a copy of the GNU Lesser General Public 1769 // License along with the GNU C Library. If not, see 1770 // <https://www.gnu.org/licenses/>. 1771 1772 // Properties of long double type. ldbl-128 version. 1773 // Copyright (C) 2016-2021 Free Software Foundation, Inc. 1774 // This file is part of the GNU C Library. 1775 // 1776 // The GNU C Library is free software; you can redistribute it and/or 1777 // modify it under the terms of the GNU Lesser General Public 1778 // License published by the Free Software Foundation; either 1779 // version 2.1 of the License, or (at your option) any later version. 1780 // 1781 // The GNU C Library is distributed in the hope that it will be useful, 1782 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1783 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1784 // Lesser General Public License for more details. 1785 // 1786 // You should have received a copy of the GNU Lesser General Public 1787 // License along with the GNU C Library; if not, see 1788 // <https://www.gnu.org/licenses/>. 1789 1790 // long double is distinct from double, so there is nothing to 1791 // define here. 1792 1793 // __glibc_macro_warning (MESSAGE) issues warning MESSAGE. This is 1794 // intended for use in preprocessor macros. 1795 // 1796 // Note: MESSAGE must be a _single_ string; concatenation of string 1797 // literals is not supported. 1798 1799 // Generic selection (ISO C11) is a C-only feature, available in GCC 1800 // since version 4.9. Previous versions do not provide generic 1801 // selection, even though they might set __STDC_VERSION__ to 201112L, 1802 // when in -std=c11 mode. Thus, we must check for !defined __GNUC__ 1803 // when testing __STDC_VERSION__ for generic selection support. 1804 // On the other hand, Clang also defines __GNUC__, so a clang-specific 1805 // check is required to enable the use of generic selection. 1806 1807 // Designates a 1-based positional argument ref-index of pointer type 1808 // that can be used to access size-index elements of the pointed-to 1809 // array according to access mode, or at least one element when 1810 // size-index is not provided: 1811 // access (access-mode, <ref-index> [, <size-index>]) 1812 1813 // Designates dealloc as a function to call to deallocate objects 1814 // allocated by the declared function. 1815 1816 // Specify that a function such as setjmp or vfork may return 1817 // twice. 1818 1819 // If we don't have __REDIRECT, prototypes will be missing if 1820 // __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64]. 1821 1822 // Decide whether we can define 'extern inline' functions in headers. 1823 1824 // This is here only because every header file already includes this one. 1825 // Get the definitions of all the appropriate `__stub_FUNCTION' symbols. 1826 // <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub 1827 // that will always return failure (and set errno to ENOSYS). 1828 // This file is automatically generated. 1829 // This file selects the right generated file of `__stub_FUNCTION' macros 1830 // based on the architecture being compiled for. 1831 1832 // Determine the wordsize from the preprocessor defines. RISC-V version. 1833 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 1834 // This file is part of the GNU C Library. 1835 // 1836 // The GNU C Library is free software; you can redistribute it and/or 1837 // modify it under the terms of the GNU Lesser General Public 1838 // License as published by the Free Software Foundation; either 1839 // version 2.1 of the License, or (at your option) any later version. 1840 // 1841 // The GNU C Library is distributed in the hope that it will be useful, 1842 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1843 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1844 // Lesser General Public License for more details. 1845 // 1846 // You should have received a copy of the GNU Lesser General Public 1847 // License along with the GNU C Library. If not, see 1848 // <https://www.gnu.org/licenses/>. 1849 1850 // This file is automatically generated. 1851 // It defines a symbol `__stub_FUNCTION' for each function 1852 // in the C library which is a stub, meaning it will fail 1853 // every time called, usually setting errno to ENOSYS. 1854 1855 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 1856 // macro. 1857 1858 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 1859 // macro. Most but not all symbols enabled by that macro in TS 1860 // 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in 1861 // Annex F still require a new feature test macro 1862 // __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define 1863 // __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS 1864 // 18661-1 are not included in C2X (and thus should depend on 1865 // __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are 1866 // enabled). 1867 // 1868 // __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS 1869 // 18661-1 not included in C2X. 1870 // 1871 // __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS 1872 // 18661-1 that are also included in C2X (with no feature test macro 1873 // required in C2X). 1874 // 1875 // __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1 1876 // that are included in C2X but conditional on 1877 // __STDC_WANT_IEC_60559_EXT__. (There are currently no features 1878 // conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS 1879 // 18661-1.) 1880 1881 // ISO/IEC TS 18661-4:2015 defines the 1882 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 1883 // functions, the symbols from this TS are enabled unconditionally in 1884 // C2X. 1885 1886 // ISO/IEC TS 18661-3:2015 defines the 1887 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 1888 1889 // Maximum length of any multibyte character in any locale. 1890 // We define this value here since the gcc header does not define 1891 // the correct value. 1892 1893 // If we are not using GNU CC we have to define all the symbols ourself. 1894 // Otherwise use gcc's definitions (see below). 1895 1896 // Get the compiler's limits.h, which defines almost all the ISO constants. 1897 // 1898 // We put this #include_next outside the double inclusion check because 1899 // it should be possible to include this file more than once and still get 1900 // the definitions from gcc's header. 1901 1902 // The <limits.h> files in some gcc versions don't define LLONG_MIN, 1903 // LLONG_MAX, and ULLONG_MAX. Instead only the values gcc defined for 1904 // ages are available. 1905 1906 // The integer width macros are not defined by GCC's <limits.h> before 1907 // GCC 7, or if _GNU_SOURCE rather than 1908 // __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature. 1909 1910 // The macros for _Bool are not defined by GCC's <limits.h> before GCC 1911 // 11, or if _GNU_SOURCE is defined rather than enabling C2x support 1912 // with -std. 1913 1914 // POSIX adds things to <limits.h>. 1915 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 1916 // This file is part of the GNU C Library. 1917 // 1918 // The GNU C Library is free software; you can redistribute it and/or 1919 // modify it under the terms of the GNU Lesser General Public 1920 // License as published by the Free Software Foundation; either 1921 // version 2.1 of the License, or (at your option) any later version. 1922 // 1923 // The GNU C Library is distributed in the hope that it will be useful, 1924 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1925 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1926 // Lesser General Public License for more details. 1927 // 1928 // You should have received a copy of the GNU Lesser General Public 1929 // License along with the GNU C Library; if not, see 1930 // <https://www.gnu.org/licenses/>. 1931 1932 // POSIX Standard: 2.9.2 Minimum Values Added to <limits.h> 1933 // 1934 // Never include this file directly; use <limits.h> instead. 1935 1936 // Determine the wordsize from the preprocessor defines. RISC-V version. 1937 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 1938 // This file is part of the GNU C Library. 1939 // 1940 // The GNU C Library is free software; you can redistribute it and/or 1941 // modify it under the terms of the GNU Lesser General Public 1942 // License as published by the Free Software Foundation; either 1943 // version 2.1 of the License, or (at your option) any later version. 1944 // 1945 // The GNU C Library is distributed in the hope that it will be useful, 1946 // but WITHOUT ANY WARRANTY; without even the implied warranty of 1947 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1948 // Lesser General Public License for more details. 1949 // 1950 // You should have received a copy of the GNU Lesser General Public 1951 // License along with the GNU C Library. If not, see 1952 // <https://www.gnu.org/licenses/>. 1953 1954 // These are the standard-mandated minimum values. 1955 1956 // Minimum number of operations in one list I/O call. 1957 1958 // Minimal number of outstanding asynchronous I/O operations. 1959 1960 // Maximum length of arguments to `execve', including environment. 1961 1962 // Maximum simultaneous processes per real user ID. 1963 1964 // Minimal number of timer expiration overruns. 1965 1966 // Maximum length of a host name (not including the terminating null) 1967 // as returned from the GETHOSTNAME function. 1968 1969 // Maximum link count of a file. 1970 1971 // Maximum length of login name. 1972 1973 // Number of bytes in a terminal canonical input queue. 1974 1975 // Number of bytes for which space will be 1976 // available in a terminal input queue. 1977 1978 // Maximum number of message queues open for a process. 1979 1980 // Maximum number of supported message priorities. 1981 1982 // Number of bytes in a filename. 1983 1984 // Number of simultaneous supplementary group IDs per process. 1985 1986 // Number of files one process can have open at once. 1987 1988 // Number of bytes in a pathname. 1989 1990 // Number of bytes than can be written atomically to a pipe. 1991 1992 // The number of repeated occurrences of a BRE permitted by the 1993 // REGEXEC and REGCOMP functions when using the interval notation. 1994 1995 // Minimal number of realtime signals reserved for the application. 1996 1997 // Number of semaphores a process can have. 1998 1999 // Maximal value of a semaphore. 2000 2001 // Number of pending realtime signals. 2002 2003 // Largest value of a `ssize_t'. 2004 2005 // Number of streams a process can have open at once. 2006 2007 // The number of bytes in a symbolic link. 2008 2009 // The number of symbolic links that can be traversed in the 2010 // resolution of a pathname in the absence of a loop. 2011 2012 // Number of timer for a process. 2013 2014 // Maximum number of characters in a tty name. 2015 2016 // Maximum length of a timezone name (element of `tzname'). 2017 2018 // Maximum clock resolution in nanoseconds. 2019 2020 // Get the implementation-specific values for the above. 2021 // Minimum guaranteed maximum values for system limits. Linux version. 2022 // Copyright (C) 1993-2021 Free Software Foundation, Inc. 2023 // This file is part of the GNU C Library. 2024 // 2025 // The GNU C Library is free software; you can redistribute it and/or 2026 // modify it under the terms of the GNU Lesser General Public License as 2027 // published by the Free Software Foundation; either version 2.1 of the 2028 // License, or (at your option) any later version. 2029 // 2030 // The GNU C Library is distributed in the hope that it will be useful, 2031 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2032 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2033 // Lesser General Public License for more details. 2034 // 2035 // You should have received a copy of the GNU Lesser General Public 2036 // License along with the GNU C Library; see the file COPYING.LIB. If 2037 // not, see <https://www.gnu.org/licenses/>. 2038 2039 // The kernel header pollutes the namespace with the NR_OPEN symbol 2040 // and defines LINK_MAX although filesystems have different maxima. A 2041 // similar thing is true for OPEN_MAX: the limit can be changed at 2042 // runtime and therefore the macro must not be defined. Remove this 2043 // after including the header if necessary. 2044 2045 // The kernel sources contain a file with all the needed information. 2046 // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note 2047 2048 // Have to remove NR_OPEN? 2049 // Have to remove LINK_MAX? 2050 // Have to remove OPEN_MAX? 2051 // Have to remove ARG_MAX? 2052 2053 // The number of data keys per process. 2054 // This is the value this implementation supports. 2055 2056 // Controlling the iterations of destructors for thread-specific data. 2057 // Number of iterations this implementation does. 2058 2059 // The number of threads per process. 2060 // We have no predefined limit on the number of threads. 2061 2062 // Maximum amount by which a process can descrease its asynchronous I/O 2063 // priority level. 2064 2065 // Arrange for the definition of PTHREAD_STACK_MIN. 2066 // Definition of PTHREAD_STACK_MIN, possibly dynamic. 2067 // Copyright (C) 2021 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 2072 // License as published by the Free Software Foundation; either 2073 // version 2.1 of the 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; if not, see 2082 // <https://www.gnu.org/licenses/>. 2083 2084 // Definition of PTHREAD_STACK_MIN. Linux version. 2085 // Copyright (C) 2021 Free Software Foundation, Inc. 2086 // This file is part of the GNU C Library. 2087 // 2088 // The GNU C Library is free software; you can redistribute it and/or 2089 // modify it under the terms of the GNU Lesser General Public 2090 // License as published by the Free Software Foundation; either 2091 // version 2.1 of the License, or (at your option) any later version. 2092 // 2093 // The GNU C Library is distributed in the hope that it will be useful, 2094 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2095 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2096 // Lesser General Public License for more details. 2097 // 2098 // You should have received a copy of the GNU Lesser General Public 2099 // License along with the GNU C Library; if not, see 2100 // <https://www.gnu.org/licenses/>. 2101 2102 // Minimum size for a thread. We are free to choose a reasonable value. 2103 2104 // Maximum number of timer expiration overruns. 2105 2106 // Maximum tty name length. 2107 2108 // Maximum login name length. This is arbitrary. 2109 2110 // Maximum host name length. 2111 2112 // Maximum message queue priority level. 2113 2114 // Maximum value the semaphore can have. 2115 2116 // ssize_t is not formally required to be the signed type 2117 // corresponding to size_t, but it is for all configurations supported 2118 // by glibc. 2119 2120 // This value is a guaranteed minimum maximum. 2121 // The current maximum can be got from `sysconf'. 2122 2123 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 2124 // This file is part of the GNU C Library. 2125 // 2126 // The GNU C Library is free software; you can redistribute it and/or 2127 // modify it under the terms of the GNU Lesser General Public 2128 // License as published by the Free Software Foundation; either 2129 // version 2.1 of the License, or (at your option) any later version. 2130 // 2131 // The GNU C Library is distributed in the hope that it will be useful, 2132 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2133 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2134 // Lesser General Public License for more details. 2135 // 2136 // You should have received a copy of the GNU Lesser General Public 2137 // License along with the GNU C Library; if not, see 2138 // <https://www.gnu.org/licenses/>. 2139 2140 // Never include this file directly; include <limits.h> instead. 2141 2142 // The maximum `ibase' and `obase' values allowed by the `bc' utility. 2143 2144 // The maximum number of elements allowed in an array by the `bc' utility. 2145 2146 // The maximum `scale' value allowed by the `bc' utility. 2147 2148 // The maximum length of a string constant accepted by the `bc' utility. 2149 2150 // The maximum number of weights that can be assigned to an entry of 2151 // the LC_COLLATE `order' keyword in the locale definition file. 2152 2153 // The maximum number of expressions that can be nested 2154 // within parentheses by the `expr' utility. 2155 2156 // The maximum length, in bytes, of an input line. 2157 2158 // The maximum number of repeated occurrences of a regular expression 2159 // permitted when using the interval notation `\{M,N\}'. 2160 2161 // The maximum number of bytes in a character class name. We have no 2162 // fixed limit, 2048 is a high number. 2163 2164 // These values are implementation-specific, 2165 // and may vary within the implementation. 2166 // Their precise values can be obtained from sysconf. 2167 2168 // This value is defined like this in regex.h. 2169 2170 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 2171 // 2172 // This file is part of GCC. 2173 // 2174 // GCC is free software; you can redistribute it and/or modify it under 2175 // the terms of the GNU General Public License as published by the Free 2176 // Software Foundation; either version 3, or (at your option) any later 2177 // version. 2178 // 2179 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY 2180 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 2181 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 2182 // for more details. 2183 // 2184 // Under Section 7 of GPL version 3, you are granted additional 2185 // permissions described in the GCC Runtime Library Exception, version 2186 // 3.1, as published by the Free Software Foundation. 2187 // 2188 // You should have received a copy of the GNU General Public License and 2189 // a copy of the GCC Runtime Library Exception along with this program; 2190 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 2191 // <http://www.gnu.org/licenses/>. 2192 2193 // Number of bits in a `char'. 2194 2195 // Maximum length of a multibyte character. 2196 2197 // Minimum and maximum values a `signed char' can hold. 2198 2199 // Maximum value an `unsigned char' can hold. (Minimum is 0). 2200 2201 // Minimum and maximum values a `char' can hold. 2202 2203 // Minimum and maximum values a `signed short int' can hold. 2204 2205 // Maximum value an `unsigned short int' can hold. (Minimum is 0). 2206 2207 // Minimum and maximum values a `signed int' can hold. 2208 2209 // Maximum value an `unsigned int' can hold. (Minimum is 0). 2210 2211 // Minimum and maximum values a `signed long int' can hold. 2212 // (Same as `int'). 2213 2214 // Maximum value an `unsigned long int' can hold. (Minimum is 0). 2215 2216 // Minimum and maximum values a `signed long long int' can hold. 2217 2218 // Maximum value an `unsigned long long int' can hold. (Minimum is 0). 2219 2220 // This administrivia gets added to the end of limits.h 2221 // if the system has its own version of limits.h. 2222 2223 type Z_crc_t = uint32 /* zconf.h:429:17 */ 2224 2225 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 2226 // This file is part of the GNU C Library. 2227 // 2228 // The GNU C Library is free software; you can redistribute it and/or 2229 // modify it under the terms of the GNU Lesser General Public 2230 // License as published by the Free Software Foundation; either 2231 // version 2.1 of the License, or (at your option) any later version. 2232 // 2233 // The GNU C Library is distributed in the hope that it will be useful, 2234 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2235 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2236 // Lesser General Public License for more details. 2237 // 2238 // You should have received a copy of the GNU Lesser General Public 2239 // License along with the GNU C Library; if not, see 2240 // <https://www.gnu.org/licenses/>. 2241 2242 // POSIX Standard: 2.6 Primitive System Data Types <sys/types.h> 2243 2244 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 2245 // This file is part of the GNU C Library. 2246 // 2247 // The GNU C Library is free software; you can redistribute it and/or 2248 // modify it under the terms of the GNU Lesser General Public 2249 // License as published by the Free Software Foundation; either 2250 // version 2.1 of the License, or (at your option) any later version. 2251 // 2252 // The GNU C Library is distributed in the hope that it will be useful, 2253 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2254 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2255 // Lesser General Public License for more details. 2256 // 2257 // You should have received a copy of the GNU Lesser General Public 2258 // License along with the GNU C Library; if not, see 2259 // <https://www.gnu.org/licenses/>. 2260 2261 // bits/types.h -- definitions of __*_t types underlying *_t types. 2262 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2263 // This file is part of the GNU C Library. 2264 // 2265 // The GNU C Library is free software; you can redistribute it and/or 2266 // modify it under the terms of the GNU Lesser General Public 2267 // License as published by the Free Software Foundation; either 2268 // version 2.1 of the License, or (at your option) any later version. 2269 // 2270 // The GNU C Library is distributed in the hope that it will be useful, 2271 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2272 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2273 // Lesser General Public License for more details. 2274 // 2275 // You should have received a copy of the GNU Lesser General Public 2276 // License along with the GNU C Library; if not, see 2277 // <https://www.gnu.org/licenses/>. 2278 2279 // Never include this file directly; use <sys/types.h> instead. 2280 2281 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 2282 // This file is part of the GNU C Library. 2283 // 2284 // The GNU C Library is free software; you can redistribute it and/or 2285 // modify it under the terms of the GNU Lesser General Public 2286 // License as published by the Free Software Foundation; either 2287 // version 2.1 of the License, or (at your option) any later version. 2288 // 2289 // The GNU C Library is distributed in the hope that it will be useful, 2290 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2291 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2292 // Lesser General Public License for more details. 2293 // 2294 // You should have received a copy of the GNU Lesser General Public 2295 // License along with the GNU C Library; if not, see 2296 // <https://www.gnu.org/licenses/>. 2297 2298 // Determine the wordsize from the preprocessor defines. RISC-V version. 2299 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2300 // This file is part of the GNU C Library. 2301 // 2302 // The GNU C Library is free software; you can redistribute it and/or 2303 // modify it under the terms of the GNU Lesser General Public 2304 // License as published by the Free Software Foundation; either 2305 // version 2.1 of the License, or (at your option) any later version. 2306 // 2307 // The GNU C Library is distributed in the hope that it will be useful, 2308 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2309 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2310 // Lesser General Public License for more details. 2311 // 2312 // You should have received a copy of the GNU Lesser General Public 2313 // License along with the GNU C Library. If not, see 2314 // <https://www.gnu.org/licenses/>. 2315 2316 // Bit size of the time_t type at glibc build time, RISC-V case. 2317 // Copyright (C) 2020-2021 Free Software Foundation, Inc. 2318 // This file is part of the GNU C Library. 2319 // 2320 // The GNU C Library is free software; you can redistribute it and/or 2321 // modify it under the terms of the GNU Lesser General Public 2322 // License as published by the Free Software Foundation; either 2323 // version 2.1 of the License, or (at your option) any later version. 2324 // 2325 // The GNU C Library is distributed in the hope that it will be useful, 2326 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2327 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2328 // Lesser General Public License for more details. 2329 // 2330 // You should have received a copy of the GNU Lesser General Public 2331 // License along with the GNU C Library; if not, see 2332 // <https://www.gnu.org/licenses/>. 2333 2334 // Determine the wordsize from the preprocessor defines. RISC-V version. 2335 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2336 // This file is part of the GNU C Library. 2337 // 2338 // The GNU C Library is free software; you can redistribute it and/or 2339 // modify it under the terms of the GNU Lesser General Public 2340 // License as published by the Free Software Foundation; either 2341 // version 2.1 of the License, or (at your option) any later version. 2342 // 2343 // The GNU C Library is distributed in the hope that it will be useful, 2344 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2345 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2346 // Lesser General Public License for more details. 2347 // 2348 // You should have received a copy of the GNU Lesser General Public 2349 // License along with the GNU C Library. If not, see 2350 // <https://www.gnu.org/licenses/>. 2351 2352 // RV32 and RV64 both use 64-bit time_t 2353 2354 // Convenience types. 2355 type X__u_char = uint8 /* types.h:31:23 */ 2356 type X__u_short = uint16 /* types.h:32:28 */ 2357 type X__u_int = uint32 /* types.h:33:22 */ 2358 type X__u_long = uint64 /* types.h:34:27 */ 2359 2360 // Fixed-size types, underlying types depend on word size and compiler. 2361 type X__int8_t = int8 /* types.h:37:21 */ 2362 type X__uint8_t = uint8 /* types.h:38:23 */ 2363 type X__int16_t = int16 /* types.h:39:26 */ 2364 type X__uint16_t = uint16 /* types.h:40:28 */ 2365 type X__int32_t = int32 /* types.h:41:20 */ 2366 type X__uint32_t = uint32 /* types.h:42:22 */ 2367 type X__int64_t = int64 /* types.h:44:25 */ 2368 type X__uint64_t = uint64 /* types.h:45:27 */ 2369 2370 // Smallest types with at least a given width. 2371 type X__int_least8_t = X__int8_t /* types.h:52:18 */ 2372 type X__uint_least8_t = X__uint8_t /* types.h:53:19 */ 2373 type X__int_least16_t = X__int16_t /* types.h:54:19 */ 2374 type X__uint_least16_t = X__uint16_t /* types.h:55:20 */ 2375 type X__int_least32_t = X__int32_t /* types.h:56:19 */ 2376 type X__uint_least32_t = X__uint32_t /* types.h:57:20 */ 2377 type X__int_least64_t = X__int64_t /* types.h:58:19 */ 2378 type X__uint_least64_t = X__uint64_t /* types.h:59:20 */ 2379 2380 // quad_t is also 64 bits. 2381 type X__quad_t = int64 /* types.h:63:18 */ 2382 type X__u_quad_t = uint64 /* types.h:64:27 */ 2383 2384 // Largest integral types. 2385 type X__intmax_t = int64 /* types.h:72:18 */ 2386 type X__uintmax_t = uint64 /* types.h:73:27 */ 2387 2388 // The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE 2389 // macros for each of the OS types we define below. The definitions 2390 // of those macros must use the following macros for underlying types. 2391 // We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned 2392 // variants of each of the following integer types on this machine. 2393 // 2394 // 16 -- "natural" 16-bit type (always short) 2395 // 32 -- "natural" 32-bit type (always int) 2396 // 64 -- "natural" 64-bit type (long or long long) 2397 // LONG32 -- 32-bit type, traditionally long 2398 // QUAD -- 64-bit type, traditionally long long 2399 // WORD -- natural type of __WORDSIZE bits (int or long) 2400 // LONGWORD -- type of __WORDSIZE bits, traditionally long 2401 // 2402 // We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the 2403 // conventional uses of `long' or `long long' type modifiers match the 2404 // types we define, even when a less-adorned type would be the same size. 2405 // This matters for (somewhat) portably writing printf/scanf formats for 2406 // these types, where using the appropriate l or ll format modifiers can 2407 // make the typedefs and the formats match up across all GNU platforms. If 2408 // we used `long' when it's 64 bits where `long long' is expected, then the 2409 // compiler would warn about the formats not matching the argument types, 2410 // and the programmer changing them to shut up the compiler would break the 2411 // program's portability. 2412 // 2413 // Here we assume what is presently the case in all the GCC configurations 2414 // we support: long long is always 64 bits, long is always word/address size, 2415 // and int is always 32 bits. 2416 2417 // No need to mark the typedef with __extension__. 2418 // bits/typesizes.h -- underlying types for *_t. For the generic Linux ABI. 2419 // Copyright (C) 2011-2021 Free Software Foundation, Inc. 2420 // This file is part of the GNU C Library. 2421 // Contributed by Chris Metcalf <cmetcalf@tilera.com>, 2011. 2422 // 2423 // The GNU C Library is free software; you can redistribute it and/or 2424 // modify it under the terms of the GNU Lesser General Public 2425 // License as published by the Free Software Foundation; either 2426 // version 2.1 of the License, or (at your option) any later version. 2427 // 2428 // The GNU C Library is distributed in the hope that it will be useful, 2429 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2430 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2431 // Lesser General Public License for more details. 2432 // 2433 // You should have received a copy of the GNU Lesser General Public 2434 // License along with the GNU C Library. If not, see 2435 // <https://www.gnu.org/licenses/>. 2436 2437 // See <bits/types.h> for the meaning of these macros. This file exists so 2438 // that <bits/types.h> need not vary across different GNU platforms. 2439 2440 // Tell the libc code that off_t and off64_t are actually the same type 2441 // for all ABI purposes, even if possibly expressed as different base types 2442 // for C type-checking purposes. 2443 2444 // Same for ino_t and ino64_t. 2445 2446 // And for __rlim_t and __rlim64_t. 2447 2448 // And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. 2449 2450 // And for getitimer, setitimer and rusage 2451 2452 // Number of descriptors that can fit in an `fd_set'. 2453 2454 // bits/time64.h -- underlying types for __time64_t. RISC-V version. 2455 // Copyright (C) 2020-2021 Free Software Foundation, Inc. 2456 // This file is part of the GNU C Library. 2457 // 2458 // The GNU C Library is free software; you can redistribute it and/or 2459 // modify it under the terms of the GNU Lesser General Public 2460 // License as published by the Free Software Foundation; either 2461 // version 2.1 of the License, or (at your option) any later version. 2462 // 2463 // The GNU C Library is distributed in the hope that it will be useful, 2464 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2465 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2466 // Lesser General Public License for more details. 2467 // 2468 // You should have received a copy of the GNU Lesser General Public 2469 // License along with the GNU C Library; if not, see 2470 // <https://www.gnu.org/licenses/>. 2471 2472 // Define __TIME64_T_TYPE so that it is always a 64-bit type. 2473 2474 // If we already have 64-bit time type then use it. 2475 2476 type X__dev_t = uint64 /* types.h:145:25 */ // Type of device numbers. 2477 type X__uid_t = uint32 /* types.h:146:25 */ // Type of user identifications. 2478 type X__gid_t = uint32 /* types.h:147:25 */ // Type of group identifications. 2479 type X__ino_t = uint64 /* types.h:148:25 */ // Type of file serial numbers. 2480 type X__ino64_t = uint64 /* types.h:149:27 */ // Type of file serial numbers (LFS). 2481 type X__mode_t = uint32 /* types.h:150:26 */ // Type of file attribute bitmasks. 2482 type X__nlink_t = uint32 /* types.h:151:27 */ // Type of file link counts. 2483 type X__off_t = int64 /* types.h:152:25 */ // Type of file sizes and offsets. 2484 type X__off64_t = int64 /* types.h:153:27 */ // Type of file sizes and offsets (LFS). 2485 type X__pid_t = int32 /* types.h:154:25 */ // Type of process identifications. 2486 type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs. 2487 type X__clock_t = int64 /* types.h:156:27 */ // Type of CPU usage counts. 2488 type X__rlim_t = uint64 /* types.h:157:26 */ // Type for resource measurement. 2489 type X__rlim64_t = uint64 /* types.h:158:28 */ // Type for resource measurement (LFS). 2490 type X__id_t = uint32 /* types.h:159:24 */ // General type for IDs. 2491 type X__time_t = int64 /* types.h:160:26 */ // Seconds since the Epoch. 2492 type X__useconds_t = uint32 /* types.h:161:30 */ // Count of microseconds. 2493 type X__suseconds_t = int64 /* types.h:162:31 */ // Signed count of microseconds. 2494 type X__suseconds64_t = int64 /* types.h:163:33 */ 2495 2496 type X__daddr_t = int32 /* types.h:165:27 */ // The type of a disk address. 2497 type X__key_t = int32 /* types.h:166:25 */ // Type of an IPC key. 2498 2499 // Clock ID used in clock and timer functions. 2500 type X__clockid_t = int32 /* types.h:169:29 */ 2501 2502 // Timer ID returned by `timer_create'. 2503 type X__timer_t = uintptr /* types.h:172:12 */ 2504 2505 // Type to represent block size. 2506 type X__blksize_t = int32 /* types.h:175:29 */ 2507 2508 // Types from the Large File Support interface. 2509 2510 // Type to count number of disk blocks. 2511 type X__blkcnt_t = int64 /* types.h:180:28 */ 2512 type X__blkcnt64_t = int64 /* types.h:181:30 */ 2513 2514 // Type to count file system blocks. 2515 type X__fsblkcnt_t = uint64 /* types.h:184:30 */ 2516 type X__fsblkcnt64_t = uint64 /* types.h:185:32 */ 2517 2518 // Type to count file system nodes. 2519 type X__fsfilcnt_t = uint64 /* types.h:188:30 */ 2520 type X__fsfilcnt64_t = uint64 /* types.h:189:32 */ 2521 2522 // Type of miscellaneous file system fields. 2523 type X__fsword_t = int64 /* types.h:192:28 */ 2524 2525 type X__ssize_t = int64 /* types.h:194:27 */ // Type of a byte count, or error. 2526 2527 // Signed long type used in system calls. 2528 type X__syscall_slong_t = int64 /* types.h:197:33 */ 2529 // Unsigned long type used in system calls. 2530 type X__syscall_ulong_t = uint64 /* types.h:199:33 */ 2531 2532 // These few don't really vary by system, they always correspond 2533 // to one of the other defined types. 2534 type X__loff_t = X__off64_t /* types.h:203:19 */ // Type of file sizes and offsets (LFS). 2535 type X__caddr_t = uintptr /* types.h:204:14 */ 2536 2537 // Duplicates info from stdint.h but this is used in unistd.h. 2538 type X__intptr_t = int64 /* types.h:207:25 */ 2539 2540 // Duplicate info from sys/socket.h. 2541 type X__socklen_t = uint32 /* types.h:210:23 */ 2542 2543 // C99: An integer type that can be accessed as an atomic entity, 2544 // even in the presence of asynchronous interrupts. 2545 // It is not currently necessary for this to be machine-specific. 2546 type X__sig_atomic_t = int32 /* types.h:215:13 */ 2547 2548 // Seconds since the Epoch, visible to user code when time_t is too 2549 // narrow only for consistency with the old way of widening too-narrow 2550 // types. User code should never use __time64_t. 2551 2552 type U_char = X__u_char /* types.h:33:18 */ 2553 type U_short = X__u_short /* types.h:34:19 */ 2554 type U_int = X__u_int /* types.h:35:17 */ 2555 type U_long = X__u_long /* types.h:36:18 */ 2556 type Quad_t = X__quad_t /* types.h:37:18 */ 2557 type U_quad_t = X__u_quad_t /* types.h:38:20 */ 2558 type Fsid_t = X__fsid_t /* types.h:39:18 */ 2559 type Loff_t = X__loff_t /* types.h:42:18 */ 2560 2561 type Ino_t = X__ino64_t /* types.h:49:19 */ 2562 type Ino64_t = X__ino64_t /* types.h:54:19 */ 2563 2564 type Dev_t = X__dev_t /* types.h:59:17 */ 2565 2566 type Gid_t = X__gid_t /* types.h:64:17 */ 2567 2568 type Mode_t = X__mode_t /* types.h:69:18 */ 2569 2570 type Nlink_t = X__nlink_t /* types.h:74:19 */ 2571 2572 type Uid_t = X__uid_t /* types.h:79:17 */ 2573 2574 type Off_t = X__off64_t /* types.h:87:19 */ 2575 type Off64_t = X__off64_t /* types.h:92:19 */ 2576 2577 type Pid_t = X__pid_t /* types.h:97:17 */ 2578 2579 type Id_t = X__id_t /* types.h:103:16 */ 2580 2581 type Ssize_t = X__ssize_t /* types.h:108:19 */ 2582 2583 type Daddr_t = X__daddr_t /* types.h:114:19 */ 2584 type Caddr_t = X__caddr_t /* types.h:115:19 */ 2585 2586 type Key_t = X__key_t /* types.h:121:17 */ 2587 2588 // bits/types.h -- definitions of __*_t types underlying *_t types. 2589 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2590 // This file is part of the GNU C Library. 2591 // 2592 // The GNU C Library is free software; you can redistribute it and/or 2593 // modify it under the terms of the GNU Lesser General Public 2594 // License as published by the Free Software Foundation; either 2595 // version 2.1 of the License, or (at your option) any later version. 2596 // 2597 // The GNU C Library is distributed in the hope that it will be useful, 2598 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2599 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2600 // Lesser General Public License for more details. 2601 // 2602 // You should have received a copy of the GNU Lesser General Public 2603 // License along with the GNU C Library; if not, see 2604 // <https://www.gnu.org/licenses/>. 2605 2606 // Never include this file directly; use <sys/types.h> instead. 2607 2608 // Returned by `clock'. 2609 type Clock_t = X__clock_t /* clock_t.h:7:19 */ 2610 2611 // bits/types.h -- definitions of __*_t types underlying *_t types. 2612 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2613 // This file is part of the GNU C Library. 2614 // 2615 // The GNU C Library is free software; you can redistribute it and/or 2616 // modify it under the terms of the GNU Lesser General Public 2617 // License as published by the Free Software Foundation; either 2618 // version 2.1 of the License, or (at your option) any later version. 2619 // 2620 // The GNU C Library is distributed in the hope that it will be useful, 2621 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2622 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2623 // Lesser General Public License for more details. 2624 // 2625 // You should have received a copy of the GNU Lesser General Public 2626 // License along with the GNU C Library; if not, see 2627 // <https://www.gnu.org/licenses/>. 2628 2629 // Never include this file directly; use <sys/types.h> instead. 2630 2631 // Clock ID used in clock and timer functions. 2632 type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */ 2633 2634 // bits/types.h -- definitions of __*_t types underlying *_t types. 2635 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2636 // This file is part of the GNU C Library. 2637 // 2638 // The GNU C Library is free software; you can redistribute it and/or 2639 // modify it under the terms of the GNU Lesser General Public 2640 // License as published by the Free Software Foundation; either 2641 // version 2.1 of the License, or (at your option) any later version. 2642 // 2643 // The GNU C Library is distributed in the hope that it will be useful, 2644 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2645 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2646 // Lesser General Public License for more details. 2647 // 2648 // You should have received a copy of the GNU Lesser General Public 2649 // License along with the GNU C Library; if not, see 2650 // <https://www.gnu.org/licenses/>. 2651 2652 // Never include this file directly; use <sys/types.h> instead. 2653 2654 // Returned by `time'. 2655 type Time_t = X__time_t /* time_t.h:10:18 */ 2656 2657 // bits/types.h -- definitions of __*_t types underlying *_t types. 2658 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2659 // This file is part of the GNU C Library. 2660 // 2661 // The GNU C Library is free software; you can redistribute it and/or 2662 // modify it under the terms of the GNU Lesser General Public 2663 // License as published by the Free Software Foundation; either 2664 // version 2.1 of the License, or (at your option) any later version. 2665 // 2666 // The GNU C Library is distributed in the hope that it will be useful, 2667 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2668 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2669 // Lesser General Public License for more details. 2670 // 2671 // You should have received a copy of the GNU Lesser General Public 2672 // License along with the GNU C Library; if not, see 2673 // <https://www.gnu.org/licenses/>. 2674 2675 // Never include this file directly; use <sys/types.h> instead. 2676 2677 // Timer ID returned by `timer_create'. 2678 type Timer_t = X__timer_t /* timer_t.h:7:19 */ 2679 2680 // Copyright (C) 1989-2021 Free Software Foundation, Inc. 2681 // 2682 // This file is part of GCC. 2683 // 2684 // GCC is free software; you can redistribute it and/or modify 2685 // it under the terms of the GNU General Public License as published by 2686 // the Free Software Foundation; either version 3, or (at your option) 2687 // any later version. 2688 // 2689 // GCC is distributed in the hope that it will be useful, 2690 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2691 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 2692 // GNU General Public License for more details. 2693 // 2694 // Under Section 7 of GPL version 3, you are granted additional 2695 // permissions described in the GCC Runtime Library Exception, version 2696 // 3.1, as published by the Free Software Foundation. 2697 // 2698 // You should have received a copy of the GNU General Public License and 2699 // a copy of the GCC Runtime Library Exception along with this program; 2700 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 2701 // <http://www.gnu.org/licenses/>. 2702 2703 // ISO C Standard: 7.17 Common definitions <stddef.h> 2704 2705 // Any one of these symbols __need_* means that GNU libc 2706 // wants us just to define one data type. So don't define 2707 // the symbols that indicate this file's entire job has been done. 2708 2709 // This avoids lossage on SunOS but only if stdtypes.h comes first. 2710 // There's no way to win with the other order! Sun lossage. 2711 2712 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 2713 // Just ignore it. 2714 2715 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 2716 // _TYPE_size_t which will typedef size_t. fixincludes patched the 2717 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 2718 // not defined, and so that defining this macro defines _GCC_SIZE_T. 2719 // If we find that the macros are still defined at this point, we must 2720 // invoke them so that the type is defined as expected. 2721 2722 // In case nobody has defined these types, but we aren't running under 2723 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 2724 // __WCHAR_TYPE__ have reasonable values. This can happen if the 2725 // parts of GCC is compiled by an older compiler, that actually 2726 // include gstddef.h, such as collect2. 2727 2728 // Signed type of difference of two pointers. 2729 2730 // Define this type if we are doing the whole job, 2731 // or if we want this type in particular. 2732 2733 // If this symbol has done its job, get rid of it. 2734 2735 // Unsigned type of `sizeof' something. 2736 2737 // Define this type if we are doing the whole job, 2738 // or if we want this type in particular. 2739 2740 // Wide character type. 2741 // Locale-writers should change this as necessary to 2742 // be big enough to hold unique values not between 0 and 127, 2743 // and not (wchar_t) -1, for each defined multibyte character. 2744 2745 // Define this type if we are doing the whole job, 2746 // or if we want this type in particular. 2747 2748 // A null pointer constant. 2749 2750 // Offset of member MEMBER in a struct of type TYPE. 2751 2752 // Old compatibility names for C types. 2753 type Ulong = uint64 /* types.h:148:27 */ 2754 type Ushort = uint16 /* types.h:149:28 */ 2755 type Uint = uint32 /* types.h:150:22 */ 2756 2757 // These size-specific names are used by some of the inet code. 2758 2759 // Define intN_t types. 2760 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 2761 // This file is part of the GNU C Library. 2762 // 2763 // The GNU C Library is free software; you can redistribute it and/or 2764 // modify it under the terms of the GNU Lesser General Public 2765 // License as published by the Free Software Foundation; either 2766 // version 2.1 of the License, or (at your option) any later version. 2767 // 2768 // The GNU C Library is distributed in the hope that it will be useful, 2769 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2770 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2771 // Lesser General Public License for more details. 2772 // 2773 // You should have received a copy of the GNU Lesser General Public 2774 // License along with the GNU C Library; if not, see 2775 // <https://www.gnu.org/licenses/>. 2776 2777 // bits/types.h -- definitions of __*_t types underlying *_t types. 2778 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2779 // This file is part of the GNU C Library. 2780 // 2781 // The GNU C Library is free software; you can redistribute it and/or 2782 // modify it under the terms of the GNU Lesser General Public 2783 // License as published by the Free Software Foundation; either 2784 // version 2.1 of the License, or (at your option) any later version. 2785 // 2786 // The GNU C Library is distributed in the hope that it will be useful, 2787 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2788 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2789 // Lesser General Public License for more details. 2790 // 2791 // You should have received a copy of the GNU Lesser General Public 2792 // License along with the GNU C Library; if not, see 2793 // <https://www.gnu.org/licenses/>. 2794 2795 // Never include this file directly; use <sys/types.h> instead. 2796 2797 type Int8_t = X__int8_t /* stdint-intn.h:24:18 */ 2798 type Int16_t = X__int16_t /* stdint-intn.h:25:19 */ 2799 type Int32_t = X__int32_t /* stdint-intn.h:26:19 */ 2800 type Int64_t = X__int64_t /* stdint-intn.h:27:19 */ 2801 2802 // These were defined by ISO C without the first `_'. 2803 type U_int8_t = X__uint8_t /* types.h:158:19 */ 2804 type U_int16_t = X__uint16_t /* types.h:159:20 */ 2805 type U_int32_t = X__uint32_t /* types.h:160:20 */ 2806 type U_int64_t = X__uint64_t /* types.h:161:20 */ 2807 2808 type Register_t = int32 /* types.h:164:13 */ 2809 2810 // It also defines `fd_set' and the FD_* macros for `select'. 2811 // `fd_set' type and related macros, and `select'/`pselect' declarations. 2812 // Copyright (C) 1996-2021 Free Software Foundation, Inc. 2813 // This file is part of the GNU C Library. 2814 // 2815 // The GNU C Library is free software; you can redistribute it and/or 2816 // modify it under the terms of the GNU Lesser General Public 2817 // License as published by the Free Software Foundation; either 2818 // version 2.1 of the License, or (at your option) any later version. 2819 // 2820 // The GNU C Library is distributed in the hope that it will be useful, 2821 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2822 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2823 // Lesser General Public License for more details. 2824 // 2825 // You should have received a copy of the GNU Lesser General Public 2826 // License along with the GNU C Library; if not, see 2827 // <https://www.gnu.org/licenses/>. 2828 2829 // POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h> 2830 2831 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 2832 // This file is part of the GNU C Library. 2833 // 2834 // The GNU C Library is free software; you can redistribute it and/or 2835 // modify it under the terms of the GNU Lesser General Public 2836 // License as published by the Free Software Foundation; either 2837 // version 2.1 of the License, or (at your option) any later version. 2838 // 2839 // The GNU C Library is distributed in the hope that it will be useful, 2840 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2841 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2842 // Lesser General Public License for more details. 2843 // 2844 // You should have received a copy of the GNU Lesser General Public 2845 // License along with the GNU C Library; if not, see 2846 // <https://www.gnu.org/licenses/>. 2847 2848 // Get definition of needed basic types. 2849 // bits/types.h -- definitions of __*_t types underlying *_t types. 2850 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2851 // This file is part of the GNU C Library. 2852 // 2853 // The GNU C Library is free software; you can redistribute it and/or 2854 // modify it under the terms of the GNU Lesser General Public 2855 // License as published by the Free Software Foundation; either 2856 // version 2.1 of the License, or (at your option) any later version. 2857 // 2858 // The GNU C Library is distributed in the hope that it will be useful, 2859 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2860 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2861 // Lesser General Public License for more details. 2862 // 2863 // You should have received a copy of the GNU Lesser General Public 2864 // License along with the GNU C Library; if not, see 2865 // <https://www.gnu.org/licenses/>. 2866 2867 // Never include this file directly; use <sys/types.h> instead. 2868 2869 // Get __FD_* definitions. 2870 // Copyright (C) 1997-2021 Free Software Foundation, Inc. 2871 // This file is part of the GNU C Library. 2872 // 2873 // The GNU C Library is free software; you can redistribute it and/or 2874 // modify it under the terms of the GNU Lesser General Public 2875 // License as published by the Free Software Foundation; either 2876 // version 2.1 of the License, or (at your option) any later version. 2877 // 2878 // The GNU C Library is distributed in the hope that it will be useful, 2879 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2880 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2881 // Lesser General Public License for more details. 2882 // 2883 // You should have received a copy of the GNU Lesser General Public 2884 // License along with the GNU C Library; if not, see 2885 // <https://www.gnu.org/licenses/>. 2886 2887 // We don't use `memset' because this would require a prototype and 2888 // the array isn't too big. 2889 2890 // Get sigset_t. 2891 2892 type X__sigset_t = struct{ F__val [16]uint64 } /* __sigset_t.h:8:3 */ 2893 2894 // A set of signals to be blocked, unblocked, or waited for. 2895 type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */ 2896 2897 // Get definition of timer specification structures. 2898 2899 // bits/types.h -- definitions of __*_t types underlying *_t types. 2900 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2901 // This file is part of the GNU C Library. 2902 // 2903 // The GNU C Library is free software; you can redistribute it and/or 2904 // modify it under the terms of the GNU Lesser General Public 2905 // License as published by the Free Software Foundation; either 2906 // version 2.1 of the License, or (at your option) any later version. 2907 // 2908 // The GNU C Library is distributed in the hope that it will be useful, 2909 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2910 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2911 // Lesser General Public License for more details. 2912 // 2913 // You should have received a copy of the GNU Lesser General Public 2914 // License along with the GNU C Library; if not, see 2915 // <https://www.gnu.org/licenses/>. 2916 2917 // Never include this file directly; use <sys/types.h> instead. 2918 2919 // A time value that is accurate to the nearest 2920 // microsecond but also has a range of years. 2921 type Timeval = struct { 2922 Ftv_sec X__time_t 2923 Ftv_usec X__suseconds_t 2924 } /* struct_timeval.h:8:1 */ 2925 2926 // NB: Include guard matches what <linux/time.h> uses. 2927 2928 // bits/types.h -- definitions of __*_t types underlying *_t types. 2929 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 2930 // This file is part of the GNU C Library. 2931 // 2932 // The GNU C Library is free software; you can redistribute it and/or 2933 // modify it under the terms of the GNU Lesser General Public 2934 // License as published by the Free Software Foundation; either 2935 // version 2.1 of the License, or (at your option) any later version. 2936 // 2937 // The GNU C Library is distributed in the hope that it will be useful, 2938 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2939 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2940 // Lesser General Public License for more details. 2941 // 2942 // You should have received a copy of the GNU Lesser General Public 2943 // License along with the GNU C Library; if not, see 2944 // <https://www.gnu.org/licenses/>. 2945 2946 // Never include this file directly; use <sys/types.h> instead. 2947 2948 // Endian macros for string.h functions 2949 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 2950 // This file is part of the GNU C Library. 2951 // 2952 // The GNU C Library is free software; you can redistribute it and/or 2953 // modify it under the terms of the GNU Lesser General Public 2954 // License as published by the Free Software Foundation; either 2955 // version 2.1 of the License, or (at your option) any later version. 2956 // 2957 // The GNU C Library is distributed in the hope that it will be useful, 2958 // but WITHOUT ANY WARRANTY; without even the implied warranty of 2959 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2960 // Lesser General Public License for more details. 2961 // 2962 // You should have received a copy of the GNU Lesser General Public 2963 // License along with the GNU C Library; if not, see 2964 // <http://www.gnu.org/licenses/>. 2965 2966 // POSIX.1b structure for a time value. This is like a `struct timeval' but 2967 // has nanoseconds instead of microseconds. 2968 type Timespec = struct { 2969 Ftv_sec X__time_t 2970 Ftv_nsec X__syscall_slong_t 2971 } /* struct_timespec.h:11:1 */ 2972 2973 type Suseconds_t = X__suseconds_t /* select.h:43:23 */ 2974 2975 // The fd_set member is required to be an array of longs. 2976 type X__fd_mask = int64 /* select.h:49:18 */ 2977 2978 // Some versions of <linux/posix_types.h> define this macros. 2979 // It's easier to assume 8-bit bytes than to get CHAR_BIT. 2980 2981 // fd_set for select and pselect. 2982 type Fd_set = struct{ F__fds_bits [16]X__fd_mask } /* select.h:70:5 */ 2983 2984 // Maximum number of file descriptors in `fd_set'. 2985 2986 // Sometimes the fd_set member is assumed to have this type. 2987 type Fd_mask = X__fd_mask /* select.h:77:19 */ 2988 2989 // Define some inlines helping to catch common problems. 2990 2991 type Blksize_t = X__blksize_t /* types.h:185:21 */ 2992 2993 // Types from the Large File Support interface. 2994 type Blkcnt_t = X__blkcnt64_t /* types.h:205:22 */ // Type to count number of disk blocks. 2995 type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks. 2996 type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes. 2997 2998 type Blkcnt64_t = X__blkcnt64_t /* types.h:219:22 */ // Type to count number of disk blocks. 2999 type Fsblkcnt64_t = X__fsblkcnt64_t /* types.h:220:24 */ // Type to count file system blocks. 3000 type Fsfilcnt64_t = X__fsfilcnt64_t /* types.h:221:24 */ // Type to count file system inodes. 3001 3002 // Now add the thread types. 3003 // Declaration of common pthread types for all architectures. 3004 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 3005 // This file is part of the GNU C Library. 3006 // 3007 // The GNU C Library is free software; you can redistribute it and/or 3008 // modify it under the terms of the GNU Lesser General Public 3009 // License as published by the Free Software Foundation; either 3010 // version 2.1 of the License, or (at your option) any later version. 3011 // 3012 // The GNU C Library is distributed in the hope that it will be useful, 3013 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3014 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3015 // Lesser General Public License for more details. 3016 // 3017 // You should have received a copy of the GNU Lesser General Public 3018 // License along with the GNU C Library; if not, see 3019 // <https://www.gnu.org/licenses/>. 3020 3021 // For internal mutex and condition variable definitions. 3022 // Common threading primitives definitions for both POSIX and C11. 3023 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 3024 // This file is part of the GNU C Library. 3025 // 3026 // The GNU C Library is free software; you can redistribute it and/or 3027 // modify it under the terms of the GNU Lesser General Public 3028 // License as published by the Free Software Foundation; either 3029 // version 2.1 of the License, or (at your option) any later version. 3030 // 3031 // The GNU C Library is distributed in the hope that it will be useful, 3032 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3033 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3034 // Lesser General Public License for more details. 3035 // 3036 // You should have received a copy of the GNU Lesser General Public 3037 // License along with the GNU C Library; if not, see 3038 // <https://www.gnu.org/licenses/>. 3039 3040 // Arch-specific definitions. Each architecture must define the following 3041 // macros to define the expected sizes of pthread data types: 3042 // 3043 // __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. 3044 // __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. 3045 // __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. 3046 // __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. 3047 // __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. 3048 // __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. 3049 // __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. 3050 // __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. 3051 // __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. 3052 // 3053 // The additional macro defines any constraint for the lock alignment 3054 // inside the thread structures: 3055 // 3056 // __LOCK_ALIGNMENT - for internal lock/futex usage. 3057 // 3058 // Same idea but for the once locking primitive: 3059 // 3060 // __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. 3061 3062 // Machine-specific pthread type layouts. RISC-V version. 3063 // Copyright (C) 2011-2021 Free Software Foundation, Inc. 3064 // This file is part of the GNU C Library. 3065 // 3066 // The GNU C Library is free software; you can redistribute it and/or 3067 // modify it under the terms of the GNU Lesser General Public 3068 // License as published by the Free Software Foundation; either 3069 // version 2.1 of the License, or (at your option) any later version. 3070 // 3071 // The GNU C Library is distributed in the hope that it will be useful, 3072 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3073 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3074 // Lesser General Public License for more details. 3075 // 3076 // You should have received a copy of the GNU Lesser General Public 3077 // License along with the GNU C Library. If not, see 3078 // <https://www.gnu.org/licenses/>. 3079 3080 // Endian macros for string.h functions 3081 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 3082 // This file is part of the GNU C Library. 3083 // 3084 // The GNU C Library is free software; you can redistribute it and/or 3085 // modify it under the terms of the GNU Lesser General Public 3086 // License as published by the Free Software Foundation; either 3087 // version 2.1 of the License, or (at your option) any later version. 3088 // 3089 // The GNU C Library is distributed in the hope that it will be useful, 3090 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3091 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3092 // Lesser General Public License for more details. 3093 // 3094 // You should have received a copy of the GNU Lesser General Public 3095 // License along with the GNU C Library; if not, see 3096 // <http://www.gnu.org/licenses/>. 3097 3098 // Common definition of pthread_mutex_t. 3099 3100 type X__pthread_internal_list = struct { 3101 F__prev uintptr 3102 F__next uintptr 3103 } /* thread-shared-types.h:49:9 */ 3104 3105 // Type to count file system inodes. 3106 3107 // Now add the thread types. 3108 // Declaration of common pthread types for all architectures. 3109 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 3110 // This file is part of the GNU C Library. 3111 // 3112 // The GNU C Library is free software; you can redistribute it and/or 3113 // modify it under the terms of the GNU Lesser General Public 3114 // License as published by the Free Software Foundation; either 3115 // version 2.1 of the License, or (at your option) any later version. 3116 // 3117 // The GNU C Library is distributed in the hope that it will be useful, 3118 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3119 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3120 // Lesser General Public License for more details. 3121 // 3122 // You should have received a copy of the GNU Lesser General Public 3123 // License along with the GNU C Library; if not, see 3124 // <https://www.gnu.org/licenses/>. 3125 3126 // For internal mutex and condition variable definitions. 3127 // Common threading primitives definitions for both POSIX and C11. 3128 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 3129 // This file is part of the GNU C Library. 3130 // 3131 // The GNU C Library is free software; you can redistribute it and/or 3132 // modify it under the terms of the GNU Lesser General Public 3133 // License as published by the Free Software Foundation; either 3134 // version 2.1 of the License, or (at your option) any later version. 3135 // 3136 // The GNU C Library is distributed in the hope that it will be useful, 3137 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3138 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3139 // Lesser General Public License for more details. 3140 // 3141 // You should have received a copy of the GNU Lesser General Public 3142 // License along with the GNU C Library; if not, see 3143 // <https://www.gnu.org/licenses/>. 3144 3145 // Arch-specific definitions. Each architecture must define the following 3146 // macros to define the expected sizes of pthread data types: 3147 // 3148 // __SIZEOF_PTHREAD_ATTR_T - size of pthread_attr_t. 3149 // __SIZEOF_PTHREAD_MUTEX_T - size of pthread_mutex_t. 3150 // __SIZEOF_PTHREAD_MUTEXATTR_T - size of pthread_mutexattr_t. 3151 // __SIZEOF_PTHREAD_COND_T - size of pthread_cond_t. 3152 // __SIZEOF_PTHREAD_CONDATTR_T - size of pthread_condattr_t. 3153 // __SIZEOF_PTHREAD_RWLOCK_T - size of pthread_rwlock_t. 3154 // __SIZEOF_PTHREAD_RWLOCKATTR_T - size of pthread_rwlockattr_t. 3155 // __SIZEOF_PTHREAD_BARRIER_T - size of pthread_barrier_t. 3156 // __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t. 3157 // 3158 // The additional macro defines any constraint for the lock alignment 3159 // inside the thread structures: 3160 // 3161 // __LOCK_ALIGNMENT - for internal lock/futex usage. 3162 // 3163 // Same idea but for the once locking primitive: 3164 // 3165 // __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition. 3166 3167 // Machine-specific pthread type layouts. RISC-V version. 3168 // Copyright (C) 2011-2021 Free Software Foundation, Inc. 3169 // This file is part of the GNU C Library. 3170 // 3171 // The GNU C Library is free software; you can redistribute it and/or 3172 // modify it under the terms of the GNU Lesser General Public 3173 // License as published by the Free Software Foundation; either 3174 // version 2.1 of the License, or (at your option) any later version. 3175 // 3176 // The GNU C Library is distributed in the hope that it will be useful, 3177 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3178 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3179 // Lesser General Public License for more details. 3180 // 3181 // You should have received a copy of the GNU Lesser General Public 3182 // License along with the GNU C Library. If not, see 3183 // <https://www.gnu.org/licenses/>. 3184 3185 // Endian macros for string.h functions 3186 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 3187 // This file is part of the GNU C Library. 3188 // 3189 // The GNU C Library is free software; you can redistribute it and/or 3190 // modify it under the terms of the GNU Lesser General Public 3191 // License as published by the Free Software Foundation; either 3192 // version 2.1 of the License, or (at your option) any later version. 3193 // 3194 // The GNU C Library is distributed in the hope that it will be useful, 3195 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3196 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3197 // Lesser General Public License for more details. 3198 // 3199 // You should have received a copy of the GNU Lesser General Public 3200 // License along with the GNU C Library; if not, see 3201 // <http://www.gnu.org/licenses/>. 3202 3203 // Common definition of pthread_mutex_t. 3204 3205 type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */ 3206 3207 type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */ 3208 3209 type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */ 3210 3211 // Arch-specific mutex definitions. A generic implementation is provided 3212 // by sysdeps/nptl/bits/struct_mutex.h. If required, an architecture 3213 // can override it by defining: 3214 // 3215 // 1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t 3216 // definition). It should contains at least the internal members 3217 // defined in the generic version. 3218 // 3219 // 2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with 3220 // atomic operations. 3221 // 3222 // 3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization. 3223 // It should initialize the mutex internal flag. 3224 3225 // Default mutex implementation struct definitions. 3226 // Copyright (C) 2019-2021 Free Software Foundation, Inc. 3227 // This file is part of the GNU C Library. 3228 // 3229 // The GNU C Library is free software; you can redistribute it and/or 3230 // modify it under the terms of the GNU Lesser General Public 3231 // License as published by the Free Software Foundation; either 3232 // version 2.1 of the License, or (at your option) any later version. 3233 // 3234 // The GNU C Library is distributed in the hope that it will be useful, 3235 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3236 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3237 // Lesser General Public License for more details. 3238 // 3239 // You should have received a copy of the GNU Lesser General Public 3240 // License along with the GNU C Library; if not, see 3241 // <http://www.gnu.org/licenses/>. 3242 3243 // Generic struct for both POSIX and C11 mutexes. New ports are expected 3244 // to use the default layout, however architecture can redefine it to 3245 // add arch-specific extension (such as lock-elision). The struct have 3246 // a size of 32 bytes on LP32 and 40 bytes on LP64 architectures. 3247 3248 type X__pthread_mutex_s = struct { 3249 F__lock int32 3250 F__count uint32 3251 F__owner int32 3252 F__nusers uint32 3253 F__kind int32 3254 F__spins int32 3255 F__list X__pthread_list_t 3256 } /* struct_mutex.h:27:1 */ 3257 3258 // Arch-sepecific read-write lock definitions. A generic implementation is 3259 // provided by struct_rwlock.h. If required, an architecture can override it 3260 // by defining: 3261 // 3262 // 1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition). 3263 // It should contain at least the internal members defined in the 3264 // generic version. 3265 // 3266 // 2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization. 3267 // It should initialize the rwlock internal type. 3268 3269 // RISC-V internal rwlock struct definitions. 3270 // Copyright (C) 2019-2021 Free Software Foundation, Inc. 3271 // 3272 // This file is part of the GNU C Library. 3273 // 3274 // The GNU C Library is free software; you can redistribute it and/or 3275 // modify it under the terms of the GNU Lesser General Public 3276 // License as published by the Free Software Foundation; either 3277 // version 2.1 of the License, or (at your option) any later version. 3278 // 3279 // The GNU C Library is distributed in the hope that it will be useful, 3280 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3281 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3282 // Lesser General Public License for more details. 3283 // 3284 // You should have received a copy of the GNU Lesser General Public 3285 // License along with the GNU C Library; if not, see 3286 // <https://www.gnu.org/licenses/>. 3287 3288 // There is a lot of padding in this structure. While it's not strictly 3289 // necessary on RISC-V, we're going to leave it in to be on the safe side in 3290 // case it's needed in the future. Most other architectures have the padding, 3291 // so this gives us the same extensibility as everyone else has. 3292 type X__pthread_rwlock_arch_t = struct { 3293 F__readers uint32 3294 F__writers uint32 3295 F__wrphase_futex uint32 3296 F__writers_futex uint32 3297 F__pad3 uint32 3298 F__pad4 uint32 3299 F__cur_writer int32 3300 F__shared int32 3301 F__pad1 uint64 3302 F__pad2 uint64 3303 F__flags uint32 3304 F__ccgo_pad1 [4]byte 3305 } /* struct_rwlock.h:27:1 */ 3306 3307 // Common definition of pthread_cond_t. 3308 3309 type X__pthread_cond_s = struct { 3310 F__0 struct{ F__wseq uint64 } 3311 F__8 struct{ F__g1_start uint64 } 3312 F__g_refs [2]uint32 3313 F__g_size [2]uint32 3314 F__g1_orig_size uint32 3315 F__wrefs uint32 3316 F__g_signals [2]uint32 3317 } /* thread-shared-types.h:92:1 */ 3318 3319 type X__tss_t = uint32 /* thread-shared-types.h:119:22 */ 3320 type X__thrd_t = uint64 /* thread-shared-types.h:120:27 */ 3321 3322 type X__once_flag = struct{ F__data int32 } /* thread-shared-types.h:125:3 */ 3323 3324 // Thread identifiers. The structure of the attribute type is not 3325 // exposed on purpose. 3326 type Pthread_t = uint64 /* pthreadtypes.h:27:27 */ 3327 3328 // Data structures for mutex handling. The structure of the attribute 3329 // type is not exposed on purpose. 3330 type Pthread_mutexattr_t = struct { 3331 F__ccgo_pad1 [0]uint32 3332 F__size [4]uint8 3333 } /* pthreadtypes.h:36:3 */ 3334 3335 // Data structure for condition variable handling. The structure of 3336 // the attribute type is not exposed on purpose. 3337 type Pthread_condattr_t = struct { 3338 F__ccgo_pad1 [0]uint32 3339 F__size [4]uint8 3340 } /* pthreadtypes.h:45:3 */ 3341 3342 // Keys for thread-specific data 3343 type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */ 3344 3345 // Once-only execution 3346 type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */ 3347 3348 type Pthread_attr_t1 = struct { 3349 F__ccgo_pad1 [0]uint64 3350 F__size [56]uint8 3351 } /* pthreadtypes.h:56:1 */ 3352 3353 type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */ 3354 3355 type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */ 3356 3357 type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */ 3358 3359 // Data structure for reader-writer lock variable handling. The 3360 // structure of the attribute type is deliberately not exposed. 3361 type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */ 3362 3363 type Pthread_rwlockattr_t = struct { 3364 F__ccgo_pad1 [0]uint64 3365 F__size [8]uint8 3366 } /* pthreadtypes.h:97:3 */ 3367 3368 // POSIX spinlock data type. 3369 type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */ 3370 3371 // POSIX barriers data type. The structure of the type is 3372 // deliberately not exposed. 3373 type Pthread_barrier_t = struct { 3374 F__ccgo_pad1 [0]uint64 3375 F__size [32]uint8 3376 } /* pthreadtypes.h:112:3 */ 3377 3378 type Pthread_barrierattr_t = struct { 3379 F__ccgo_pad1 [0]uint32 3380 F__size [4]uint8 3381 } /* pthreadtypes.h:118:3 */ 3382 3383 // Copyright (C) 1989-2021 Free Software Foundation, Inc. 3384 // 3385 // This file is part of GCC. 3386 // 3387 // GCC is free software; you can redistribute it and/or modify 3388 // it under the terms of the GNU General Public License as published by 3389 // the Free Software Foundation; either version 3, or (at your option) 3390 // any later version. 3391 // 3392 // GCC is distributed in the hope that it will be useful, 3393 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3394 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 3395 // GNU General Public License for more details. 3396 // 3397 // Under Section 7 of GPL version 3, you are granted additional 3398 // permissions described in the GCC Runtime Library Exception, version 3399 // 3.1, as published by the Free Software Foundation. 3400 // 3401 // You should have received a copy of the GNU General Public License and 3402 // a copy of the GCC Runtime Library Exception along with this program; 3403 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 3404 // <http://www.gnu.org/licenses/>. 3405 3406 // ISO C Standard: 7.15 Variable arguments <stdarg.h> 3407 3408 // Define __gnuc_va_list. 3409 3410 type X__gnuc_va_list = X__builtin_va_list /* stdarg.h:40:27 */ 3411 3412 // Define the standard macros for the user, 3413 // if this invocation was from the user program. 3414 3415 // Define va_list, if desired, from __gnuc_va_list. 3416 // We deliberately do not define va_list when called from 3417 // stdio.h, because ANSI C says that stdio.h is not supposed to define 3418 // va_list. stdio.h needs to have access to that data type, 3419 // but must not use that name. It should use the name __gnuc_va_list, 3420 // which is safe because it is reserved for the implementation. 3421 3422 // The macro _VA_LIST_ is the same thing used by this file in Ultrix. 3423 // But on BSD NET2 we must not test or define or undef it. 3424 // (Note that the comments in NET 2's ansi.h 3425 // are incorrect for _VA_LIST_--see stdio.h!) 3426 // The macro _VA_LIST_DEFINED is used in Windows NT 3.5 3427 // The macro _VA_LIST is used in SCO Unix 3.2. 3428 // The macro _VA_LIST_T_H is used in the Bull dpx2 3429 // The macro __va_list__ is used by BeOS. 3430 type Va_list = X__gnuc_va_list /* stdarg.h:99:24 */ 3431 3432 // a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and 3433 // "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even 3434 // though the former does not conform to the LFS document), but considering 3435 // both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as 3436 // equivalently requesting no 64-bit operations 3437 3438 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 3439 // This file is part of the GNU C Library. 3440 // 3441 // The GNU C Library is free software; you can redistribute it and/or 3442 // modify it under the terms of the GNU Lesser General Public 3443 // License as published by the Free Software Foundation; either 3444 // version 2.1 of the License, or (at your option) any later version. 3445 // 3446 // The GNU C Library is distributed in the hope that it will be useful, 3447 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3448 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3449 // Lesser General Public License for more details. 3450 // 3451 // You should have received a copy of the GNU Lesser General Public 3452 // License along with the GNU C Library; if not, see 3453 // <https://www.gnu.org/licenses/>. 3454 3455 // POSIX Standard: 2.10 Symbolic Constants <unistd.h> 3456 3457 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 3458 // This file is part of the GNU C Library. 3459 // 3460 // The GNU C Library is free software; you can redistribute it and/or 3461 // modify it under the terms of the GNU Lesser General Public 3462 // License as published by the Free Software Foundation; either 3463 // version 2.1 of the License, or (at your option) any later version. 3464 // 3465 // The GNU C Library is distributed in the hope that it will be useful, 3466 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3467 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3468 // Lesser General Public License for more details. 3469 // 3470 // You should have received a copy of the GNU Lesser General Public 3471 // License along with the GNU C Library; if not, see 3472 // <https://www.gnu.org/licenses/>. 3473 3474 // These may be used to determine what facilities are present at compile time. 3475 // Their values can be obtained at run time from `sysconf'. 3476 3477 // POSIX Standard approved as ISO/IEC 9945-1 as of September 2008. 3478 3479 // These are not #ifdef __USE_POSIX2 because they are 3480 // in the theoretically application-owned namespace. 3481 3482 // The utilities on GNU systems also correspond to this version. 3483 3484 // The utilities on GNU systems also correspond to this version. 3485 3486 // This symbol was required until the 2001 edition of POSIX. 3487 3488 // If defined, the implementation supports the 3489 // C Language Bindings Option. 3490 3491 // If defined, the implementation supports the 3492 // C Language Development Utilities Option. 3493 3494 // If defined, the implementation supports the 3495 // Software Development Utilities Option. 3496 3497 // If defined, the implementation supports the 3498 // creation of locales with the localedef utility. 3499 3500 // X/Open version number to which the library conforms. It is selectable. 3501 3502 // Commands and utilities from XPG4 are available. 3503 3504 // We are compatible with the old published standards as well. 3505 3506 // The X/Open Unix extensions are available. 3507 3508 // The enhanced internationalization capabilities according to XPG4.2 3509 // are present. 3510 3511 // The legacy interfaces are also available. 3512 3513 // Get values of POSIX options: 3514 // 3515 // If these symbols are defined, the corresponding features are 3516 // always available. If not, they may be available sometimes. 3517 // The current values can be obtained with `sysconf'. 3518 // 3519 // _POSIX_JOB_CONTROL Job control is supported. 3520 // _POSIX_SAVED_IDS Processes have a saved set-user-ID 3521 // and a saved set-group-ID. 3522 // _POSIX_REALTIME_SIGNALS Real-time, queued signals are supported. 3523 // _POSIX_PRIORITY_SCHEDULING Priority scheduling is supported. 3524 // _POSIX_TIMERS POSIX.4 clocks and timers are supported. 3525 // _POSIX_ASYNCHRONOUS_IO Asynchronous I/O is supported. 3526 // _POSIX_PRIORITIZED_IO Prioritized asynchronous I/O is supported. 3527 // _POSIX_SYNCHRONIZED_IO Synchronizing file data is supported. 3528 // _POSIX_FSYNC The fsync function is present. 3529 // _POSIX_MAPPED_FILES Mapping of files to memory is supported. 3530 // _POSIX_MEMLOCK Locking of all memory is supported. 3531 // _POSIX_MEMLOCK_RANGE Locking of ranges of memory is supported. 3532 // _POSIX_MEMORY_PROTECTION Setting of memory protections is supported. 3533 // _POSIX_MESSAGE_PASSING POSIX.4 message queues are supported. 3534 // _POSIX_SEMAPHORES POSIX.4 counting semaphores are supported. 3535 // _POSIX_SHARED_MEMORY_OBJECTS POSIX.4 shared memory objects are supported. 3536 // _POSIX_THREADS POSIX.1c pthreads are supported. 3537 // _POSIX_THREAD_ATTR_STACKADDR Thread stack address attribute option supported. 3538 // _POSIX_THREAD_ATTR_STACKSIZE Thread stack size attribute option supported. 3539 // _POSIX_THREAD_SAFE_FUNCTIONS Thread-safe functions are supported. 3540 // _POSIX_THREAD_PRIORITY_SCHEDULING 3541 // POSIX.1c thread execution scheduling supported. 3542 // _POSIX_THREAD_PRIO_INHERIT Thread priority inheritance option supported. 3543 // _POSIX_THREAD_PRIO_PROTECT Thread priority protection option supported. 3544 // _POSIX_THREAD_PROCESS_SHARED Process-shared synchronization supported. 3545 // _POSIX_PII Protocol-independent interfaces are supported. 3546 // _POSIX_PII_XTI XTI protocol-indep. interfaces are supported. 3547 // _POSIX_PII_SOCKET Socket protocol-indep. interfaces are supported. 3548 // _POSIX_PII_INTERNET Internet family of protocols supported. 3549 // _POSIX_PII_INTERNET_STREAM Connection-mode Internet protocol supported. 3550 // _POSIX_PII_INTERNET_DGRAM Connectionless Internet protocol supported. 3551 // _POSIX_PII_OSI ISO/OSI family of protocols supported. 3552 // _POSIX_PII_OSI_COTS Connection-mode ISO/OSI service supported. 3553 // _POSIX_PII_OSI_CLTS Connectionless ISO/OSI service supported. 3554 // _POSIX_POLL Implementation supports `poll' function. 3555 // _POSIX_SELECT Implementation supports `select' and `pselect'. 3556 // 3557 // _XOPEN_REALTIME X/Open realtime support is available. 3558 // _XOPEN_REALTIME_THREADS X/Open realtime thread support is available. 3559 // _XOPEN_SHM Shared memory interface according to XPG4.2. 3560 // 3561 // _XBS5_ILP32_OFF32 Implementation provides environment with 32-bit 3562 // int, long, pointer, and off_t types. 3563 // _XBS5_ILP32_OFFBIG Implementation provides environment with 32-bit 3564 // int, long, and pointer and off_t with at least 3565 // 64 bits. 3566 // _XBS5_LP64_OFF64 Implementation provides environment with 32-bit 3567 // int, and 64-bit long, pointer, and off_t types. 3568 // _XBS5_LPBIG_OFFBIG Implementation provides environment with at 3569 // least 32 bits int and long, pointer, and off_t 3570 // with at least 64 bits. 3571 // 3572 // If any of these symbols is defined as -1, the corresponding option is not 3573 // true for any file. If any is defined as other than -1, the corresponding 3574 // option is true for all files. If a symbol is not defined at all, the value 3575 // for a specific file can be obtained from `pathconf' and `fpathconf'. 3576 // 3577 // _POSIX_CHOWN_RESTRICTED Only the super user can use `chown' to change 3578 // the owner of a file. `chown' can only be used 3579 // to change the group ID of a file to a group of 3580 // which the calling process is a member. 3581 // _POSIX_NO_TRUNC Pathname components longer than 3582 // NAME_MAX generate an error. 3583 // _POSIX_VDISABLE If defined, if the value of an element of the 3584 // `c_cc' member of `struct termios' is 3585 // _POSIX_VDISABLE, no character will have the 3586 // effect associated with that element. 3587 // _POSIX_SYNC_IO Synchronous I/O may be performed. 3588 // _POSIX_ASYNC_IO Asynchronous I/O may be performed. 3589 // _POSIX_PRIO_IO Prioritized Asynchronous I/O may be performed. 3590 // 3591 // Support for the Large File Support interface is not generally available. 3592 // If it is available the following constants are defined to one. 3593 // _LFS64_LARGEFILE Low-level I/O supports large files. 3594 // _LFS64_STDIO Standard I/O supports large files. 3595 // 3596 3597 // Define POSIX options for Linux. 3598 // Copyright (C) 1996-2021 Free Software Foundation, Inc. 3599 // This file is part of the GNU C Library. 3600 // 3601 // The GNU C Library is free software; you can redistribute it and/or 3602 // modify it under the terms of the GNU Lesser General Public License as 3603 // published by the Free Software Foundation; either version 2.1 of the 3604 // License, or (at your option) any later version. 3605 // 3606 // The GNU C Library is distributed in the hope that it will be useful, 3607 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3608 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3609 // Lesser General Public License for more details. 3610 // 3611 // You should have received a copy of the GNU Lesser General Public 3612 // License along with the GNU C Library; see the file COPYING.LIB. If 3613 // not, see <https://www.gnu.org/licenses/>. 3614 3615 // Job control is supported. 3616 3617 // Processes have a saved set-user-ID and a saved set-group-ID. 3618 3619 // Priority scheduling is not supported with the correct semantics, 3620 // but GNU/Linux applications expect that the corresponding interfaces 3621 // are available, even though the semantics do not meet the POSIX 3622 // requirements. See glibc bug 14829. 3623 3624 // Synchronizing file data is supported. 3625 3626 // The fsync function is present. 3627 3628 // Mapping of files to memory is supported. 3629 3630 // Locking of all memory is supported. 3631 3632 // Locking of ranges of memory is supported. 3633 3634 // Setting of memory protections is supported. 3635 3636 // Some filesystems allow all users to change file ownership. 3637 3638 // `c_cc' member of 'struct termios' structure can be disabled by 3639 // using the value _POSIX_VDISABLE. 3640 3641 // Filenames are not silently truncated. 3642 3643 // X/Open realtime support is available. 3644 3645 // X/Open thread realtime support is available. 3646 3647 // XPG4.2 shared memory is supported. 3648 3649 // Tell we have POSIX threads. 3650 3651 // We have the reentrant functions described in POSIX. 3652 3653 // We provide priority scheduling for threads. 3654 3655 // We support user-defined stack sizes. 3656 3657 // We support user-defined stacks. 3658 3659 // We support priority inheritence. 3660 3661 // We support priority protection, though only for non-robust 3662 // mutexes. 3663 3664 // We support priority inheritence for robust mutexes. 3665 3666 // We do not support priority protection for robust mutexes. 3667 3668 // We support POSIX.1b semaphores. 3669 3670 // Real-time signals are supported. 3671 3672 // We support asynchronous I/O. 3673 // Alternative name for Unix98. 3674 // Support for prioritization is also available. 3675 3676 // The LFS support in asynchronous I/O is also available. 3677 3678 // The rest of the LFS is also available. 3679 3680 // POSIX shared memory objects are implemented. 3681 3682 // CPU-time clocks support needs to be checked at runtime. 3683 3684 // Clock support in threads must be also checked at runtime. 3685 3686 // GNU libc provides regular expression handling. 3687 3688 // Reader/Writer locks are available. 3689 3690 // We have a POSIX shell. 3691 3692 // We support the Timeouts option. 3693 3694 // We support spinlocks. 3695 3696 // The `spawn' function family is supported. 3697 3698 // We have POSIX timers. 3699 3700 // The barrier functions are available. 3701 3702 // POSIX message queues are available. 3703 3704 // Thread process-shared synchronization is supported. 3705 3706 // The monotonic clock might be available. 3707 3708 // The clock selection interfaces are available. 3709 3710 // Advisory information interfaces are available. 3711 3712 // IPv6 support is available. 3713 3714 // Raw socket support is available. 3715 3716 // We have at least one terminal. 3717 3718 // Neither process nor thread sporadic server interfaces is available. 3719 3720 // trace.h is not available. 3721 3722 // Typed memory objects are not available. 3723 3724 // Get the environment definitions from Unix98. 3725 // Copyright (C) 2020-2021 Free Software Foundation, Inc. 3726 // This file is part of the GNU C Library. 3727 // 3728 // The GNU C Library is free software; you can redistribute it and/or 3729 // modify it under the terms of the GNU Lesser General Public 3730 // License as published by the Free Software Foundation; either 3731 // version 2.1 of the License, or (at your option) any later version. 3732 // 3733 // The GNU C Library is distributed in the hope that it will be useful, 3734 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3735 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3736 // Lesser General Public License for more details. 3737 // 3738 // You should have received a copy of the GNU Lesser General Public 3739 // License along with the GNU C Library; if not, see 3740 // <https://www.gnu.org/licenses/>. 3741 3742 // Determine the wordsize from the preprocessor defines. RISC-V version. 3743 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 3744 // This file is part of the GNU C Library. 3745 // 3746 // The GNU C Library is free software; you can redistribute it and/or 3747 // modify it under the terms of the GNU Lesser General Public 3748 // License as published by the Free Software Foundation; either 3749 // version 2.1 of the License, or (at your option) any later version. 3750 // 3751 // The GNU C Library is distributed in the hope that it will be useful, 3752 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3753 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3754 // Lesser General Public License for more details. 3755 // 3756 // You should have received a copy of the GNU Lesser General Public 3757 // License along with the GNU C Library. If not, see 3758 // <https://www.gnu.org/licenses/>. 3759 3760 // This header should define the following symbols under the described 3761 // situations. A value `1' means that the model is always supported, 3762 // `-1' means it is never supported. Undefined means it cannot be 3763 // statically decided. 3764 // 3765 // _POSIX_V7_ILP32_OFF32 32bit int, long, pointers, and off_t type 3766 // _POSIX_V7_ILP32_OFFBIG 32bit int, long, and pointers and larger off_t type 3767 // 3768 // _POSIX_V7_LP64_OFF32 64bit long and pointers and 32bit off_t type 3769 // _POSIX_V7_LPBIG_OFFBIG 64bit long and pointers and large off_t type 3770 // 3771 // The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG, 3772 // _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32, 3773 // _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were 3774 // used in previous versions of the Unix standard and are available 3775 // only for compatibility. 3776 3777 // We can never provide environments with 32-bit wide pointers. 3778 // We also have no use (for now) for an environment with bigger pointers 3779 // and offsets. 3780 3781 // By default we have 64-bit wide `long int', pointers and `off_t'. 3782 3783 // Standard file descriptors. 3784 3785 // All functions that are not declared anywhere else. 3786 3787 // bits/types.h -- definitions of __*_t types underlying *_t types. 3788 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 3789 // This file is part of the GNU C Library. 3790 // 3791 // The GNU C Library is free software; you can redistribute it and/or 3792 // modify it under the terms of the GNU Lesser General Public 3793 // License as published by the Free Software Foundation; either 3794 // version 2.1 of the License, or (at your option) any later version. 3795 // 3796 // The GNU C Library is distributed in the hope that it will be useful, 3797 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3798 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3799 // Lesser General Public License for more details. 3800 // 3801 // You should have received a copy of the GNU Lesser General Public 3802 // License along with the GNU C Library; if not, see 3803 // <https://www.gnu.org/licenses/>. 3804 3805 // Never include this file directly; use <sys/types.h> instead. 3806 3807 // Copyright (C) 1989-2021 Free Software Foundation, Inc. 3808 // 3809 // This file is part of GCC. 3810 // 3811 // GCC is free software; you can redistribute it and/or modify 3812 // it under the terms of the GNU General Public License as published by 3813 // the Free Software Foundation; either version 3, or (at your option) 3814 // any later version. 3815 // 3816 // GCC is distributed in the hope that it will be useful, 3817 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3818 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 3819 // GNU General Public License for more details. 3820 // 3821 // Under Section 7 of GPL version 3, you are granted additional 3822 // permissions described in the GCC Runtime Library Exception, version 3823 // 3.1, as published by the Free Software Foundation. 3824 // 3825 // You should have received a copy of the GNU General Public License and 3826 // a copy of the GCC Runtime Library Exception along with this program; 3827 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 3828 // <http://www.gnu.org/licenses/>. 3829 3830 // ISO C Standard: 7.17 Common definitions <stddef.h> 3831 3832 // Any one of these symbols __need_* means that GNU libc 3833 // wants us just to define one data type. So don't define 3834 // the symbols that indicate this file's entire job has been done. 3835 3836 // This avoids lossage on SunOS but only if stdtypes.h comes first. 3837 // There's no way to win with the other order! Sun lossage. 3838 3839 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 3840 // Just ignore it. 3841 3842 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 3843 // _TYPE_size_t which will typedef size_t. fixincludes patched the 3844 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 3845 // not defined, and so that defining this macro defines _GCC_SIZE_T. 3846 // If we find that the macros are still defined at this point, we must 3847 // invoke them so that the type is defined as expected. 3848 3849 // In case nobody has defined these types, but we aren't running under 3850 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 3851 // __WCHAR_TYPE__ have reasonable values. This can happen if the 3852 // parts of GCC is compiled by an older compiler, that actually 3853 // include gstddef.h, such as collect2. 3854 3855 // Signed type of difference of two pointers. 3856 3857 // Define this type if we are doing the whole job, 3858 // or if we want this type in particular. 3859 3860 // If this symbol has done its job, get rid of it. 3861 3862 // Unsigned type of `sizeof' something. 3863 3864 // Define this type if we are doing the whole job, 3865 // or if we want this type in particular. 3866 3867 // Wide character type. 3868 // Locale-writers should change this as necessary to 3869 // be big enough to hold unique values not between 0 and 127, 3870 // and not (wchar_t) -1, for each defined multibyte character. 3871 3872 // Define this type if we are doing the whole job, 3873 // or if we want this type in particular. 3874 3875 // A null pointer constant. 3876 3877 // Offset of member MEMBER in a struct of type TYPE. 3878 3879 // The Single Unix specification says that some more types are 3880 // available here. 3881 3882 type Useconds_t = X__useconds_t /* unistd.h:255:22 */ 3883 3884 type Intptr_t = X__intptr_t /* unistd.h:267:20 */ 3885 3886 type Socklen_t = X__socklen_t /* unistd.h:274:21 */ 3887 3888 // Define some macros helping to catch buffer overflows. 3889 3890 // System-specific extensions. 3891 // System-specific extensions of <unistd.h>, Linux version. 3892 // Copyright (C) 2019-2021 Free Software Foundation, Inc. 3893 // This file is part of the GNU C Library. 3894 // 3895 // The GNU C Library is free software; you can redistribute it and/or 3896 // modify it under the terms of the GNU Lesser General Public 3897 // License as published by the Free Software Foundation; either 3898 // version 2.1 of the License, or (at your option) any later version. 3899 // 3900 // The GNU C Library is distributed in the hope that it will be useful, 3901 // but WITHOUT ANY WARRANTY; without even the implied warranty of 3902 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 3903 // Lesser General Public License for more details. 3904 // 3905 // You should have received a copy of the GNU Lesser General Public 3906 // License along with the GNU C Library; if not, see 3907 // <https://www.gnu.org/licenses/>. 3908 3909 // MVS linker does not support external names larger than 8 bytes 3910 3911 // 3912 // The 'zlib' compression library provides in-memory compression and 3913 // decompression functions, including integrity checks of the uncompressed data. 3914 // This version of the library supports only one compression method (deflation) 3915 // but other algorithms will be added later and will have the same stream 3916 // interface. 3917 // 3918 // Compression can be done in a single step if the buffers are large enough, 3919 // or can be done by repeated calls of the compression function. In the latter 3920 // case, the application must provide more input and/or consume the output 3921 // (providing more output space) before each call. 3922 // 3923 // The compressed data format used by default by the in-memory functions is 3924 // the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped 3925 // around a deflate stream, which is itself documented in RFC 1951. 3926 // 3927 // The library also supports reading and writing files in gzip (.gz) format 3928 // with an interface similar to that of stdio using the functions that start 3929 // with "gz". The gzip format is different from the zlib format. gzip is a 3930 // gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. 3931 // 3932 // This library can optionally read and write gzip and raw deflate streams in 3933 // memory as well. 3934 // 3935 // The zlib format was designed to be compact and fast for use in memory 3936 // and on communications channels. The gzip format was designed for single- 3937 // file compression on file systems, has a larger header than zlib to maintain 3938 // directory information, and uses a different, slower check method than zlib. 3939 // 3940 // The library does not install any signal handler. The decoder checks 3941 // the consistency of the compressed data, so the library should never crash 3942 // even in the case of corrupted input. 3943 3944 type Alloc_func = uintptr /* zlib.h:81:16 */ 3945 type Free_func = uintptr /* zlib.h:82:16 */ 3946 3947 type Internal_state = struct { 3948 Fstrm Z_streamp 3949 Fstatus int32 3950 F__ccgo_pad1 [4]byte 3951 Fpending_buf uintptr 3952 Fpending_buf_size Ulg 3953 Fpending_out uintptr 3954 Fpending Ulg 3955 Fwrap int32 3956 F__ccgo_pad2 [4]byte 3957 Fgzhead Gz_headerp 3958 Fgzindex Ulg 3959 Fmethod Byte 3960 F__ccgo_pad3 [3]byte 3961 Flast_flush int32 3962 Fw_size UInt 3963 Fw_bits UInt 3964 Fw_mask UInt 3965 F__ccgo_pad4 [4]byte 3966 Fwindow uintptr 3967 Fwindow_size Ulg 3968 Fprev uintptr 3969 Fhead uintptr 3970 Fins_h UInt 3971 Fhash_size UInt 3972 Fhash_bits UInt 3973 Fhash_mask UInt 3974 Fhash_shift UInt 3975 F__ccgo_pad5 [4]byte 3976 Fblock_start int64 3977 Fmatch_length UInt 3978 Fprev_match IPos 3979 Fmatch_available int32 3980 Fstrstart UInt 3981 Fmatch_start UInt 3982 Flookahead UInt 3983 Fprev_length UInt 3984 Fmax_chain_length UInt 3985 Fmax_lazy_match UInt 3986 Flevel int32 3987 Fstrategy int32 3988 Fgood_match UInt 3989 Fnice_match int32 3990 Fdyn_ltree [573]struct { 3991 Ffc struct{ Ffreq Ush } 3992 Fdl struct{ Fdad Ush } 3993 } 3994 Fdyn_dtree [61]struct { 3995 Ffc struct{ Ffreq Ush } 3996 Fdl struct{ Fdad Ush } 3997 } 3998 Fbl_tree [39]struct { 3999 Ffc struct{ Ffreq Ush } 4000 Fdl struct{ Fdad Ush } 4001 } 4002 Fl_desc struct { 4003 Fdyn_tree uintptr 4004 Fmax_code int32 4005 F__ccgo_pad1 [4]byte 4006 Fstat_desc uintptr 4007 } 4008 Fd_desc struct { 4009 Fdyn_tree uintptr 4010 Fmax_code int32 4011 F__ccgo_pad1 [4]byte 4012 Fstat_desc uintptr 4013 } 4014 Fbl_desc struct { 4015 Fdyn_tree uintptr 4016 Fmax_code int32 4017 F__ccgo_pad1 [4]byte 4018 Fstat_desc uintptr 4019 } 4020 Fbl_count [16]Ush 4021 Fheap [573]int32 4022 Fheap_len int32 4023 Fheap_max int32 4024 Fdepth [573]Uch 4025 F__ccgo_pad6 [7]byte 4026 Fl_buf uintptr 4027 Flit_bufsize UInt 4028 Flast_lit UInt 4029 Fd_buf uintptr 4030 Fopt_len Ulg 4031 Fstatic_len Ulg 4032 Fmatches UInt 4033 Finsert UInt 4034 Fbi_buf Ush 4035 F__ccgo_pad7 [2]byte 4036 Fbi_valid int32 4037 Fhigh_water Ulg 4038 } /* zlib.h:84:1 */ 4039 4040 type Z_stream_s = struct { 4041 Fnext_in uintptr 4042 Favail_in UInt 4043 F__ccgo_pad1 [4]byte 4044 Ftotal_in ULong 4045 Fnext_out uintptr 4046 Favail_out UInt 4047 F__ccgo_pad2 [4]byte 4048 Ftotal_out ULong 4049 Fmsg uintptr 4050 Fstate uintptr 4051 Fzalloc Alloc_func 4052 Fzfree Free_func 4053 Fopaque Voidpf 4054 Fdata_type int32 4055 F__ccgo_pad3 [4]byte 4056 Fadler ULong 4057 Freserved ULong 4058 } /* zlib.h:86:9 */ 4059 4060 type Z_stream = Z_stream_s /* zlib.h:106:3 */ 4061 4062 type Z_streamp = uintptr /* zlib.h:108:22 */ 4063 4064 // 4065 // gzip header information passed to and from zlib routines. See RFC 1952 4066 // for more details on the meanings of these fields. 4067 type Gz_header_s = struct { 4068 Ftext int32 4069 F__ccgo_pad1 [4]byte 4070 Ftime ULong 4071 Fxflags int32 4072 Fos int32 4073 Fextra uintptr 4074 Fextra_len UInt 4075 Fextra_max UInt 4076 Fname uintptr 4077 Fname_max UInt 4078 F__ccgo_pad2 [4]byte 4079 Fcomment uintptr 4080 Fcomm_max UInt 4081 Fhcrc int32 4082 Fdone int32 4083 F__ccgo_pad3 [4]byte 4084 } /* zlib.h:114:9 */ 4085 4086 // 4087 // gzip header information passed to and from zlib routines. See RFC 1952 4088 // for more details on the meanings of these fields. 4089 type Gz_header = Gz_header_s /* zlib.h:129:3 */ 4090 4091 type Gz_headerp = uintptr /* zlib.h:131:23 */ 4092 // 4093 // inflateGetHeader() requests that gzip header information be stored in the 4094 // provided gz_header structure. inflateGetHeader() may be called after 4095 // inflateInit2() or inflateReset(), and before the first call of inflate(). 4096 // As inflate() processes the gzip stream, head->done is zero until the header 4097 // is completed, at which time head->done is set to one. If a zlib stream is 4098 // being decoded, then head->done is set to -1 to indicate that there will be 4099 // no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be 4100 // used to force inflate() to return immediately after header processing is 4101 // complete and before any actual data is decompressed. 4102 // 4103 // The text, time, xflags, and os fields are filled in with the gzip header 4104 // contents. hcrc is set to true if there is a header CRC. (The header CRC 4105 // was valid if done is set to one.) If extra is not Z_NULL, then extra_max 4106 // contains the maximum number of bytes to write to extra. Once done is true, 4107 // extra_len contains the actual extra field length, and extra contains the 4108 // extra field, or that field truncated if extra_max is less than extra_len. 4109 // If name is not Z_NULL, then up to name_max characters are written there, 4110 // terminated with a zero unless the length is greater than name_max. If 4111 // comment is not Z_NULL, then up to comm_max characters are written there, 4112 // terminated with a zero unless the length is greater than comm_max. When any 4113 // of extra, name, or comment are not Z_NULL and the respective field is not 4114 // present in the header, then that field is set to Z_NULL to signal its 4115 // absence. This allows the use of deflateSetHeader() with the returned 4116 // structure to duplicate the header. However if those fields are set to 4117 // allocated memory, then the application will need to save those pointers 4118 // elsewhere so that they can be eventually freed. 4119 // 4120 // If inflateGetHeader is not used, then the header information is simply 4121 // discarded. The header is always checked for validity, including the header 4122 // CRC if present. inflateReset() will reset the process to discard the header 4123 // information. The application would need to call inflateGetHeader() again to 4124 // retrieve the header from the next gzip stream. 4125 // 4126 // inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source 4127 // stream state was inconsistent. 4128 4129 // 4130 // ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, 4131 // unsigned char FAR *window)); 4132 // 4133 // Initialize the internal stream state for decompression using inflateBack() 4134 // calls. The fields zalloc, zfree and opaque in strm must be initialized 4135 // before the call. If zalloc and zfree are Z_NULL, then the default library- 4136 // derived memory allocation routines are used. windowBits is the base two 4137 // logarithm of the window size, in the range 8..15. window is a caller 4138 // supplied buffer of that size. Except for special applications where it is 4139 // assured that deflate was used with small window sizes, windowBits must be 15 4140 // and a 32K byte window must be supplied to be able to decompress general 4141 // deflate streams. 4142 // 4143 // See inflateBack() for the usage of these routines. 4144 // 4145 // inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of 4146 // the parameters are invalid, Z_MEM_ERROR if the internal state could not be 4147 // allocated, or Z_VERSION_ERROR if the version of the library does not match 4148 // the version of the header file. 4149 4150 type In_func = uintptr /* zlib.h:1092:18 */ 4151 type Out_func = uintptr /* zlib.h:1094:13 */ 4152 // 4153 // Same as uncompress, except that sourceLen is a pointer, where the 4154 // length of the source is *sourceLen. On return, *sourceLen is the number of 4155 // source bytes consumed. 4156 4157 // gzip file access functions 4158 4159 // 4160 // This library supports reading and writing files in gzip (.gz) format with 4161 // an interface similar to that of stdio, using the functions that start with 4162 // "gz". The gzip format is different from the zlib format. gzip is a gzip 4163 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 4164 4165 type GzFile_s = struct { 4166 Fhave uint32 4167 F__ccgo_pad1 [4]byte 4168 Fnext uintptr 4169 Fpos Off64_t 4170 } /* zlib.h:1300:9 */ 4171 4172 // 4173 // Same as uncompress, except that sourceLen is a pointer, where the 4174 // length of the source is *sourceLen. On return, *sourceLen is the number of 4175 // source bytes consumed. 4176 4177 // gzip file access functions 4178 4179 // 4180 // This library supports reading and writing files in gzip (.gz) format with 4181 // an interface similar to that of stdio, using the functions that start with 4182 // "gz". The gzip format is different from the zlib format. gzip is a gzip 4183 // wrapper, documented in RFC 1952, wrapped around a deflate stream. 4184 4185 type GzFile = uintptr /* zlib.h:1300:25 */ 4186 4187 // POSIX.1-2008 extended locale interface (see locale.h). 4188 // Definition of locale_t. 4189 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 4190 // This file is part of the GNU C Library. 4191 // 4192 // The GNU C Library is free software; you can redistribute it and/or 4193 // modify it under the terms of the GNU Lesser General Public 4194 // License as published by the Free Software Foundation; either 4195 // version 2.1 of the License, or (at your option) any later version. 4196 // 4197 // The GNU C Library is distributed in the hope that it will be useful, 4198 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4199 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4200 // Lesser General Public License for more details. 4201 // 4202 // You should have received a copy of the GNU Lesser General Public 4203 // License along with the GNU C Library; if not, see 4204 // <https://www.gnu.org/licenses/>. 4205 4206 // Definition of struct __locale_struct and __locale_t. 4207 // Copyright (C) 1997-2021 Free Software Foundation, Inc. 4208 // This file is part of the GNU C Library. 4209 // Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997. 4210 // 4211 // The GNU C Library is free software; you can redistribute it and/or 4212 // modify it under the terms of the GNU Lesser General Public 4213 // License as published by the Free Software Foundation; either 4214 // version 2.1 of the License, or (at your option) any later version. 4215 // 4216 // The GNU C Library is distributed in the hope that it will be useful, 4217 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4218 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4219 // Lesser General Public License for more details. 4220 // 4221 // You should have received a copy of the GNU Lesser General Public 4222 // License along with the GNU C Library; if not, see 4223 // <https://www.gnu.org/licenses/>. 4224 4225 // POSIX.1-2008: the locale_t type, representing a locale context 4226 // (implementation-namespace version). This type should be treated 4227 // as opaque by applications; some details are exposed for the sake of 4228 // efficiency in e.g. ctype functions. 4229 4230 type X__locale_struct = struct { 4231 F__locales [13]uintptr 4232 F__ctype_b uintptr 4233 F__ctype_tolower uintptr 4234 F__ctype_toupper uintptr 4235 F__names [13]uintptr 4236 } /* __locale_t.h:28:1 */ 4237 4238 type X__locale_t = uintptr /* __locale_t.h:42:32 */ 4239 4240 type Locale_t = X__locale_t /* locale_t.h:24:20 */ 4241 4242 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 4243 // This file is part of the GNU C Library. 4244 // 4245 // The GNU C Library is free software; you can redistribute it and/or 4246 // modify it under the terms of the GNU Lesser General Public 4247 // License as published by the Free Software Foundation; either 4248 // version 2.1 of the License, or (at your option) any later version. 4249 // 4250 // The GNU C Library is distributed in the hope that it will be useful, 4251 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4252 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4253 // Lesser General Public License for more details. 4254 // 4255 // You should have received a copy of the GNU Lesser General Public 4256 // License along with the GNU C Library; if not, see 4257 // <https://www.gnu.org/licenses/>. 4258 4259 // ISO C99 Standard: 7.20 General utilities <stdlib.h> 4260 4261 // Handle feature test macros at the start of a header. 4262 // Copyright (C) 2016-2021 Free Software Foundation, Inc. 4263 // This file is part of the GNU C Library. 4264 // 4265 // The GNU C Library is free software; you can redistribute it and/or 4266 // modify it under the terms of the GNU Lesser General Public 4267 // License as published by the Free Software Foundation; either 4268 // version 2.1 of the License, or (at your option) any later version. 4269 // 4270 // The GNU C Library is distributed in the hope that it will be useful, 4271 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4272 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4273 // Lesser General Public License for more details. 4274 // 4275 // You should have received a copy of the GNU Lesser General Public 4276 // License along with the GNU C Library; if not, see 4277 // <https://www.gnu.org/licenses/>. 4278 4279 // This header is internal to glibc and should not be included outside 4280 // of glibc headers. Headers including it must define 4281 // __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header 4282 // cannot have multiple include guards because ISO C feature test 4283 // macros depend on the definition of the macro when an affected 4284 // header is included, not when the first system header is 4285 // included. 4286 4287 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 4288 // This file is part of the GNU C Library. 4289 // 4290 // The GNU C Library is free software; you can redistribute it and/or 4291 // modify it under the terms of the GNU Lesser General Public 4292 // License as published by the Free Software Foundation; either 4293 // version 2.1 of the License, or (at your option) any later version. 4294 // 4295 // The GNU C Library is distributed in the hope that it will be useful, 4296 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4297 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4298 // Lesser General Public License for more details. 4299 // 4300 // You should have received a copy of the GNU Lesser General Public 4301 // License along with the GNU C Library; if not, see 4302 // <https://www.gnu.org/licenses/>. 4303 4304 // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__ 4305 // macro. 4306 4307 // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__ 4308 // macro. Most but not all symbols enabled by that macro in TS 4309 // 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in 4310 // Annex F still require a new feature test macro 4311 // __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define 4312 // __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS 4313 // 18661-1 are not included in C2X (and thus should depend on 4314 // __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are 4315 // enabled). 4316 // 4317 // __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS 4318 // 18661-1 not included in C2X. 4319 // 4320 // __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS 4321 // 18661-1 that are also included in C2X (with no feature test macro 4322 // required in C2X). 4323 // 4324 // __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1 4325 // that are included in C2X but conditional on 4326 // __STDC_WANT_IEC_60559_EXT__. (There are currently no features 4327 // conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS 4328 // 18661-1.) 4329 4330 // ISO/IEC TS 18661-4:2015 defines the 4331 // __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction 4332 // functions, the symbols from this TS are enabled unconditionally in 4333 // C2X. 4334 4335 // ISO/IEC TS 18661-3:2015 defines the 4336 // __STDC_WANT_IEC_60559_TYPES_EXT__ macro. 4337 4338 // Get size_t, wchar_t and NULL from <stddef.h>. 4339 // Copyright (C) 1989-2021 Free Software Foundation, Inc. 4340 // 4341 // This file is part of GCC. 4342 // 4343 // GCC is free software; you can redistribute it and/or modify 4344 // it under the terms of the GNU General Public License as published by 4345 // the Free Software Foundation; either version 3, or (at your option) 4346 // any later version. 4347 // 4348 // GCC is distributed in the hope that it will be useful, 4349 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4350 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 4351 // GNU General Public License for more details. 4352 // 4353 // Under Section 7 of GPL version 3, you are granted additional 4354 // permissions described in the GCC Runtime Library Exception, version 4355 // 3.1, as published by the Free Software Foundation. 4356 // 4357 // You should have received a copy of the GNU General Public License and 4358 // a copy of the GCC Runtime Library Exception along with this program; 4359 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 4360 // <http://www.gnu.org/licenses/>. 4361 4362 // ISO C Standard: 7.17 Common definitions <stddef.h> 4363 4364 // Any one of these symbols __need_* means that GNU libc 4365 // wants us just to define one data type. So don't define 4366 // the symbols that indicate this file's entire job has been done. 4367 4368 // This avoids lossage on SunOS but only if stdtypes.h comes first. 4369 // There's no way to win with the other order! Sun lossage. 4370 4371 // Sequent's header files use _PTRDIFF_T_ in some conflicting way. 4372 // Just ignore it. 4373 4374 // On VxWorks, <type/vxTypesBase.h> may have defined macros like 4375 // _TYPE_size_t which will typedef size_t. fixincludes patched the 4376 // vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is 4377 // not defined, and so that defining this macro defines _GCC_SIZE_T. 4378 // If we find that the macros are still defined at this point, we must 4379 // invoke them so that the type is defined as expected. 4380 4381 // In case nobody has defined these types, but we aren't running under 4382 // GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and 4383 // __WCHAR_TYPE__ have reasonable values. This can happen if the 4384 // parts of GCC is compiled by an older compiler, that actually 4385 // include gstddef.h, such as collect2. 4386 4387 // Signed type of difference of two pointers. 4388 4389 // Define this type if we are doing the whole job, 4390 // or if we want this type in particular. 4391 4392 // If this symbol has done its job, get rid of it. 4393 4394 // Unsigned type of `sizeof' something. 4395 4396 // Define this type if we are doing the whole job, 4397 // or if we want this type in particular. 4398 4399 // Wide character type. 4400 // Locale-writers should change this as necessary to 4401 // be big enough to hold unique values not between 0 and 127, 4402 // and not (wchar_t) -1, for each defined multibyte character. 4403 4404 // Define this type if we are doing the whole job, 4405 // or if we want this type in particular. 4406 4407 // A null pointer constant. 4408 4409 // Offset of member MEMBER in a struct of type TYPE. 4410 4411 // XPG requires a few symbols from <sys/wait.h> being defined. 4412 // Definitions of flag bits for `waitpid' et al. 4413 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 4414 // This file is part of the GNU C Library. 4415 // 4416 // The GNU C Library is free software; you can redistribute it and/or 4417 // modify it under the terms of the GNU Lesser General Public 4418 // License as published by the Free Software Foundation; either 4419 // version 2.1 of the License, or (at your option) any later version. 4420 // 4421 // The GNU C Library is distributed in the hope that it will be useful, 4422 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4423 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4424 // Lesser General Public License for more details. 4425 // 4426 // You should have received a copy of the GNU Lesser General Public 4427 // License along with the GNU C Library; if not, see 4428 // <https://www.gnu.org/licenses/>. 4429 4430 // Bits in the third argument to `waitpid'. 4431 4432 // Bits in the fourth argument to `waitid'. 4433 4434 // Definitions of status bits for `wait' et al. 4435 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 4436 // This file is part of the GNU C Library. 4437 // 4438 // The GNU C Library is free software; you can redistribute it and/or 4439 // modify it under the terms of the GNU Lesser General Public 4440 // License as published by the Free Software Foundation; either 4441 // version 2.1 of the License, or (at your option) any later version. 4442 // 4443 // The GNU C Library is distributed in the hope that it will be useful, 4444 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4445 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4446 // Lesser General Public License for more details. 4447 // 4448 // You should have received a copy of the GNU Lesser General Public 4449 // License along with the GNU C Library; if not, see 4450 // <https://www.gnu.org/licenses/>. 4451 4452 // Everything extant so far uses these same bits. 4453 4454 // If WIFEXITED(STATUS), the low-order 8 bits of the status. 4455 4456 // If WIFSIGNALED(STATUS), the terminating signal. 4457 4458 // If WIFSTOPPED(STATUS), the signal that stopped the child. 4459 4460 // Nonzero if STATUS indicates normal termination. 4461 4462 // Nonzero if STATUS indicates termination by a signal. 4463 4464 // Nonzero if STATUS indicates the child is stopped. 4465 4466 // Nonzero if STATUS indicates the child continued after a stop. We only 4467 // define this if <bits/waitflags.h> provides the WCONTINUED flag bit. 4468 4469 // Nonzero if STATUS indicates the child dumped core. 4470 4471 // Macros for constructing status values. 4472 4473 // Define the macros <sys/wait.h> also would define this way. 4474 4475 // _FloatN API tests for enablement. 4476 // Macros to control TS 18661-3 glibc features on ldbl-128 platforms. 4477 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 4478 // This file is part of the GNU C Library. 4479 // 4480 // The GNU C Library is free software; you can redistribute it and/or 4481 // modify it under the terms of the GNU Lesser General Public 4482 // License as published by the Free Software Foundation; either 4483 // version 2.1 of the License, or (at your option) any later version. 4484 // 4485 // The GNU C Library is distributed in the hope that it will be useful, 4486 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4487 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4488 // Lesser General Public License for more details. 4489 // 4490 // You should have received a copy of the GNU Lesser General Public 4491 // License along with the GNU C Library; if not, see 4492 // <https://www.gnu.org/licenses/>. 4493 4494 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 4495 // This file is part of the GNU C Library. 4496 // 4497 // The GNU C Library is free software; you can redistribute it and/or 4498 // modify it under the terms of the GNU Lesser General Public 4499 // License as published by the Free Software Foundation; either 4500 // version 2.1 of the License, or (at your option) any later version. 4501 // 4502 // The GNU C Library is distributed in the hope that it will be useful, 4503 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4504 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4505 // Lesser General Public License for more details. 4506 // 4507 // You should have received a copy of the GNU Lesser General Public 4508 // License along with the GNU C Library; if not, see 4509 // <https://www.gnu.org/licenses/>. 4510 4511 // Properties of long double type. ldbl-128 version. 4512 // Copyright (C) 2016-2021 Free Software Foundation, Inc. 4513 // This file is part of the GNU C Library. 4514 // 4515 // The GNU C Library is free software; you can redistribute it and/or 4516 // modify it under the terms of the GNU Lesser General Public 4517 // License published by the Free Software Foundation; either 4518 // version 2.1 of the License, or (at your option) any later version. 4519 // 4520 // The GNU C Library is distributed in the hope that it will be useful, 4521 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4522 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4523 // Lesser General Public License for more details. 4524 // 4525 // You should have received a copy of the GNU Lesser General Public 4526 // License along with the GNU C Library; if not, see 4527 // <https://www.gnu.org/licenses/>. 4528 4529 // long double is distinct from double, so there is nothing to 4530 // define here. 4531 4532 // Defined to 1 if the current compiler invocation provides a 4533 // floating-point type with the IEEE 754 binary128 format, and this 4534 // glibc includes corresponding *f128 interfaces for it. 4535 4536 // Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct 4537 // from the default float, double and long double types in this glibc. 4538 4539 // Defined to 1 if the current compiler invocation provides a 4540 // floating-point type with the right format for _Float64x, and this 4541 // glibc includes corresponding *f64x interfaces for it. 4542 4543 // Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format 4544 // of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has 4545 // the format of _Float128, which must be different from that of long 4546 // double. 4547 4548 // Defined to concatenate the literal suffix to be used with _Float128 4549 // types, if __HAVE_FLOAT128 is 1. 4550 4551 // Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. 4552 4553 // The remaining of this file provides support for older compilers. 4554 4555 // The type _Float128 exists only since GCC 7.0. 4556 4557 // Various built-in functions do not exist before GCC 7.0. 4558 4559 // Macros to control TS 18661-3 glibc features where the same 4560 // definitions are appropriate for all platforms. 4561 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 4562 // This file is part of the GNU C Library. 4563 // 4564 // The GNU C Library is free software; you can redistribute it and/or 4565 // modify it under the terms of the GNU Lesser General Public 4566 // License as published by the Free Software Foundation; either 4567 // version 2.1 of the License, or (at your option) any later version. 4568 // 4569 // The GNU C Library is distributed in the hope that it will be useful, 4570 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4571 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4572 // Lesser General Public License for more details. 4573 // 4574 // You should have received a copy of the GNU Lesser General Public 4575 // License along with the GNU C Library; if not, see 4576 // <https://www.gnu.org/licenses/>. 4577 4578 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 4579 // This file is part of the GNU C Library. 4580 // 4581 // The GNU C Library is free software; you can redistribute it and/or 4582 // modify it under the terms of the GNU Lesser General Public 4583 // License as published by the Free Software Foundation; either 4584 // version 2.1 of the License, or (at your option) any later version. 4585 // 4586 // The GNU C Library is distributed in the hope that it will be useful, 4587 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4588 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4589 // Lesser General Public License for more details. 4590 // 4591 // You should have received a copy of the GNU Lesser General Public 4592 // License along with the GNU C Library; if not, see 4593 // <https://www.gnu.org/licenses/>. 4594 4595 // Properties of long double type. ldbl-128 version. 4596 // Copyright (C) 2016-2021 Free Software Foundation, Inc. 4597 // This file is part of the GNU C Library. 4598 // 4599 // The GNU C Library is free software; you can redistribute it and/or 4600 // modify it under the terms of the GNU Lesser General Public 4601 // License published by the Free Software Foundation; either 4602 // version 2.1 of the License, or (at your option) any later version. 4603 // 4604 // The GNU C Library is distributed in the hope that it will be useful, 4605 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4606 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4607 // Lesser General Public License for more details. 4608 // 4609 // You should have received a copy of the GNU Lesser General Public 4610 // License along with the GNU C Library; if not, see 4611 // <https://www.gnu.org/licenses/>. 4612 4613 // long double is distinct from double, so there is nothing to 4614 // define here. 4615 4616 // This header should be included at the bottom of each bits/floatn.h. 4617 // It defines the following macros for each _FloatN and _FloatNx type, 4618 // where the same definitions, or definitions based only on the macros 4619 // in bits/floatn.h, are appropriate for all glibc configurations. 4620 4621 // Defined to 1 if the current compiler invocation provides a 4622 // floating-point type with the right format for this type, and this 4623 // glibc includes corresponding *fN or *fNx interfaces for it. 4624 4625 // Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the 4626 // type is the first with its format in the sequence of (the default 4627 // choices for) float, double, long double, _Float16, _Float32, 4628 // _Float64, _Float128, _Float32x, _Float64x, _Float128x for this 4629 // glibc; that is, if functions present once per floating-point format 4630 // rather than once per type are present for this type. 4631 // 4632 // All configurations supported by glibc have _Float32 the same format 4633 // as float, _Float64 and _Float32x the same format as double, the 4634 // _Float64x the same format as either long double or _Float128. No 4635 // configurations support _Float128x or, as of GCC 7, have compiler 4636 // support for a type meeting the requirements for _Float128x. 4637 4638 // Defined to 1 if the corresponding _FloatN type is not binary compatible 4639 // with the corresponding ISO C type in the current compilation unit as 4640 // opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built 4641 // in glibc. 4642 4643 // Defined to 1 if any _FloatN or _FloatNx types that are not 4644 // ABI-distinct are however distinct types at the C language level (so 4645 // for the purposes of __builtin_types_compatible_p and _Generic). 4646 4647 // Defined to concatenate the literal suffix to be used with _FloatN 4648 // or _FloatNx types, if __HAVE_<type> is 1. The corresponding 4649 // literal suffixes exist since GCC 7, for C only. 4650 4651 // Defined to a complex type if __HAVE_<type> is 1. 4652 4653 // The remaining of this file provides support for older compilers. 4654 4655 // If double, long double and _Float64 all have the same set of 4656 // values, TS 18661-3 requires the usual arithmetic conversions on 4657 // long double and _Float64 to produce _Float64. For this to be the 4658 // case when building with a compiler without a distinct _Float64 4659 // type, _Float64 must be a typedef for long double, not for 4660 // double. 4661 4662 // Returned by `div'. 4663 type Div_t = struct { 4664 Fquot int32 4665 Frem int32 4666 } /* stdlib.h:62:5 */ 4667 4668 // Returned by `ldiv'. 4669 type Ldiv_t = struct { 4670 Fquot int64 4671 Frem int64 4672 } /* stdlib.h:70:5 */ 4673 4674 // Returned by `lldiv'. 4675 type Lldiv_t = struct { 4676 Fquot int64 4677 Frem int64 4678 } /* stdlib.h:80:5 */ 4679 4680 // Reentrant versions of the `random' family of functions. 4681 // These functions all use the following data structure to contain 4682 // state, rather than global state variables. 4683 4684 type Random_data = struct { 4685 Ffptr uintptr 4686 Frptr uintptr 4687 Fstate uintptr 4688 Frand_type int32 4689 Frand_deg int32 4690 Frand_sep int32 4691 F__ccgo_pad1 [4]byte 4692 Fend_ptr uintptr 4693 } /* stdlib.h:423:1 */ 4694 4695 // Data structure for communication with thread safe versions. This 4696 // type is to be regarded as opaque. It's only exported because users 4697 // have to allocate objects of this type. 4698 type Drand48_data = struct { 4699 F__x [3]uint16 4700 F__old_x [3]uint16 4701 F__c uint16 4702 F__init uint16 4703 F__a uint64 4704 } /* stdlib.h:490:1 */ 4705 4706 // Shorthand for type of comparison functions. 4707 type X__compar_fn_t = uintptr /* stdlib.h:814:13 */ 4708 4709 // Floating-point inline functions for stdlib.h. 4710 // Copyright (C) 2012-2021 Free Software Foundation, Inc. 4711 // This file is part of the GNU C Library. 4712 // 4713 // The GNU C Library is free software; you can redistribute it and/or 4714 // modify it under the terms of the GNU Lesser General Public 4715 // License as published by the Free Software Foundation; either 4716 // version 2.1 of the License, or (at your option) any later version. 4717 // 4718 // The GNU C Library is distributed in the hope that it will be useful, 4719 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4720 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4721 // Lesser General Public License for more details. 4722 // 4723 // You should have received a copy of the GNU Lesser General Public 4724 // License along with the GNU C Library; if not, see 4725 // <https://www.gnu.org/licenses/>. 4726 4727 // Define some macros helping to catch buffer overflows. 4728 4729 // Macros to control TS 18661-3 glibc features on ldbl-128 platforms. 4730 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 4731 // This file is part of the GNU C Library. 4732 // 4733 // The GNU C Library is free software; you can redistribute it and/or 4734 // modify it under the terms of the GNU Lesser General Public 4735 // License as published by the Free Software Foundation; either 4736 // version 2.1 of the License, or (at your option) any later version. 4737 // 4738 // The GNU C Library is distributed in the hope that it will be useful, 4739 // but WITHOUT ANY WARRANTY; without even the implied warranty of 4740 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 4741 // Lesser General Public License for more details. 4742 // 4743 // You should have received a copy of the GNU Lesser General Public 4744 // License along with the GNU C Library; if not, see 4745 // <https://www.gnu.org/licenses/>. 4746 4747 // since "static" is used to mean two completely different things in C, we 4748 // define "local" for the non-static meaning of "static", for readability 4749 // (compile with -Dlocal if your debugger can't find static symbols) 4750 4751 type Uch = uint8 /* zutil.h:43:24 */ 4752 type Uchf = Uch /* zutil.h:44:17 */ 4753 type Ush = uint16 /* zutil.h:45:24 */ 4754 type Ushf = Ush /* zutil.h:46:17 */ 4755 type Ulg = uint64 /* zutil.h:47:24 */ 4756 4757 // NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 4758 4759 // use NO_DIVIDE if your processor does not do division in hardware -- 4760 // try it both ways to see which is faster 4761 4762 // ========================================================================= 4763 func Xadler32_z(tls *libc.TLS, adler ULong, buf uintptr, len Z_size_t) ULong { /* adler32.c:63:15: */ 4764 var sum2 uint64 4765 var n uint32 4766 4767 // split Adler-32 into component sums 4768 sum2 = adler >> 16 & uint64(0xffff) 4769 adler = adler & uint64(0xffff) 4770 4771 // in case user likes doing a byte at a time, keep it fast 4772 if len == uint64(1) { 4773 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf))) 4774 if adler >= uint64(BASE) { 4775 adler = adler - uint64(BASE) 4776 } 4777 sum2 = sum2 + adler 4778 if sum2 >= uint64(BASE) { 4779 sum2 = sum2 - uint64(BASE) 4780 } 4781 return adler | sum2<<16 4782 } 4783 4784 // initial Adler-32 value (deferred check for len == 1 speed) 4785 if buf == uintptr(Z_NULL) { 4786 return uint64(1) 4787 } 4788 4789 // in case short lengths are provided, keep it somewhat fast 4790 if len < uint64(16) { 4791 for libc.PostDecUint64(&len, 1) != 0 { 4792 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))) 4793 sum2 = sum2 + adler 4794 } 4795 if adler >= uint64(BASE) { 4796 adler = adler - uint64(BASE) 4797 } 4798 sum2 = sum2 % uint64(BASE) // only added so many BASE's 4799 return adler | sum2<<16 4800 } 4801 4802 // do length NMAX blocks -- requires just one modulo operation 4803 for len >= uint64(NMAX) { 4804 len = len - uint64(NMAX) 4805 n = uint32(NMAX / 16) // NMAX is divisible by 16 4806 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&n, 1) != 0 { 4807 { 4808 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf))) 4809 sum2 = sum2 + adler 4810 } 4811 { 4812 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 1))) 4813 sum2 = sum2 + adler 4814 } 4815 4816 { 4817 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 2))) 4818 sum2 = sum2 + adler 4819 } 4820 { 4821 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 3))) 4822 sum2 = sum2 + adler 4823 } 4824 4825 { 4826 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 4))) 4827 sum2 = sum2 + adler 4828 } 4829 { 4830 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 5))) 4831 sum2 = sum2 + adler 4832 } 4833 4834 { 4835 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 6))) 4836 sum2 = sum2 + adler 4837 } 4838 { 4839 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 7))) 4840 sum2 = sum2 + adler 4841 } 4842 4843 { 4844 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 8))) 4845 sum2 = sum2 + adler 4846 } 4847 { 4848 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 9))) 4849 sum2 = sum2 + adler 4850 } 4851 4852 { 4853 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 10))) 4854 sum2 = sum2 + adler 4855 } 4856 { 4857 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 11))) 4858 sum2 = sum2 + adler 4859 } 4860 4861 { 4862 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 12))) 4863 sum2 = sum2 + adler 4864 } 4865 { 4866 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 13))) 4867 sum2 = sum2 + adler 4868 } 4869 4870 { 4871 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 14))) 4872 sum2 = sum2 + adler 4873 } 4874 { 4875 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 15))) 4876 sum2 = sum2 + adler 4877 } 4878 4879 // 16 sums unrolled 4880 buf += uintptr(16) 4881 } 4882 adler = adler % uint64(BASE) 4883 sum2 = sum2 % uint64(BASE) 4884 } 4885 4886 // do remaining bytes (less than NMAX, still just one modulo) 4887 if len != 0 { // avoid modulos if none remaining 4888 for len >= uint64(16) { 4889 len = len - uint64(16) 4890 { 4891 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf))) 4892 sum2 = sum2 + adler 4893 } 4894 { 4895 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 1))) 4896 sum2 = sum2 + adler 4897 } 4898 4899 { 4900 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 2))) 4901 sum2 = sum2 + adler 4902 } 4903 { 4904 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 3))) 4905 sum2 = sum2 + adler 4906 } 4907 4908 { 4909 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 4))) 4910 sum2 = sum2 + adler 4911 } 4912 { 4913 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 5))) 4914 sum2 = sum2 + adler 4915 } 4916 4917 { 4918 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 6))) 4919 sum2 = sum2 + adler 4920 } 4921 { 4922 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 7))) 4923 sum2 = sum2 + adler 4924 } 4925 4926 { 4927 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 8))) 4928 sum2 = sum2 + adler 4929 } 4930 { 4931 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 9))) 4932 sum2 = sum2 + adler 4933 } 4934 4935 { 4936 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 10))) 4937 sum2 = sum2 + adler 4938 } 4939 { 4940 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 11))) 4941 sum2 = sum2 + adler 4942 } 4943 4944 { 4945 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 12))) 4946 sum2 = sum2 + adler 4947 } 4948 { 4949 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 13))) 4950 sum2 = sum2 + adler 4951 } 4952 4953 { 4954 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 14))) 4955 sum2 = sum2 + adler 4956 } 4957 { 4958 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(buf + 15))) 4959 sum2 = sum2 + adler 4960 } 4961 4962 buf += uintptr(16) 4963 } 4964 for libc.PostDecUint64(&len, 1) != 0 { 4965 adler = adler + ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))) 4966 sum2 = sum2 + adler 4967 } 4968 adler = adler % uint64(BASE) 4969 sum2 = sum2 % uint64(BASE) 4970 } 4971 4972 // return recombined sums 4973 return adler | sum2<<16 4974 } 4975 4976 // ========================================================================= 4977 func Xadler32(tls *libc.TLS, adler ULong, buf uintptr, len UInt) ULong { /* adler32.c:134:15: */ 4978 return Xadler32_z(tls, adler, buf, uint64(len)) 4979 } 4980 4981 // ========================================================================= 4982 func adler32_combine_(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off64_t) ULong { /* adler32.c:143:13: */ 4983 var sum1 uint64 4984 var sum2 uint64 4985 var rem uint32 4986 4987 // for negative len, return invalid adler32 as a clue for debugging 4988 if len2 < int64(0) { 4989 return 0xffffffff 4990 } 4991 4992 // the derivation of this formula is left as an exercise for the reader 4993 len2 = len2 % int64(BASE) // assumes len2 >= 0 4994 rem = uint32(len2) 4995 sum1 = adler1 & uint64(0xffff) 4996 sum2 = uint64(rem) * sum1 4997 sum2 = sum2 % uint64(BASE) 4998 sum1 = sum1 + (adler2&uint64(0xffff) + uint64(BASE) - uint64(1)) 4999 sum2 = sum2 + (adler1>>16&uint64(0xffff) + adler2>>16&uint64(0xffff) + uint64(BASE) - ULong(rem)) 5000 if sum1 >= uint64(BASE) { 5001 sum1 = sum1 - uint64(BASE) 5002 } 5003 if sum1 >= uint64(BASE) { 5004 sum1 = sum1 - uint64(BASE) 5005 } 5006 if sum2 >= uint64(uint64(BASE))<<1 { 5007 sum2 = sum2 - uint64(uint64(BASE))<<1 5008 } 5009 if sum2 >= uint64(BASE) { 5010 sum2 = sum2 - uint64(BASE) 5011 } 5012 return sum1 | sum2<<16 5013 } 5014 5015 // ========================================================================= 5016 func Xadler32_combine(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:172:15: */ 5017 return adler32_combine_(tls, adler1, adler2, len2) 5018 } 5019 5020 func Xadler32_combine64(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off64_t) ULong { /* adler32.c:180:15: */ 5021 return adler32_combine_(tls, adler1, adler2, len2) 5022 } 5023 5024 // =========================================================================== 5025 // Compresses the source buffer into the destination buffer. The level 5026 // parameter has the same meaning as in deflateInit. sourceLen is the byte 5027 // length of the source buffer. Upon entry, destLen is the total size of the 5028 // destination buffer, which must be at least 0.1% larger than sourceLen plus 5029 // 12 bytes. Upon exit, destLen is the actual size of the compressed buffer. 5030 // 5031 // compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough 5032 // memory, Z_BUF_ERROR if there was not enough room in the output buffer, 5033 // Z_STREAM_ERROR if the level parameter is invalid. 5034 func Xcompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong, level int32) int32 { /* compress.c:22:13: */ 5035 bp := tls.Alloc(112) 5036 defer tls.Free(112) 5037 5038 // var stream Z_stream at bp, 112 5039 5040 var err int32 5041 var max UInt = libc.Uint32(libc.Uint32FromInt32(-1)) 5042 var left ULong 5043 5044 left = *(*ULongf)(unsafe.Pointer(destLen)) 5045 *(*ULongf)(unsafe.Pointer(destLen)) = uint64(0) 5046 5047 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzalloc = uintptr(0) 5048 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzfree = uintptr(0) 5049 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fopaque = uintptr(0) 5050 5051 err = XdeflateInit_(tls, bp, level, ts, int32(unsafe.Sizeof(Z_stream{}))) 5052 if err != Z_OK { 5053 return err 5054 } 5055 5056 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_out = dest 5057 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = UInt(0) 5058 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_in = source 5059 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = UInt(0) 5060 5061 for __ccgo := true; __ccgo; __ccgo = err == Z_OK { 5062 if (*Z_stream)(unsafe.Pointer(bp)).Favail_out == UInt(0) { 5063 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = func() uint32 { 5064 if left > ULong(max) { 5065 return max 5066 } 5067 return UInt(left) 5068 }() 5069 left = left - ULong((*Z_stream)(unsafe.Pointer(bp)).Favail_out) 5070 } 5071 if (*Z_stream)(unsafe.Pointer(bp)).Favail_in == UInt(0) { 5072 (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = func() uint32 { 5073 if sourceLen > ULong(max) { 5074 return max 5075 } 5076 return UInt(sourceLen) 5077 }() 5078 sourceLen = sourceLen - ULong((*Z_stream)(unsafe.Pointer(bp)).Favail_in) 5079 } 5080 err = Xdeflate(tls, bp, func() int32 { 5081 if sourceLen != 0 { 5082 return Z_NO_FLUSH 5083 } 5084 return Z_FINISH 5085 }()) 5086 } 5087 5088 *(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Ftotal_out 5089 XdeflateEnd(tls, bp) 5090 if err == Z_STREAM_END { 5091 return Z_OK 5092 } 5093 return err 5094 } 5095 5096 // =========================================================================== 5097 func Xcompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* compress.c:68:13: */ 5098 return Xcompress2(tls, dest, destLen, source, sourceLen, -1) 5099 } 5100 5101 // =========================================================================== 5102 // If the default memLevel or windowBits for deflateInit() is changed, then 5103 // this function needs to be updated. 5104 // 5105 func XcompressBound(tls *libc.TLS, sourceLen ULong) ULong { /* compress.c:81:15: */ 5106 return sourceLen + sourceLen>>12 + sourceLen>>14 + sourceLen>>25 + uint64(13) 5107 } 5108 5109 // ======================================================================== 5110 // Tables of CRC-32s of all single-byte values, made by make_crc_table(). 5111 // crc32.h -- tables for rapid CRC calculation 5112 // Generated automatically by crc32.c 5113 5114 var crc_table = [8][256]Z_crc_t{ 5115 { 5116 uint32(0x00000000), uint32(0x77073096), uint32(0xee0e612c), uint32(0x990951ba), uint32(0x076dc419), 5117 uint32(0x706af48f), uint32(0xe963a535), uint32(0x9e6495a3), uint32(0x0edb8832), uint32(0x79dcb8a4), 5118 uint32(0xe0d5e91e), uint32(0x97d2d988), uint32(0x09b64c2b), uint32(0x7eb17cbd), uint32(0xe7b82d07), 5119 uint32(0x90bf1d91), uint32(0x1db71064), uint32(0x6ab020f2), uint32(0xf3b97148), uint32(0x84be41de), 5120 uint32(0x1adad47d), uint32(0x6ddde4eb), uint32(0xf4d4b551), uint32(0x83d385c7), uint32(0x136c9856), 5121 uint32(0x646ba8c0), uint32(0xfd62f97a), uint32(0x8a65c9ec), uint32(0x14015c4f), uint32(0x63066cd9), 5122 uint32(0xfa0f3d63), uint32(0x8d080df5), uint32(0x3b6e20c8), uint32(0x4c69105e), uint32(0xd56041e4), 5123 uint32(0xa2677172), uint32(0x3c03e4d1), uint32(0x4b04d447), uint32(0xd20d85fd), uint32(0xa50ab56b), 5124 uint32(0x35b5a8fa), uint32(0x42b2986c), uint32(0xdbbbc9d6), uint32(0xacbcf940), uint32(0x32d86ce3), 5125 uint32(0x45df5c75), uint32(0xdcd60dcf), uint32(0xabd13d59), uint32(0x26d930ac), uint32(0x51de003a), 5126 uint32(0xc8d75180), uint32(0xbfd06116), uint32(0x21b4f4b5), uint32(0x56b3c423), uint32(0xcfba9599), 5127 uint32(0xb8bda50f), uint32(0x2802b89e), uint32(0x5f058808), uint32(0xc60cd9b2), uint32(0xb10be924), 5128 uint32(0x2f6f7c87), uint32(0x58684c11), uint32(0xc1611dab), uint32(0xb6662d3d), uint32(0x76dc4190), 5129 uint32(0x01db7106), uint32(0x98d220bc), uint32(0xefd5102a), uint32(0x71b18589), uint32(0x06b6b51f), 5130 uint32(0x9fbfe4a5), uint32(0xe8b8d433), uint32(0x7807c9a2), uint32(0x0f00f934), uint32(0x9609a88e), 5131 uint32(0xe10e9818), uint32(0x7f6a0dbb), uint32(0x086d3d2d), uint32(0x91646c97), uint32(0xe6635c01), 5132 uint32(0x6b6b51f4), uint32(0x1c6c6162), uint32(0x856530d8), uint32(0xf262004e), uint32(0x6c0695ed), 5133 uint32(0x1b01a57b), uint32(0x8208f4c1), uint32(0xf50fc457), uint32(0x65b0d9c6), uint32(0x12b7e950), 5134 uint32(0x8bbeb8ea), uint32(0xfcb9887c), uint32(0x62dd1ddf), uint32(0x15da2d49), uint32(0x8cd37cf3), 5135 uint32(0xfbd44c65), uint32(0x4db26158), uint32(0x3ab551ce), uint32(0xa3bc0074), uint32(0xd4bb30e2), 5136 uint32(0x4adfa541), uint32(0x3dd895d7), uint32(0xa4d1c46d), uint32(0xd3d6f4fb), uint32(0x4369e96a), 5137 uint32(0x346ed9fc), uint32(0xad678846), uint32(0xda60b8d0), uint32(0x44042d73), uint32(0x33031de5), 5138 uint32(0xaa0a4c5f), uint32(0xdd0d7cc9), uint32(0x5005713c), uint32(0x270241aa), uint32(0xbe0b1010), 5139 uint32(0xc90c2086), uint32(0x5768b525), uint32(0x206f85b3), uint32(0xb966d409), uint32(0xce61e49f), 5140 uint32(0x5edef90e), uint32(0x29d9c998), uint32(0xb0d09822), uint32(0xc7d7a8b4), uint32(0x59b33d17), 5141 uint32(0x2eb40d81), uint32(0xb7bd5c3b), uint32(0xc0ba6cad), uint32(0xedb88320), uint32(0x9abfb3b6), 5142 uint32(0x03b6e20c), uint32(0x74b1d29a), uint32(0xead54739), uint32(0x9dd277af), uint32(0x04db2615), 5143 uint32(0x73dc1683), uint32(0xe3630b12), uint32(0x94643b84), uint32(0x0d6d6a3e), uint32(0x7a6a5aa8), 5144 uint32(0xe40ecf0b), uint32(0x9309ff9d), uint32(0x0a00ae27), uint32(0x7d079eb1), uint32(0xf00f9344), 5145 uint32(0x8708a3d2), uint32(0x1e01f268), uint32(0x6906c2fe), uint32(0xf762575d), uint32(0x806567cb), 5146 uint32(0x196c3671), uint32(0x6e6b06e7), uint32(0xfed41b76), uint32(0x89d32be0), uint32(0x10da7a5a), 5147 uint32(0x67dd4acc), uint32(0xf9b9df6f), uint32(0x8ebeeff9), uint32(0x17b7be43), uint32(0x60b08ed5), 5148 uint32(0xd6d6a3e8), uint32(0xa1d1937e), uint32(0x38d8c2c4), uint32(0x4fdff252), uint32(0xd1bb67f1), 5149 uint32(0xa6bc5767), uint32(0x3fb506dd), uint32(0x48b2364b), uint32(0xd80d2bda), uint32(0xaf0a1b4c), 5150 uint32(0x36034af6), uint32(0x41047a60), uint32(0xdf60efc3), uint32(0xa867df55), uint32(0x316e8eef), 5151 uint32(0x4669be79), uint32(0xcb61b38c), uint32(0xbc66831a), uint32(0x256fd2a0), uint32(0x5268e236), 5152 uint32(0xcc0c7795), uint32(0xbb0b4703), uint32(0x220216b9), uint32(0x5505262f), uint32(0xc5ba3bbe), 5153 uint32(0xb2bd0b28), uint32(0x2bb45a92), uint32(0x5cb36a04), uint32(0xc2d7ffa7), uint32(0xb5d0cf31), 5154 uint32(0x2cd99e8b), uint32(0x5bdeae1d), uint32(0x9b64c2b0), uint32(0xec63f226), uint32(0x756aa39c), 5155 uint32(0x026d930a), uint32(0x9c0906a9), uint32(0xeb0e363f), uint32(0x72076785), uint32(0x05005713), 5156 uint32(0x95bf4a82), uint32(0xe2b87a14), uint32(0x7bb12bae), uint32(0x0cb61b38), uint32(0x92d28e9b), 5157 uint32(0xe5d5be0d), uint32(0x7cdcefb7), uint32(0x0bdbdf21), uint32(0x86d3d2d4), uint32(0xf1d4e242), 5158 uint32(0x68ddb3f8), uint32(0x1fda836e), uint32(0x81be16cd), uint32(0xf6b9265b), uint32(0x6fb077e1), 5159 uint32(0x18b74777), uint32(0x88085ae6), uint32(0xff0f6a70), uint32(0x66063bca), uint32(0x11010b5c), 5160 uint32(0x8f659eff), uint32(0xf862ae69), uint32(0x616bffd3), uint32(0x166ccf45), uint32(0xa00ae278), 5161 uint32(0xd70dd2ee), uint32(0x4e048354), uint32(0x3903b3c2), uint32(0xa7672661), uint32(0xd06016f7), 5162 uint32(0x4969474d), uint32(0x3e6e77db), uint32(0xaed16a4a), uint32(0xd9d65adc), uint32(0x40df0b66), 5163 uint32(0x37d83bf0), uint32(0xa9bcae53), uint32(0xdebb9ec5), uint32(0x47b2cf7f), uint32(0x30b5ffe9), 5164 uint32(0xbdbdf21c), uint32(0xcabac28a), uint32(0x53b39330), uint32(0x24b4a3a6), uint32(0xbad03605), 5165 uint32(0xcdd70693), uint32(0x54de5729), uint32(0x23d967bf), uint32(0xb3667a2e), uint32(0xc4614ab8), 5166 uint32(0x5d681b02), uint32(0x2a6f2b94), uint32(0xb40bbe37), uint32(0xc30c8ea1), uint32(0x5a05df1b), 5167 uint32(0x2d02ef8d), 5168 }, 5169 { 5170 uint32(0x00000000), uint32(0x191b3141), uint32(0x32366282), uint32(0x2b2d53c3), uint32(0x646cc504), 5171 uint32(0x7d77f445), uint32(0x565aa786), uint32(0x4f4196c7), uint32(0xc8d98a08), uint32(0xd1c2bb49), 5172 uint32(0xfaefe88a), uint32(0xe3f4d9cb), uint32(0xacb54f0c), uint32(0xb5ae7e4d), uint32(0x9e832d8e), 5173 uint32(0x87981ccf), uint32(0x4ac21251), uint32(0x53d92310), uint32(0x78f470d3), uint32(0x61ef4192), 5174 uint32(0x2eaed755), uint32(0x37b5e614), uint32(0x1c98b5d7), uint32(0x05838496), uint32(0x821b9859), 5175 uint32(0x9b00a918), uint32(0xb02dfadb), uint32(0xa936cb9a), uint32(0xe6775d5d), uint32(0xff6c6c1c), 5176 uint32(0xd4413fdf), uint32(0xcd5a0e9e), uint32(0x958424a2), uint32(0x8c9f15e3), uint32(0xa7b24620), 5177 uint32(0xbea97761), uint32(0xf1e8e1a6), uint32(0xe8f3d0e7), uint32(0xc3de8324), uint32(0xdac5b265), 5178 uint32(0x5d5daeaa), uint32(0x44469feb), uint32(0x6f6bcc28), uint32(0x7670fd69), uint32(0x39316bae), 5179 uint32(0x202a5aef), uint32(0x0b07092c), uint32(0x121c386d), uint32(0xdf4636f3), uint32(0xc65d07b2), 5180 uint32(0xed705471), uint32(0xf46b6530), uint32(0xbb2af3f7), uint32(0xa231c2b6), uint32(0x891c9175), 5181 uint32(0x9007a034), uint32(0x179fbcfb), uint32(0x0e848dba), uint32(0x25a9de79), uint32(0x3cb2ef38), 5182 uint32(0x73f379ff), uint32(0x6ae848be), uint32(0x41c51b7d), uint32(0x58de2a3c), uint32(0xf0794f05), 5183 uint32(0xe9627e44), uint32(0xc24f2d87), uint32(0xdb541cc6), uint32(0x94158a01), uint32(0x8d0ebb40), 5184 uint32(0xa623e883), uint32(0xbf38d9c2), uint32(0x38a0c50d), uint32(0x21bbf44c), uint32(0x0a96a78f), 5185 uint32(0x138d96ce), uint32(0x5ccc0009), uint32(0x45d73148), uint32(0x6efa628b), uint32(0x77e153ca), 5186 uint32(0xbabb5d54), uint32(0xa3a06c15), uint32(0x888d3fd6), uint32(0x91960e97), uint32(0xded79850), 5187 uint32(0xc7cca911), uint32(0xece1fad2), uint32(0xf5facb93), uint32(0x7262d75c), uint32(0x6b79e61d), 5188 uint32(0x4054b5de), uint32(0x594f849f), uint32(0x160e1258), uint32(0x0f152319), uint32(0x243870da), 5189 uint32(0x3d23419b), uint32(0x65fd6ba7), uint32(0x7ce65ae6), uint32(0x57cb0925), uint32(0x4ed03864), 5190 uint32(0x0191aea3), uint32(0x188a9fe2), uint32(0x33a7cc21), uint32(0x2abcfd60), uint32(0xad24e1af), 5191 uint32(0xb43fd0ee), uint32(0x9f12832d), uint32(0x8609b26c), uint32(0xc94824ab), uint32(0xd05315ea), 5192 uint32(0xfb7e4629), uint32(0xe2657768), uint32(0x2f3f79f6), uint32(0x362448b7), uint32(0x1d091b74), 5193 uint32(0x04122a35), uint32(0x4b53bcf2), uint32(0x52488db3), uint32(0x7965de70), uint32(0x607eef31), 5194 uint32(0xe7e6f3fe), uint32(0xfefdc2bf), uint32(0xd5d0917c), uint32(0xcccba03d), uint32(0x838a36fa), 5195 uint32(0x9a9107bb), uint32(0xb1bc5478), uint32(0xa8a76539), uint32(0x3b83984b), uint32(0x2298a90a), 5196 uint32(0x09b5fac9), uint32(0x10aecb88), uint32(0x5fef5d4f), uint32(0x46f46c0e), uint32(0x6dd93fcd), 5197 uint32(0x74c20e8c), uint32(0xf35a1243), uint32(0xea412302), uint32(0xc16c70c1), uint32(0xd8774180), 5198 uint32(0x9736d747), uint32(0x8e2de606), uint32(0xa500b5c5), uint32(0xbc1b8484), uint32(0x71418a1a), 5199 uint32(0x685abb5b), uint32(0x4377e898), uint32(0x5a6cd9d9), uint32(0x152d4f1e), uint32(0x0c367e5f), 5200 uint32(0x271b2d9c), uint32(0x3e001cdd), uint32(0xb9980012), uint32(0xa0833153), uint32(0x8bae6290), 5201 uint32(0x92b553d1), uint32(0xddf4c516), uint32(0xc4eff457), uint32(0xefc2a794), uint32(0xf6d996d5), 5202 uint32(0xae07bce9), uint32(0xb71c8da8), uint32(0x9c31de6b), uint32(0x852aef2a), uint32(0xca6b79ed), 5203 uint32(0xd37048ac), uint32(0xf85d1b6f), uint32(0xe1462a2e), uint32(0x66de36e1), uint32(0x7fc507a0), 5204 uint32(0x54e85463), uint32(0x4df36522), uint32(0x02b2f3e5), uint32(0x1ba9c2a4), uint32(0x30849167), 5205 uint32(0x299fa026), uint32(0xe4c5aeb8), uint32(0xfdde9ff9), uint32(0xd6f3cc3a), uint32(0xcfe8fd7b), 5206 uint32(0x80a96bbc), uint32(0x99b25afd), uint32(0xb29f093e), uint32(0xab84387f), uint32(0x2c1c24b0), 5207 uint32(0x350715f1), uint32(0x1e2a4632), uint32(0x07317773), uint32(0x4870e1b4), uint32(0x516bd0f5), 5208 uint32(0x7a468336), uint32(0x635db277), uint32(0xcbfad74e), uint32(0xd2e1e60f), uint32(0xf9ccb5cc), 5209 uint32(0xe0d7848d), uint32(0xaf96124a), uint32(0xb68d230b), uint32(0x9da070c8), uint32(0x84bb4189), 5210 uint32(0x03235d46), uint32(0x1a386c07), uint32(0x31153fc4), uint32(0x280e0e85), uint32(0x674f9842), 5211 uint32(0x7e54a903), uint32(0x5579fac0), uint32(0x4c62cb81), uint32(0x8138c51f), uint32(0x9823f45e), 5212 uint32(0xb30ea79d), uint32(0xaa1596dc), uint32(0xe554001b), uint32(0xfc4f315a), uint32(0xd7626299), 5213 uint32(0xce7953d8), uint32(0x49e14f17), uint32(0x50fa7e56), uint32(0x7bd72d95), uint32(0x62cc1cd4), 5214 uint32(0x2d8d8a13), uint32(0x3496bb52), uint32(0x1fbbe891), uint32(0x06a0d9d0), uint32(0x5e7ef3ec), 5215 uint32(0x4765c2ad), uint32(0x6c48916e), uint32(0x7553a02f), uint32(0x3a1236e8), uint32(0x230907a9), 5216 uint32(0x0824546a), uint32(0x113f652b), uint32(0x96a779e4), uint32(0x8fbc48a5), uint32(0xa4911b66), 5217 uint32(0xbd8a2a27), uint32(0xf2cbbce0), uint32(0xebd08da1), uint32(0xc0fdde62), uint32(0xd9e6ef23), 5218 uint32(0x14bce1bd), uint32(0x0da7d0fc), uint32(0x268a833f), uint32(0x3f91b27e), uint32(0x70d024b9), 5219 uint32(0x69cb15f8), uint32(0x42e6463b), uint32(0x5bfd777a), uint32(0xdc656bb5), uint32(0xc57e5af4), 5220 uint32(0xee530937), uint32(0xf7483876), uint32(0xb809aeb1), uint32(0xa1129ff0), uint32(0x8a3fcc33), 5221 uint32(0x9324fd72), 5222 }, 5223 { 5224 uint32(0x00000000), uint32(0x01c26a37), uint32(0x0384d46e), uint32(0x0246be59), uint32(0x0709a8dc), 5225 uint32(0x06cbc2eb), uint32(0x048d7cb2), uint32(0x054f1685), uint32(0x0e1351b8), uint32(0x0fd13b8f), 5226 uint32(0x0d9785d6), uint32(0x0c55efe1), uint32(0x091af964), uint32(0x08d89353), uint32(0x0a9e2d0a), 5227 uint32(0x0b5c473d), uint32(0x1c26a370), uint32(0x1de4c947), uint32(0x1fa2771e), uint32(0x1e601d29), 5228 uint32(0x1b2f0bac), uint32(0x1aed619b), uint32(0x18abdfc2), uint32(0x1969b5f5), uint32(0x1235f2c8), 5229 uint32(0x13f798ff), uint32(0x11b126a6), uint32(0x10734c91), uint32(0x153c5a14), uint32(0x14fe3023), 5230 uint32(0x16b88e7a), uint32(0x177ae44d), uint32(0x384d46e0), uint32(0x398f2cd7), uint32(0x3bc9928e), 5231 uint32(0x3a0bf8b9), uint32(0x3f44ee3c), uint32(0x3e86840b), uint32(0x3cc03a52), uint32(0x3d025065), 5232 uint32(0x365e1758), uint32(0x379c7d6f), uint32(0x35dac336), uint32(0x3418a901), uint32(0x3157bf84), 5233 uint32(0x3095d5b3), uint32(0x32d36bea), uint32(0x331101dd), uint32(0x246be590), uint32(0x25a98fa7), 5234 uint32(0x27ef31fe), uint32(0x262d5bc9), uint32(0x23624d4c), uint32(0x22a0277b), uint32(0x20e69922), 5235 uint32(0x2124f315), uint32(0x2a78b428), uint32(0x2bbade1f), uint32(0x29fc6046), uint32(0x283e0a71), 5236 uint32(0x2d711cf4), uint32(0x2cb376c3), uint32(0x2ef5c89a), uint32(0x2f37a2ad), uint32(0x709a8dc0), 5237 uint32(0x7158e7f7), uint32(0x731e59ae), uint32(0x72dc3399), uint32(0x7793251c), uint32(0x76514f2b), 5238 uint32(0x7417f172), uint32(0x75d59b45), uint32(0x7e89dc78), uint32(0x7f4bb64f), uint32(0x7d0d0816), 5239 uint32(0x7ccf6221), uint32(0x798074a4), uint32(0x78421e93), uint32(0x7a04a0ca), uint32(0x7bc6cafd), 5240 uint32(0x6cbc2eb0), uint32(0x6d7e4487), uint32(0x6f38fade), uint32(0x6efa90e9), uint32(0x6bb5866c), 5241 uint32(0x6a77ec5b), uint32(0x68315202), uint32(0x69f33835), uint32(0x62af7f08), uint32(0x636d153f), 5242 uint32(0x612bab66), uint32(0x60e9c151), uint32(0x65a6d7d4), uint32(0x6464bde3), uint32(0x662203ba), 5243 uint32(0x67e0698d), uint32(0x48d7cb20), uint32(0x4915a117), uint32(0x4b531f4e), uint32(0x4a917579), 5244 uint32(0x4fde63fc), uint32(0x4e1c09cb), uint32(0x4c5ab792), uint32(0x4d98dda5), uint32(0x46c49a98), 5245 uint32(0x4706f0af), uint32(0x45404ef6), uint32(0x448224c1), uint32(0x41cd3244), uint32(0x400f5873), 5246 uint32(0x4249e62a), uint32(0x438b8c1d), uint32(0x54f16850), uint32(0x55330267), uint32(0x5775bc3e), 5247 uint32(0x56b7d609), uint32(0x53f8c08c), uint32(0x523aaabb), uint32(0x507c14e2), uint32(0x51be7ed5), 5248 uint32(0x5ae239e8), uint32(0x5b2053df), uint32(0x5966ed86), uint32(0x58a487b1), uint32(0x5deb9134), 5249 uint32(0x5c29fb03), uint32(0x5e6f455a), uint32(0x5fad2f6d), uint32(0xe1351b80), uint32(0xe0f771b7), 5250 uint32(0xe2b1cfee), uint32(0xe373a5d9), uint32(0xe63cb35c), uint32(0xe7fed96b), uint32(0xe5b86732), 5251 uint32(0xe47a0d05), uint32(0xef264a38), uint32(0xeee4200f), uint32(0xeca29e56), uint32(0xed60f461), 5252 uint32(0xe82fe2e4), uint32(0xe9ed88d3), uint32(0xebab368a), uint32(0xea695cbd), uint32(0xfd13b8f0), 5253 uint32(0xfcd1d2c7), uint32(0xfe976c9e), uint32(0xff5506a9), uint32(0xfa1a102c), uint32(0xfbd87a1b), 5254 uint32(0xf99ec442), uint32(0xf85cae75), uint32(0xf300e948), uint32(0xf2c2837f), uint32(0xf0843d26), 5255 uint32(0xf1465711), uint32(0xf4094194), uint32(0xf5cb2ba3), uint32(0xf78d95fa), uint32(0xf64fffcd), 5256 uint32(0xd9785d60), uint32(0xd8ba3757), uint32(0xdafc890e), uint32(0xdb3ee339), uint32(0xde71f5bc), 5257 uint32(0xdfb39f8b), uint32(0xddf521d2), uint32(0xdc374be5), uint32(0xd76b0cd8), uint32(0xd6a966ef), 5258 uint32(0xd4efd8b6), uint32(0xd52db281), uint32(0xd062a404), uint32(0xd1a0ce33), uint32(0xd3e6706a), 5259 uint32(0xd2241a5d), uint32(0xc55efe10), uint32(0xc49c9427), uint32(0xc6da2a7e), uint32(0xc7184049), 5260 uint32(0xc25756cc), uint32(0xc3953cfb), uint32(0xc1d382a2), uint32(0xc011e895), uint32(0xcb4dafa8), 5261 uint32(0xca8fc59f), uint32(0xc8c97bc6), uint32(0xc90b11f1), uint32(0xcc440774), uint32(0xcd866d43), 5262 uint32(0xcfc0d31a), uint32(0xce02b92d), uint32(0x91af9640), uint32(0x906dfc77), uint32(0x922b422e), 5263 uint32(0x93e92819), uint32(0x96a63e9c), uint32(0x976454ab), uint32(0x9522eaf2), uint32(0x94e080c5), 5264 uint32(0x9fbcc7f8), uint32(0x9e7eadcf), uint32(0x9c381396), uint32(0x9dfa79a1), uint32(0x98b56f24), 5265 uint32(0x99770513), uint32(0x9b31bb4a), uint32(0x9af3d17d), uint32(0x8d893530), uint32(0x8c4b5f07), 5266 uint32(0x8e0de15e), uint32(0x8fcf8b69), uint32(0x8a809dec), uint32(0x8b42f7db), uint32(0x89044982), 5267 uint32(0x88c623b5), uint32(0x839a6488), uint32(0x82580ebf), uint32(0x801eb0e6), uint32(0x81dcdad1), 5268 uint32(0x8493cc54), uint32(0x8551a663), uint32(0x8717183a), uint32(0x86d5720d), uint32(0xa9e2d0a0), 5269 uint32(0xa820ba97), uint32(0xaa6604ce), uint32(0xaba46ef9), uint32(0xaeeb787c), uint32(0xaf29124b), 5270 uint32(0xad6fac12), uint32(0xacadc625), uint32(0xa7f18118), uint32(0xa633eb2f), uint32(0xa4755576), 5271 uint32(0xa5b73f41), uint32(0xa0f829c4), uint32(0xa13a43f3), uint32(0xa37cfdaa), uint32(0xa2be979d), 5272 uint32(0xb5c473d0), uint32(0xb40619e7), uint32(0xb640a7be), uint32(0xb782cd89), uint32(0xb2cddb0c), 5273 uint32(0xb30fb13b), uint32(0xb1490f62), uint32(0xb08b6555), uint32(0xbbd72268), uint32(0xba15485f), 5274 uint32(0xb853f606), uint32(0xb9919c31), uint32(0xbcde8ab4), uint32(0xbd1ce083), uint32(0xbf5a5eda), 5275 uint32(0xbe9834ed), 5276 }, 5277 { 5278 uint32(0x00000000), uint32(0xb8bc6765), uint32(0xaa09c88b), uint32(0x12b5afee), uint32(0x8f629757), 5279 uint32(0x37def032), uint32(0x256b5fdc), uint32(0x9dd738b9), uint32(0xc5b428ef), uint32(0x7d084f8a), 5280 uint32(0x6fbde064), uint32(0xd7018701), uint32(0x4ad6bfb8), uint32(0xf26ad8dd), uint32(0xe0df7733), 5281 uint32(0x58631056), uint32(0x5019579f), uint32(0xe8a530fa), uint32(0xfa109f14), uint32(0x42acf871), 5282 uint32(0xdf7bc0c8), uint32(0x67c7a7ad), uint32(0x75720843), uint32(0xcdce6f26), uint32(0x95ad7f70), 5283 uint32(0x2d111815), uint32(0x3fa4b7fb), uint32(0x8718d09e), uint32(0x1acfe827), uint32(0xa2738f42), 5284 uint32(0xb0c620ac), uint32(0x087a47c9), uint32(0xa032af3e), uint32(0x188ec85b), uint32(0x0a3b67b5), 5285 uint32(0xb28700d0), uint32(0x2f503869), uint32(0x97ec5f0c), uint32(0x8559f0e2), uint32(0x3de59787), 5286 uint32(0x658687d1), uint32(0xdd3ae0b4), uint32(0xcf8f4f5a), uint32(0x7733283f), uint32(0xeae41086), 5287 uint32(0x525877e3), uint32(0x40edd80d), uint32(0xf851bf68), uint32(0xf02bf8a1), uint32(0x48979fc4), 5288 uint32(0x5a22302a), uint32(0xe29e574f), uint32(0x7f496ff6), uint32(0xc7f50893), uint32(0xd540a77d), 5289 uint32(0x6dfcc018), uint32(0x359fd04e), uint32(0x8d23b72b), uint32(0x9f9618c5), uint32(0x272a7fa0), 5290 uint32(0xbafd4719), uint32(0x0241207c), uint32(0x10f48f92), uint32(0xa848e8f7), uint32(0x9b14583d), 5291 uint32(0x23a83f58), uint32(0x311d90b6), uint32(0x89a1f7d3), uint32(0x1476cf6a), uint32(0xaccaa80f), 5292 uint32(0xbe7f07e1), uint32(0x06c36084), uint32(0x5ea070d2), uint32(0xe61c17b7), uint32(0xf4a9b859), 5293 uint32(0x4c15df3c), uint32(0xd1c2e785), uint32(0x697e80e0), uint32(0x7bcb2f0e), uint32(0xc377486b), 5294 uint32(0xcb0d0fa2), uint32(0x73b168c7), uint32(0x6104c729), uint32(0xd9b8a04c), uint32(0x446f98f5), 5295 uint32(0xfcd3ff90), uint32(0xee66507e), uint32(0x56da371b), uint32(0x0eb9274d), uint32(0xb6054028), 5296 uint32(0xa4b0efc6), uint32(0x1c0c88a3), uint32(0x81dbb01a), uint32(0x3967d77f), uint32(0x2bd27891), 5297 uint32(0x936e1ff4), uint32(0x3b26f703), uint32(0x839a9066), uint32(0x912f3f88), uint32(0x299358ed), 5298 uint32(0xb4446054), uint32(0x0cf80731), uint32(0x1e4da8df), uint32(0xa6f1cfba), uint32(0xfe92dfec), 5299 uint32(0x462eb889), uint32(0x549b1767), uint32(0xec277002), uint32(0x71f048bb), uint32(0xc94c2fde), 5300 uint32(0xdbf98030), uint32(0x6345e755), uint32(0x6b3fa09c), uint32(0xd383c7f9), uint32(0xc1366817), 5301 uint32(0x798a0f72), uint32(0xe45d37cb), uint32(0x5ce150ae), uint32(0x4e54ff40), uint32(0xf6e89825), 5302 uint32(0xae8b8873), uint32(0x1637ef16), uint32(0x048240f8), uint32(0xbc3e279d), uint32(0x21e91f24), 5303 uint32(0x99557841), uint32(0x8be0d7af), uint32(0x335cb0ca), uint32(0xed59b63b), uint32(0x55e5d15e), 5304 uint32(0x47507eb0), uint32(0xffec19d5), uint32(0x623b216c), uint32(0xda874609), uint32(0xc832e9e7), 5305 uint32(0x708e8e82), uint32(0x28ed9ed4), uint32(0x9051f9b1), uint32(0x82e4565f), uint32(0x3a58313a), 5306 uint32(0xa78f0983), uint32(0x1f336ee6), uint32(0x0d86c108), uint32(0xb53aa66d), uint32(0xbd40e1a4), 5307 uint32(0x05fc86c1), uint32(0x1749292f), uint32(0xaff54e4a), uint32(0x322276f3), uint32(0x8a9e1196), 5308 uint32(0x982bbe78), uint32(0x2097d91d), uint32(0x78f4c94b), uint32(0xc048ae2e), uint32(0xd2fd01c0), 5309 uint32(0x6a4166a5), uint32(0xf7965e1c), uint32(0x4f2a3979), uint32(0x5d9f9697), uint32(0xe523f1f2), 5310 uint32(0x4d6b1905), uint32(0xf5d77e60), uint32(0xe762d18e), uint32(0x5fdeb6eb), uint32(0xc2098e52), 5311 uint32(0x7ab5e937), uint32(0x680046d9), uint32(0xd0bc21bc), uint32(0x88df31ea), uint32(0x3063568f), 5312 uint32(0x22d6f961), uint32(0x9a6a9e04), uint32(0x07bda6bd), uint32(0xbf01c1d8), uint32(0xadb46e36), 5313 uint32(0x15080953), uint32(0x1d724e9a), uint32(0xa5ce29ff), uint32(0xb77b8611), uint32(0x0fc7e174), 5314 uint32(0x9210d9cd), uint32(0x2aacbea8), uint32(0x38191146), uint32(0x80a57623), uint32(0xd8c66675), 5315 uint32(0x607a0110), uint32(0x72cfaefe), uint32(0xca73c99b), uint32(0x57a4f122), uint32(0xef189647), 5316 uint32(0xfdad39a9), uint32(0x45115ecc), uint32(0x764dee06), uint32(0xcef18963), uint32(0xdc44268d), 5317 uint32(0x64f841e8), uint32(0xf92f7951), uint32(0x41931e34), uint32(0x5326b1da), uint32(0xeb9ad6bf), 5318 uint32(0xb3f9c6e9), uint32(0x0b45a18c), uint32(0x19f00e62), uint32(0xa14c6907), uint32(0x3c9b51be), 5319 uint32(0x842736db), uint32(0x96929935), uint32(0x2e2efe50), uint32(0x2654b999), uint32(0x9ee8defc), 5320 uint32(0x8c5d7112), uint32(0x34e11677), uint32(0xa9362ece), uint32(0x118a49ab), uint32(0x033fe645), 5321 uint32(0xbb838120), uint32(0xe3e09176), uint32(0x5b5cf613), uint32(0x49e959fd), uint32(0xf1553e98), 5322 uint32(0x6c820621), uint32(0xd43e6144), uint32(0xc68bceaa), uint32(0x7e37a9cf), uint32(0xd67f4138), 5323 uint32(0x6ec3265d), uint32(0x7c7689b3), uint32(0xc4caeed6), uint32(0x591dd66f), uint32(0xe1a1b10a), 5324 uint32(0xf3141ee4), uint32(0x4ba87981), uint32(0x13cb69d7), uint32(0xab770eb2), uint32(0xb9c2a15c), 5325 uint32(0x017ec639), uint32(0x9ca9fe80), uint32(0x241599e5), uint32(0x36a0360b), uint32(0x8e1c516e), 5326 uint32(0x866616a7), uint32(0x3eda71c2), uint32(0x2c6fde2c), uint32(0x94d3b949), uint32(0x090481f0), 5327 uint32(0xb1b8e695), uint32(0xa30d497b), uint32(0x1bb12e1e), uint32(0x43d23e48), uint32(0xfb6e592d), 5328 uint32(0xe9dbf6c3), uint32(0x516791a6), uint32(0xccb0a91f), uint32(0x740cce7a), uint32(0x66b96194), 5329 uint32(0xde0506f1), 5330 }, 5331 { 5332 uint32(0x00000000), uint32(0x96300777), uint32(0x2c610eee), uint32(0xba510999), uint32(0x19c46d07), 5333 uint32(0x8ff46a70), uint32(0x35a563e9), uint32(0xa395649e), uint32(0x3288db0e), uint32(0xa4b8dc79), 5334 uint32(0x1ee9d5e0), uint32(0x88d9d297), uint32(0x2b4cb609), uint32(0xbd7cb17e), uint32(0x072db8e7), 5335 uint32(0x911dbf90), uint32(0x6410b71d), uint32(0xf220b06a), uint32(0x4871b9f3), uint32(0xde41be84), 5336 uint32(0x7dd4da1a), uint32(0xebe4dd6d), uint32(0x51b5d4f4), uint32(0xc785d383), uint32(0x56986c13), 5337 uint32(0xc0a86b64), uint32(0x7af962fd), uint32(0xecc9658a), uint32(0x4f5c0114), uint32(0xd96c0663), 5338 uint32(0x633d0ffa), uint32(0xf50d088d), uint32(0xc8206e3b), uint32(0x5e10694c), uint32(0xe44160d5), 5339 uint32(0x727167a2), uint32(0xd1e4033c), uint32(0x47d4044b), uint32(0xfd850dd2), uint32(0x6bb50aa5), 5340 uint32(0xfaa8b535), uint32(0x6c98b242), uint32(0xd6c9bbdb), uint32(0x40f9bcac), uint32(0xe36cd832), 5341 uint32(0x755cdf45), uint32(0xcf0dd6dc), uint32(0x593dd1ab), uint32(0xac30d926), uint32(0x3a00de51), 5342 uint32(0x8051d7c8), uint32(0x1661d0bf), uint32(0xb5f4b421), uint32(0x23c4b356), uint32(0x9995bacf), 5343 uint32(0x0fa5bdb8), uint32(0x9eb80228), uint32(0x0888055f), uint32(0xb2d90cc6), uint32(0x24e90bb1), 5344 uint32(0x877c6f2f), uint32(0x114c6858), uint32(0xab1d61c1), uint32(0x3d2d66b6), uint32(0x9041dc76), 5345 uint32(0x0671db01), uint32(0xbc20d298), uint32(0x2a10d5ef), uint32(0x8985b171), uint32(0x1fb5b606), 5346 uint32(0xa5e4bf9f), uint32(0x33d4b8e8), uint32(0xa2c90778), uint32(0x34f9000f), uint32(0x8ea80996), 5347 uint32(0x18980ee1), uint32(0xbb0d6a7f), uint32(0x2d3d6d08), uint32(0x976c6491), uint32(0x015c63e6), 5348 uint32(0xf4516b6b), uint32(0x62616c1c), uint32(0xd8306585), uint32(0x4e0062f2), uint32(0xed95066c), 5349 uint32(0x7ba5011b), uint32(0xc1f40882), uint32(0x57c40ff5), uint32(0xc6d9b065), uint32(0x50e9b712), 5350 uint32(0xeab8be8b), uint32(0x7c88b9fc), uint32(0xdf1ddd62), uint32(0x492dda15), uint32(0xf37cd38c), 5351 uint32(0x654cd4fb), uint32(0x5861b24d), uint32(0xce51b53a), uint32(0x7400bca3), uint32(0xe230bbd4), 5352 uint32(0x41a5df4a), uint32(0xd795d83d), uint32(0x6dc4d1a4), uint32(0xfbf4d6d3), uint32(0x6ae96943), 5353 uint32(0xfcd96e34), uint32(0x468867ad), uint32(0xd0b860da), uint32(0x732d0444), uint32(0xe51d0333), 5354 uint32(0x5f4c0aaa), uint32(0xc97c0ddd), uint32(0x3c710550), uint32(0xaa410227), uint32(0x10100bbe), 5355 uint32(0x86200cc9), uint32(0x25b56857), uint32(0xb3856f20), uint32(0x09d466b9), uint32(0x9fe461ce), 5356 uint32(0x0ef9de5e), uint32(0x98c9d929), uint32(0x2298d0b0), uint32(0xb4a8d7c7), uint32(0x173db359), 5357 uint32(0x810db42e), uint32(0x3b5cbdb7), uint32(0xad6cbac0), uint32(0x2083b8ed), uint32(0xb6b3bf9a), 5358 uint32(0x0ce2b603), uint32(0x9ad2b174), uint32(0x3947d5ea), uint32(0xaf77d29d), uint32(0x1526db04), 5359 uint32(0x8316dc73), uint32(0x120b63e3), uint32(0x843b6494), uint32(0x3e6a6d0d), uint32(0xa85a6a7a), 5360 uint32(0x0bcf0ee4), uint32(0x9dff0993), uint32(0x27ae000a), uint32(0xb19e077d), uint32(0x44930ff0), 5361 uint32(0xd2a30887), uint32(0x68f2011e), uint32(0xfec20669), uint32(0x5d5762f7), uint32(0xcb676580), 5362 uint32(0x71366c19), uint32(0xe7066b6e), uint32(0x761bd4fe), uint32(0xe02bd389), uint32(0x5a7ada10), 5363 uint32(0xcc4add67), uint32(0x6fdfb9f9), uint32(0xf9efbe8e), uint32(0x43beb717), uint32(0xd58eb060), 5364 uint32(0xe8a3d6d6), uint32(0x7e93d1a1), uint32(0xc4c2d838), uint32(0x52f2df4f), uint32(0xf167bbd1), 5365 uint32(0x6757bca6), uint32(0xdd06b53f), uint32(0x4b36b248), uint32(0xda2b0dd8), uint32(0x4c1b0aaf), 5366 uint32(0xf64a0336), uint32(0x607a0441), uint32(0xc3ef60df), uint32(0x55df67a8), uint32(0xef8e6e31), 5367 uint32(0x79be6946), uint32(0x8cb361cb), uint32(0x1a8366bc), uint32(0xa0d26f25), uint32(0x36e26852), 5368 uint32(0x95770ccc), uint32(0x03470bbb), uint32(0xb9160222), uint32(0x2f260555), uint32(0xbe3bbac5), 5369 uint32(0x280bbdb2), uint32(0x925ab42b), uint32(0x046ab35c), uint32(0xa7ffd7c2), uint32(0x31cfd0b5), 5370 uint32(0x8b9ed92c), uint32(0x1daede5b), uint32(0xb0c2649b), uint32(0x26f263ec), uint32(0x9ca36a75), 5371 uint32(0x0a936d02), uint32(0xa906099c), uint32(0x3f360eeb), uint32(0x85670772), uint32(0x13570005), 5372 uint32(0x824abf95), uint32(0x147ab8e2), uint32(0xae2bb17b), uint32(0x381bb60c), uint32(0x9b8ed292), 5373 uint32(0x0dbed5e5), uint32(0xb7efdc7c), uint32(0x21dfdb0b), uint32(0xd4d2d386), uint32(0x42e2d4f1), 5374 uint32(0xf8b3dd68), uint32(0x6e83da1f), uint32(0xcd16be81), uint32(0x5b26b9f6), uint32(0xe177b06f), 5375 uint32(0x7747b718), uint32(0xe65a0888), uint32(0x706a0fff), uint32(0xca3b0666), uint32(0x5c0b0111), 5376 uint32(0xff9e658f), uint32(0x69ae62f8), uint32(0xd3ff6b61), uint32(0x45cf6c16), uint32(0x78e20aa0), 5377 uint32(0xeed20dd7), uint32(0x5483044e), uint32(0xc2b30339), uint32(0x612667a7), uint32(0xf71660d0), 5378 uint32(0x4d476949), uint32(0xdb776e3e), uint32(0x4a6ad1ae), uint32(0xdc5ad6d9), uint32(0x660bdf40), 5379 uint32(0xf03bd837), uint32(0x53aebca9), uint32(0xc59ebbde), uint32(0x7fcfb247), uint32(0xe9ffb530), 5380 uint32(0x1cf2bdbd), uint32(0x8ac2baca), uint32(0x3093b353), uint32(0xa6a3b424), uint32(0x0536d0ba), 5381 uint32(0x9306d7cd), uint32(0x2957de54), uint32(0xbf67d923), uint32(0x2e7a66b3), uint32(0xb84a61c4), 5382 uint32(0x021b685d), uint32(0x942b6f2a), uint32(0x37be0bb4), uint32(0xa18e0cc3), uint32(0x1bdf055a), 5383 uint32(0x8def022d), 5384 }, 5385 { 5386 uint32(0x00000000), uint32(0x41311b19), uint32(0x82623632), uint32(0xc3532d2b), uint32(0x04c56c64), 5387 uint32(0x45f4777d), uint32(0x86a75a56), uint32(0xc796414f), uint32(0x088ad9c8), uint32(0x49bbc2d1), 5388 uint32(0x8ae8effa), uint32(0xcbd9f4e3), uint32(0x0c4fb5ac), uint32(0x4d7eaeb5), uint32(0x8e2d839e), 5389 uint32(0xcf1c9887), uint32(0x5112c24a), uint32(0x1023d953), uint32(0xd370f478), uint32(0x9241ef61), 5390 uint32(0x55d7ae2e), uint32(0x14e6b537), uint32(0xd7b5981c), uint32(0x96848305), uint32(0x59981b82), 5391 uint32(0x18a9009b), uint32(0xdbfa2db0), uint32(0x9acb36a9), uint32(0x5d5d77e6), uint32(0x1c6c6cff), 5392 uint32(0xdf3f41d4), uint32(0x9e0e5acd), uint32(0xa2248495), uint32(0xe3159f8c), uint32(0x2046b2a7), 5393 uint32(0x6177a9be), uint32(0xa6e1e8f1), uint32(0xe7d0f3e8), uint32(0x2483dec3), uint32(0x65b2c5da), 5394 uint32(0xaaae5d5d), uint32(0xeb9f4644), uint32(0x28cc6b6f), uint32(0x69fd7076), uint32(0xae6b3139), 5395 uint32(0xef5a2a20), uint32(0x2c09070b), uint32(0x6d381c12), uint32(0xf33646df), uint32(0xb2075dc6), 5396 uint32(0x715470ed), uint32(0x30656bf4), uint32(0xf7f32abb), uint32(0xb6c231a2), uint32(0x75911c89), 5397 uint32(0x34a00790), uint32(0xfbbc9f17), uint32(0xba8d840e), uint32(0x79dea925), uint32(0x38efb23c), 5398 uint32(0xff79f373), uint32(0xbe48e86a), uint32(0x7d1bc541), uint32(0x3c2ade58), uint32(0x054f79f0), 5399 uint32(0x447e62e9), uint32(0x872d4fc2), uint32(0xc61c54db), uint32(0x018a1594), uint32(0x40bb0e8d), 5400 uint32(0x83e823a6), uint32(0xc2d938bf), uint32(0x0dc5a038), uint32(0x4cf4bb21), uint32(0x8fa7960a), 5401 uint32(0xce968d13), uint32(0x0900cc5c), uint32(0x4831d745), uint32(0x8b62fa6e), uint32(0xca53e177), 5402 uint32(0x545dbbba), uint32(0x156ca0a3), uint32(0xd63f8d88), uint32(0x970e9691), uint32(0x5098d7de), 5403 uint32(0x11a9ccc7), uint32(0xd2fae1ec), uint32(0x93cbfaf5), uint32(0x5cd76272), uint32(0x1de6796b), 5404 uint32(0xdeb55440), uint32(0x9f844f59), uint32(0x58120e16), uint32(0x1923150f), uint32(0xda703824), 5405 uint32(0x9b41233d), uint32(0xa76bfd65), uint32(0xe65ae67c), uint32(0x2509cb57), uint32(0x6438d04e), 5406 uint32(0xa3ae9101), uint32(0xe29f8a18), uint32(0x21cca733), uint32(0x60fdbc2a), uint32(0xafe124ad), 5407 uint32(0xeed03fb4), uint32(0x2d83129f), uint32(0x6cb20986), uint32(0xab2448c9), uint32(0xea1553d0), 5408 uint32(0x29467efb), uint32(0x687765e2), uint32(0xf6793f2f), uint32(0xb7482436), uint32(0x741b091d), 5409 uint32(0x352a1204), uint32(0xf2bc534b), uint32(0xb38d4852), uint32(0x70de6579), uint32(0x31ef7e60), 5410 uint32(0xfef3e6e7), uint32(0xbfc2fdfe), uint32(0x7c91d0d5), uint32(0x3da0cbcc), uint32(0xfa368a83), 5411 uint32(0xbb07919a), uint32(0x7854bcb1), uint32(0x3965a7a8), uint32(0x4b98833b), uint32(0x0aa99822), 5412 uint32(0xc9fab509), uint32(0x88cbae10), uint32(0x4f5def5f), uint32(0x0e6cf446), uint32(0xcd3fd96d), 5413 uint32(0x8c0ec274), uint32(0x43125af3), uint32(0x022341ea), uint32(0xc1706cc1), uint32(0x804177d8), 5414 uint32(0x47d73697), uint32(0x06e62d8e), uint32(0xc5b500a5), uint32(0x84841bbc), uint32(0x1a8a4171), 5415 uint32(0x5bbb5a68), uint32(0x98e87743), uint32(0xd9d96c5a), uint32(0x1e4f2d15), uint32(0x5f7e360c), 5416 uint32(0x9c2d1b27), uint32(0xdd1c003e), uint32(0x120098b9), uint32(0x533183a0), uint32(0x9062ae8b), 5417 uint32(0xd153b592), uint32(0x16c5f4dd), uint32(0x57f4efc4), uint32(0x94a7c2ef), uint32(0xd596d9f6), 5418 uint32(0xe9bc07ae), uint32(0xa88d1cb7), uint32(0x6bde319c), uint32(0x2aef2a85), uint32(0xed796bca), 5419 uint32(0xac4870d3), uint32(0x6f1b5df8), uint32(0x2e2a46e1), uint32(0xe136de66), uint32(0xa007c57f), 5420 uint32(0x6354e854), uint32(0x2265f34d), uint32(0xe5f3b202), uint32(0xa4c2a91b), uint32(0x67918430), 5421 uint32(0x26a09f29), uint32(0xb8aec5e4), uint32(0xf99fdefd), uint32(0x3accf3d6), uint32(0x7bfde8cf), 5422 uint32(0xbc6ba980), uint32(0xfd5ab299), uint32(0x3e099fb2), uint32(0x7f3884ab), uint32(0xb0241c2c), 5423 uint32(0xf1150735), uint32(0x32462a1e), uint32(0x73773107), uint32(0xb4e17048), uint32(0xf5d06b51), 5424 uint32(0x3683467a), uint32(0x77b25d63), uint32(0x4ed7facb), uint32(0x0fe6e1d2), uint32(0xccb5ccf9), 5425 uint32(0x8d84d7e0), uint32(0x4a1296af), uint32(0x0b238db6), uint32(0xc870a09d), uint32(0x8941bb84), 5426 uint32(0x465d2303), uint32(0x076c381a), uint32(0xc43f1531), uint32(0x850e0e28), uint32(0x42984f67), 5427 uint32(0x03a9547e), uint32(0xc0fa7955), uint32(0x81cb624c), uint32(0x1fc53881), uint32(0x5ef42398), 5428 uint32(0x9da70eb3), uint32(0xdc9615aa), uint32(0x1b0054e5), uint32(0x5a314ffc), uint32(0x996262d7), 5429 uint32(0xd85379ce), uint32(0x174fe149), uint32(0x567efa50), uint32(0x952dd77b), uint32(0xd41ccc62), 5430 uint32(0x138a8d2d), uint32(0x52bb9634), uint32(0x91e8bb1f), uint32(0xd0d9a006), uint32(0xecf37e5e), 5431 uint32(0xadc26547), uint32(0x6e91486c), uint32(0x2fa05375), uint32(0xe836123a), uint32(0xa9070923), 5432 uint32(0x6a542408), uint32(0x2b653f11), uint32(0xe479a796), uint32(0xa548bc8f), uint32(0x661b91a4), 5433 uint32(0x272a8abd), uint32(0xe0bccbf2), uint32(0xa18dd0eb), uint32(0x62defdc0), uint32(0x23efe6d9), 5434 uint32(0xbde1bc14), uint32(0xfcd0a70d), uint32(0x3f838a26), uint32(0x7eb2913f), uint32(0xb924d070), 5435 uint32(0xf815cb69), uint32(0x3b46e642), uint32(0x7a77fd5b), uint32(0xb56b65dc), uint32(0xf45a7ec5), 5436 uint32(0x370953ee), uint32(0x763848f7), uint32(0xb1ae09b8), uint32(0xf09f12a1), uint32(0x33cc3f8a), 5437 uint32(0x72fd2493), 5438 }, 5439 { 5440 uint32(0x00000000), uint32(0x376ac201), uint32(0x6ed48403), uint32(0x59be4602), uint32(0xdca80907), 5441 uint32(0xebc2cb06), uint32(0xb27c8d04), uint32(0x85164f05), uint32(0xb851130e), uint32(0x8f3bd10f), 5442 uint32(0xd685970d), uint32(0xe1ef550c), uint32(0x64f91a09), uint32(0x5393d808), uint32(0x0a2d9e0a), 5443 uint32(0x3d475c0b), uint32(0x70a3261c), uint32(0x47c9e41d), uint32(0x1e77a21f), uint32(0x291d601e), 5444 uint32(0xac0b2f1b), uint32(0x9b61ed1a), uint32(0xc2dfab18), uint32(0xf5b56919), uint32(0xc8f23512), 5445 uint32(0xff98f713), uint32(0xa626b111), uint32(0x914c7310), uint32(0x145a3c15), uint32(0x2330fe14), 5446 uint32(0x7a8eb816), uint32(0x4de47a17), uint32(0xe0464d38), uint32(0xd72c8f39), uint32(0x8e92c93b), 5447 uint32(0xb9f80b3a), uint32(0x3cee443f), uint32(0x0b84863e), uint32(0x523ac03c), uint32(0x6550023d), 5448 uint32(0x58175e36), uint32(0x6f7d9c37), uint32(0x36c3da35), uint32(0x01a91834), uint32(0x84bf5731), 5449 uint32(0xb3d59530), uint32(0xea6bd332), uint32(0xdd011133), uint32(0x90e56b24), uint32(0xa78fa925), 5450 uint32(0xfe31ef27), uint32(0xc95b2d26), uint32(0x4c4d6223), uint32(0x7b27a022), uint32(0x2299e620), 5451 uint32(0x15f32421), uint32(0x28b4782a), uint32(0x1fdeba2b), uint32(0x4660fc29), uint32(0x710a3e28), 5452 uint32(0xf41c712d), uint32(0xc376b32c), uint32(0x9ac8f52e), uint32(0xada2372f), uint32(0xc08d9a70), 5453 uint32(0xf7e75871), uint32(0xae591e73), uint32(0x9933dc72), uint32(0x1c259377), uint32(0x2b4f5176), 5454 uint32(0x72f11774), uint32(0x459bd575), uint32(0x78dc897e), uint32(0x4fb64b7f), uint32(0x16080d7d), 5455 uint32(0x2162cf7c), uint32(0xa4748079), uint32(0x931e4278), uint32(0xcaa0047a), uint32(0xfdcac67b), 5456 uint32(0xb02ebc6c), uint32(0x87447e6d), uint32(0xdefa386f), uint32(0xe990fa6e), uint32(0x6c86b56b), 5457 uint32(0x5bec776a), uint32(0x02523168), uint32(0x3538f369), uint32(0x087faf62), uint32(0x3f156d63), 5458 uint32(0x66ab2b61), uint32(0x51c1e960), uint32(0xd4d7a665), uint32(0xe3bd6464), uint32(0xba032266), 5459 uint32(0x8d69e067), uint32(0x20cbd748), uint32(0x17a11549), uint32(0x4e1f534b), uint32(0x7975914a), 5460 uint32(0xfc63de4f), uint32(0xcb091c4e), uint32(0x92b75a4c), uint32(0xa5dd984d), uint32(0x989ac446), 5461 uint32(0xaff00647), uint32(0xf64e4045), uint32(0xc1248244), uint32(0x4432cd41), uint32(0x73580f40), 5462 uint32(0x2ae64942), uint32(0x1d8c8b43), uint32(0x5068f154), uint32(0x67023355), uint32(0x3ebc7557), 5463 uint32(0x09d6b756), uint32(0x8cc0f853), uint32(0xbbaa3a52), uint32(0xe2147c50), uint32(0xd57ebe51), 5464 uint32(0xe839e25a), uint32(0xdf53205b), uint32(0x86ed6659), uint32(0xb187a458), uint32(0x3491eb5d), 5465 uint32(0x03fb295c), uint32(0x5a456f5e), uint32(0x6d2fad5f), uint32(0x801b35e1), uint32(0xb771f7e0), 5466 uint32(0xeecfb1e2), uint32(0xd9a573e3), uint32(0x5cb33ce6), uint32(0x6bd9fee7), uint32(0x3267b8e5), 5467 uint32(0x050d7ae4), uint32(0x384a26ef), uint32(0x0f20e4ee), uint32(0x569ea2ec), uint32(0x61f460ed), 5468 uint32(0xe4e22fe8), uint32(0xd388ede9), uint32(0x8a36abeb), uint32(0xbd5c69ea), uint32(0xf0b813fd), 5469 uint32(0xc7d2d1fc), uint32(0x9e6c97fe), uint32(0xa90655ff), uint32(0x2c101afa), uint32(0x1b7ad8fb), 5470 uint32(0x42c49ef9), uint32(0x75ae5cf8), uint32(0x48e900f3), uint32(0x7f83c2f2), uint32(0x263d84f0), 5471 uint32(0x115746f1), uint32(0x944109f4), uint32(0xa32bcbf5), uint32(0xfa958df7), uint32(0xcdff4ff6), 5472 uint32(0x605d78d9), uint32(0x5737bad8), uint32(0x0e89fcda), uint32(0x39e33edb), uint32(0xbcf571de), 5473 uint32(0x8b9fb3df), uint32(0xd221f5dd), uint32(0xe54b37dc), uint32(0xd80c6bd7), uint32(0xef66a9d6), 5474 uint32(0xb6d8efd4), uint32(0x81b22dd5), uint32(0x04a462d0), uint32(0x33cea0d1), uint32(0x6a70e6d3), 5475 uint32(0x5d1a24d2), uint32(0x10fe5ec5), uint32(0x27949cc4), uint32(0x7e2adac6), uint32(0x494018c7), 5476 uint32(0xcc5657c2), uint32(0xfb3c95c3), uint32(0xa282d3c1), uint32(0x95e811c0), uint32(0xa8af4dcb), 5477 uint32(0x9fc58fca), uint32(0xc67bc9c8), uint32(0xf1110bc9), uint32(0x740744cc), uint32(0x436d86cd), 5478 uint32(0x1ad3c0cf), uint32(0x2db902ce), uint32(0x4096af91), uint32(0x77fc6d90), uint32(0x2e422b92), 5479 uint32(0x1928e993), uint32(0x9c3ea696), uint32(0xab546497), uint32(0xf2ea2295), uint32(0xc580e094), 5480 uint32(0xf8c7bc9f), uint32(0xcfad7e9e), uint32(0x9613389c), uint32(0xa179fa9d), uint32(0x246fb598), 5481 uint32(0x13057799), uint32(0x4abb319b), uint32(0x7dd1f39a), uint32(0x3035898d), uint32(0x075f4b8c), 5482 uint32(0x5ee10d8e), uint32(0x698bcf8f), uint32(0xec9d808a), uint32(0xdbf7428b), uint32(0x82490489), 5483 uint32(0xb523c688), uint32(0x88649a83), uint32(0xbf0e5882), uint32(0xe6b01e80), uint32(0xd1dadc81), 5484 uint32(0x54cc9384), uint32(0x63a65185), uint32(0x3a181787), uint32(0x0d72d586), uint32(0xa0d0e2a9), 5485 uint32(0x97ba20a8), uint32(0xce0466aa), uint32(0xf96ea4ab), uint32(0x7c78ebae), uint32(0x4b1229af), 5486 uint32(0x12ac6fad), uint32(0x25c6adac), uint32(0x1881f1a7), uint32(0x2feb33a6), uint32(0x765575a4), 5487 uint32(0x413fb7a5), uint32(0xc429f8a0), uint32(0xf3433aa1), uint32(0xaafd7ca3), uint32(0x9d97bea2), 5488 uint32(0xd073c4b5), uint32(0xe71906b4), uint32(0xbea740b6), uint32(0x89cd82b7), uint32(0x0cdbcdb2), 5489 uint32(0x3bb10fb3), uint32(0x620f49b1), uint32(0x55658bb0), uint32(0x6822d7bb), uint32(0x5f4815ba), 5490 uint32(0x06f653b8), uint32(0x319c91b9), uint32(0xb48adebc), uint32(0x83e01cbd), uint32(0xda5e5abf), 5491 uint32(0xed3498be), 5492 }, 5493 { 5494 uint32(0x00000000), uint32(0x6567bcb8), uint32(0x8bc809aa), uint32(0xeeafb512), uint32(0x5797628f), 5495 uint32(0x32f0de37), uint32(0xdc5f6b25), uint32(0xb938d79d), uint32(0xef28b4c5), uint32(0x8a4f087d), 5496 uint32(0x64e0bd6f), uint32(0x018701d7), uint32(0xb8bfd64a), uint32(0xddd86af2), uint32(0x3377dfe0), 5497 uint32(0x56106358), uint32(0x9f571950), uint32(0xfa30a5e8), uint32(0x149f10fa), uint32(0x71f8ac42), 5498 uint32(0xc8c07bdf), uint32(0xada7c767), uint32(0x43087275), uint32(0x266fcecd), uint32(0x707fad95), 5499 uint32(0x1518112d), uint32(0xfbb7a43f), uint32(0x9ed01887), uint32(0x27e8cf1a), uint32(0x428f73a2), 5500 uint32(0xac20c6b0), uint32(0xc9477a08), uint32(0x3eaf32a0), uint32(0x5bc88e18), uint32(0xb5673b0a), 5501 uint32(0xd00087b2), uint32(0x6938502f), uint32(0x0c5fec97), uint32(0xe2f05985), uint32(0x8797e53d), 5502 uint32(0xd1878665), uint32(0xb4e03add), uint32(0x5a4f8fcf), uint32(0x3f283377), uint32(0x8610e4ea), 5503 uint32(0xe3775852), uint32(0x0dd8ed40), uint32(0x68bf51f8), uint32(0xa1f82bf0), uint32(0xc49f9748), 5504 uint32(0x2a30225a), uint32(0x4f579ee2), uint32(0xf66f497f), uint32(0x9308f5c7), uint32(0x7da740d5), 5505 uint32(0x18c0fc6d), uint32(0x4ed09f35), uint32(0x2bb7238d), uint32(0xc518969f), uint32(0xa07f2a27), 5506 uint32(0x1947fdba), uint32(0x7c204102), uint32(0x928ff410), uint32(0xf7e848a8), uint32(0x3d58149b), 5507 uint32(0x583fa823), uint32(0xb6901d31), uint32(0xd3f7a189), uint32(0x6acf7614), uint32(0x0fa8caac), 5508 uint32(0xe1077fbe), uint32(0x8460c306), uint32(0xd270a05e), uint32(0xb7171ce6), uint32(0x59b8a9f4), 5509 uint32(0x3cdf154c), uint32(0x85e7c2d1), uint32(0xe0807e69), uint32(0x0e2fcb7b), uint32(0x6b4877c3), 5510 uint32(0xa20f0dcb), uint32(0xc768b173), uint32(0x29c70461), uint32(0x4ca0b8d9), uint32(0xf5986f44), 5511 uint32(0x90ffd3fc), uint32(0x7e5066ee), uint32(0x1b37da56), uint32(0x4d27b90e), uint32(0x284005b6), 5512 uint32(0xc6efb0a4), uint32(0xa3880c1c), uint32(0x1ab0db81), uint32(0x7fd76739), uint32(0x9178d22b), 5513 uint32(0xf41f6e93), uint32(0x03f7263b), uint32(0x66909a83), uint32(0x883f2f91), uint32(0xed589329), 5514 uint32(0x546044b4), uint32(0x3107f80c), uint32(0xdfa84d1e), uint32(0xbacff1a6), uint32(0xecdf92fe), 5515 uint32(0x89b82e46), uint32(0x67179b54), uint32(0x027027ec), uint32(0xbb48f071), uint32(0xde2f4cc9), 5516 uint32(0x3080f9db), uint32(0x55e74563), uint32(0x9ca03f6b), uint32(0xf9c783d3), uint32(0x176836c1), 5517 uint32(0x720f8a79), uint32(0xcb375de4), uint32(0xae50e15c), uint32(0x40ff544e), uint32(0x2598e8f6), 5518 uint32(0x73888bae), uint32(0x16ef3716), uint32(0xf8408204), uint32(0x9d273ebc), uint32(0x241fe921), 5519 uint32(0x41785599), uint32(0xafd7e08b), uint32(0xcab05c33), uint32(0x3bb659ed), uint32(0x5ed1e555), 5520 uint32(0xb07e5047), uint32(0xd519ecff), uint32(0x6c213b62), uint32(0x094687da), uint32(0xe7e932c8), 5521 uint32(0x828e8e70), uint32(0xd49eed28), uint32(0xb1f95190), uint32(0x5f56e482), uint32(0x3a31583a), 5522 uint32(0x83098fa7), uint32(0xe66e331f), uint32(0x08c1860d), uint32(0x6da63ab5), uint32(0xa4e140bd), 5523 uint32(0xc186fc05), uint32(0x2f294917), uint32(0x4a4ef5af), uint32(0xf3762232), uint32(0x96119e8a), 5524 uint32(0x78be2b98), uint32(0x1dd99720), uint32(0x4bc9f478), uint32(0x2eae48c0), uint32(0xc001fdd2), 5525 uint32(0xa566416a), uint32(0x1c5e96f7), uint32(0x79392a4f), uint32(0x97969f5d), uint32(0xf2f123e5), 5526 uint32(0x05196b4d), uint32(0x607ed7f5), uint32(0x8ed162e7), uint32(0xebb6de5f), uint32(0x528e09c2), 5527 uint32(0x37e9b57a), uint32(0xd9460068), uint32(0xbc21bcd0), uint32(0xea31df88), uint32(0x8f566330), 5528 uint32(0x61f9d622), uint32(0x049e6a9a), uint32(0xbda6bd07), uint32(0xd8c101bf), uint32(0x366eb4ad), 5529 uint32(0x53090815), uint32(0x9a4e721d), uint32(0xff29cea5), uint32(0x11867bb7), uint32(0x74e1c70f), 5530 uint32(0xcdd91092), uint32(0xa8beac2a), uint32(0x46111938), uint32(0x2376a580), uint32(0x7566c6d8), 5531 uint32(0x10017a60), uint32(0xfeaecf72), uint32(0x9bc973ca), uint32(0x22f1a457), uint32(0x479618ef), 5532 uint32(0xa939adfd), uint32(0xcc5e1145), uint32(0x06ee4d76), uint32(0x6389f1ce), uint32(0x8d2644dc), 5533 uint32(0xe841f864), uint32(0x51792ff9), uint32(0x341e9341), uint32(0xdab12653), uint32(0xbfd69aeb), 5534 uint32(0xe9c6f9b3), uint32(0x8ca1450b), uint32(0x620ef019), uint32(0x07694ca1), uint32(0xbe519b3c), 5535 uint32(0xdb362784), uint32(0x35999296), uint32(0x50fe2e2e), uint32(0x99b95426), uint32(0xfcdee89e), 5536 uint32(0x12715d8c), uint32(0x7716e134), uint32(0xce2e36a9), uint32(0xab498a11), uint32(0x45e63f03), 5537 uint32(0x208183bb), uint32(0x7691e0e3), uint32(0x13f65c5b), uint32(0xfd59e949), uint32(0x983e55f1), 5538 uint32(0x2106826c), uint32(0x44613ed4), uint32(0xaace8bc6), uint32(0xcfa9377e), uint32(0x38417fd6), 5539 uint32(0x5d26c36e), uint32(0xb389767c), uint32(0xd6eecac4), uint32(0x6fd61d59), uint32(0x0ab1a1e1), 5540 uint32(0xe41e14f3), uint32(0x8179a84b), uint32(0xd769cb13), uint32(0xb20e77ab), uint32(0x5ca1c2b9), 5541 uint32(0x39c67e01), uint32(0x80fea99c), uint32(0xe5991524), uint32(0x0b36a036), uint32(0x6e511c8e), 5542 uint32(0xa7166686), uint32(0xc271da3e), uint32(0x2cde6f2c), uint32(0x49b9d394), uint32(0xf0810409), 5543 uint32(0x95e6b8b1), uint32(0x7b490da3), uint32(0x1e2eb11b), uint32(0x483ed243), uint32(0x2d596efb), 5544 uint32(0xc3f6dbe9), uint32(0xa6916751), uint32(0x1fa9b0cc), uint32(0x7ace0c74), uint32(0x9461b966), 5545 uint32(0xf10605de), 5546 }, 5547 } /* crc32.h:5:25 */ 5548 5549 // ========================================================================= 5550 // This function can be used by asm versions of crc32() 5551 func Xget_crc_table(tls *libc.TLS) uintptr { /* crc32.c:188:19: */ 5552 return uintptr(uintptr(unsafe.Pointer(&crc_table))) 5553 } 5554 5555 // ========================================================================= 5556 5557 // ========================================================================= 5558 func Xcrc32_z(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:202:23: */ 5559 bp := tls.Alloc(4) 5560 defer tls.Free(4) 5561 5562 if buf == uintptr(Z_NULL) { 5563 return 0 5564 } 5565 5566 if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(Ptrdiff_t(0))) { 5567 // var endian Z_crc_t at bp, 4 5568 5569 *(*Z_crc_t)(unsafe.Pointer(bp /* endian */)) = Z_crc_t(1) 5570 if *(*uint8)(unsafe.Pointer(bp)) != 0 { 5571 return crc32_little(tls, crc, buf, len) 5572 } else { 5573 return crc32_big(tls, crc, buf, len) 5574 } 5575 } 5576 crc = crc ^ 0xffffffff 5577 for len >= uint64(8) { 5578 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5579 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5580 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5581 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5582 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5583 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5584 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5585 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5586 len = len - uint64(8) 5587 } 5588 if len != 0 { 5589 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint64(&len, 1) != 0 { 5590 crc = uint64(*(*Z_crc_t)(unsafe.Pointer(uintptr(unsafe.Pointer(&crc_table)) + uintptr((int32(crc)^int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&0xff)*4))) ^ crc>>8 5591 } 5592 } 5593 return crc ^ 0xffffffff 5594 } 5595 5596 // ========================================================================= 5597 func Xcrc32(tls *libc.TLS, crc uint64, buf uintptr, len UInt) uint64 { /* crc32.c:237:23: */ 5598 return Xcrc32_z(tls, crc, buf, uint64(len)) 5599 } 5600 5601 // 5602 // This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit 5603 // integer pointer type. This violates the strict aliasing rule, where a 5604 // compiler can assume, for optimization purposes, that two pointers to 5605 // fundamentally different types won't ever point to the same memory. This can 5606 // manifest as a problem only if one of the pointers is written to. This code 5607 // only reads from those pointers. So long as this code remains isolated in 5608 // this compilation unit, there won't be a problem. For this reason, this code 5609 // should not be copied and pasted into a compilation unit in which other code 5610 // writes to the buffer that is passed to these routines. 5611 // 5612 5613 // ========================================================================= 5614 5615 // ========================================================================= 5616 func crc32_little(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:266:21: */ 5617 var c Z_crc_t 5618 var buf4 uintptr 5619 5620 c = Z_crc_t(crc) 5621 c = ^c 5622 for len != 0 && Ptrdiff_t(buf)&int64(3) != 0 { 5623 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 5624 len-- 5625 } 5626 5627 buf4 = buf 5628 for len >= uint64(32) { 5629 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5630 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)) 5631 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5632 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)) 5633 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5634 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)) 5635 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5636 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)) 5637 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5638 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)) 5639 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5640 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)) 5641 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5642 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)) 5643 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5644 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)) 5645 len = len - uint64(32) 5646 } 5647 for len >= uint64(4) { 5648 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5649 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)) 5650 len = len - uint64(4) 5651 } 5652 buf = buf4 5653 5654 if len != 0 { 5655 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint64(&len, 1) != 0 { 5656 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 5657 } 5658 } 5659 c = ^c 5660 return uint64(c) 5661 } 5662 5663 // ========================================================================= 5664 5665 // ========================================================================= 5666 func crc32_big(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:306:21: */ 5667 var c Z_crc_t 5668 var buf4 uintptr 5669 5670 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 5671 c = ^c 5672 for len != 0 && Ptrdiff_t(buf)&int64(3) != 0 { 5673 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 5674 len-- 5675 } 5676 5677 buf4 = buf 5678 for len >= uint64(32) { 5679 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5680 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)) 5681 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5682 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)) 5683 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5684 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)) 5685 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5686 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)) 5687 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5688 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)) 5689 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5690 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)) 5691 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5692 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)) 5693 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5694 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)) 5695 len = len - uint64(32) 5696 } 5697 for len >= uint64(4) { 5698 c = c ^ *(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))) 5699 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)) 5700 len = len - uint64(4) 5701 } 5702 buf = buf4 5703 5704 if len != 0 { 5705 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint64(&len, 1) != 0 { 5706 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 5707 } 5708 } 5709 c = ^c 5710 return uint64(c>>24&Z_crc_t(0xff) + c>>8&Z_crc_t(0xff00) + c&Z_crc_t(0xff00)<<8 + c&Z_crc_t(0xff)<<24) 5711 } 5712 5713 // ========================================================================= 5714 func gf2_matrix_times(tls *libc.TLS, mat uintptr, vec uint64) uint64 { /* crc32.c:344:21: */ 5715 var sum uint64 5716 5717 sum = uint64(0) 5718 for vec != 0 { 5719 if vec&uint64(1) != 0 { 5720 sum = sum ^ *(*uint64)(unsafe.Pointer(mat)) 5721 } 5722 vec >>= 1 5723 mat += 8 5724 } 5725 return sum 5726 } 5727 5728 // ========================================================================= 5729 func gf2_matrix_square(tls *libc.TLS, square uintptr, mat uintptr) { /* crc32.c:361:12: */ 5730 var n int32 5731 5732 for n = 0; n < GF2_DIM; n++ { 5733 *(*uint64)(unsafe.Pointer(square + uintptr(n)*8)) = gf2_matrix_times(tls, mat, *(*uint64)(unsafe.Pointer(mat + uintptr(n)*8))) 5734 } 5735 } 5736 5737 // ========================================================================= 5738 func crc32_combine_(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off64_t) ULong { /* crc32.c:372:13: */ 5739 bp := tls.Alloc(512) 5740 defer tls.Free(512) 5741 5742 var n int32 5743 var row uint64 5744 // var even [32]uint64 at bp+256, 256 5745 // even-power-of-two zeros operator 5746 // var odd [32]uint64 at bp, 256 5747 // odd-power-of-two zeros operator 5748 5749 // degenerate case (also disallow negative lengths) 5750 if len2 <= int64(0) { 5751 return crc1 5752 } 5753 5754 // put operator for one zero bit in odd 5755 *(*uint64)(unsafe.Pointer(bp)) = 0xedb88320 // CRC-32 polynomial 5756 row = uint64(1) 5757 for n = 1; n < GF2_DIM; n++ { 5758 *(*uint64)(unsafe.Pointer(bp + uintptr(n)*8)) = row 5759 row <<= 1 5760 } 5761 5762 // put operator for two zero bits in even 5763 gf2_matrix_square(tls, bp+256, bp) 5764 5765 // put operator for four zero bits in odd 5766 gf2_matrix_square(tls, bp, bp+256) 5767 5768 // apply len2 zeros to crc1 (first square will put the operator for one 5769 // zero byte, eight zero bits, in even) 5770 for __ccgo := true; __ccgo; __ccgo = len2 != int64(0) { 5771 // apply zeros operator for this bit of len2 5772 gf2_matrix_square(tls, bp+256, bp) 5773 if len2&int64(1) != 0 { 5774 crc1 = gf2_matrix_times(tls, bp+256, crc1) 5775 } 5776 len2 >>= 1 5777 5778 // if no more bits set, then done 5779 if len2 == int64(0) { 5780 break 5781 } 5782 5783 // another iteration of the loop with odd and even swapped 5784 gf2_matrix_square(tls, bp, bp+256) 5785 if len2&int64(1) != 0 { 5786 crc1 = gf2_matrix_times(tls, bp, crc1) 5787 } 5788 len2 >>= 1 5789 5790 // if no more bits set, then done 5791 } 5792 5793 // return combined crc 5794 crc1 = crc1 ^ crc2 5795 return crc1 5796 } 5797 5798 // ========================================================================= 5799 func Xcrc32_combine(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:428:15: */ 5800 return crc32_combine_(tls, crc1, crc2, len2) 5801 } 5802 5803 func Xcrc32_combine64(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off64_t) ULong { /* crc32.c:436:15: */ 5804 return crc32_combine_(tls, crc1, crc2, len2) 5805 } 5806 5807 // Reverse the bytes in a 32-bit value 5808 5809 // define NO_GZIP when compiling if you want to disable gzip header and 5810 // trailer creation by deflate(). NO_GZIP would be used to avoid linking in 5811 // the crc code when it is not needed. For shared libraries, gzip encoding 5812 // should be left enabled. 5813 5814 // =========================================================================== 5815 // Internal compression state. 5816 5817 // number of length codes, not counting the special END_BLOCK code 5818 5819 // number of literal bytes 0..255 5820 5821 // number of Literal or Length codes, including the END_BLOCK code 5822 5823 // number of distance codes 5824 5825 // number of codes used to transfer the bit lengths 5826 5827 // maximum heap size 5828 5829 // All codes must not exceed MAX_BITS bits 5830 5831 // size of bit buffer in bi_buf 5832 5833 // Stream status 5834 5835 // Data structure describing a single value and its code string. 5836 type Ct_data_s = struct { 5837 Ffc struct{ Ffreq Ush } 5838 Fdl struct{ Fdad Ush } 5839 } /* zlib.h:84:1 */ 5840 5841 // Reverse the bytes in a 32-bit value 5842 5843 // define NO_GZIP when compiling if you want to disable gzip header and 5844 // trailer creation by deflate(). NO_GZIP would be used to avoid linking in 5845 // the crc code when it is not needed. For shared libraries, gzip encoding 5846 // should be left enabled. 5847 5848 // =========================================================================== 5849 // Internal compression state. 5850 5851 // number of length codes, not counting the special END_BLOCK code 5852 5853 // number of literal bytes 0..255 5854 5855 // number of Literal or Length codes, including the END_BLOCK code 5856 5857 // number of distance codes 5858 5859 // number of codes used to transfer the bit lengths 5860 5861 // maximum heap size 5862 5863 // All codes must not exceed MAX_BITS bits 5864 5865 // size of bit buffer in bi_buf 5866 5867 // Stream status 5868 5869 // Data structure describing a single value and its code string. 5870 type Ct_data = Ct_data_s /* deflate.h:77:7 */ 5871 5872 type Static_tree_desc_s = struct { 5873 Fstatic_tree uintptr 5874 Fextra_bits uintptr 5875 Fextra_base int32 5876 Felems int32 5877 Fmax_length int32 5878 F__ccgo_pad1 [4]byte 5879 } /* deflate.h:84:9 */ 5880 5881 type Tree_desc_s = struct { 5882 Fdyn_tree uintptr 5883 Fmax_code int32 5884 F__ccgo_pad1 [4]byte 5885 Fstat_desc uintptr 5886 } /* zlib.h:84:1 */ 5887 5888 type Tree_desc = Tree_desc_s /* deflate.h:90:7 */ 5889 5890 type Pos = Ush /* deflate.h:92:13 */ 5891 type Posf = Pos /* deflate.h:93:17 */ 5892 type IPos = uint32 /* deflate.h:94:18 */ 5893 5894 // A Pos is an index in the character window. We use short instead of int to 5895 // save space in the various tables. IPos is used only for parameter passing. 5896 5897 type Deflate_state = Internal_state /* deflate.h:276:7 */ 5898 5899 var Xdeflate_copyright = *(*[69]uint8)(unsafe.Pointer(ts + 7)) /* deflate.c:54:12 */ 5900 // 5901 // If you use the zlib library in a product, an acknowledgment is welcome 5902 // in the documentation of your product. If for some reason you cannot 5903 // include such an acknowledgment, I would appreciate that you keep this 5904 // copyright string in the executable of your product. 5905 // 5906 5907 // =========================================================================== 5908 // Function prototypes. 5909 type Block_state = uint32 /* deflate.c:71:3 */ 5910 5911 type Compress_func = uintptr /* deflate.c:73:21 */ 5912 5913 // =========================================================================== 5914 // Local data 5915 5916 // Tail of hash chains 5917 5918 // Matches of length 3 are discarded if their distance exceeds TOO_FAR 5919 5920 // Values for max_lazy_match, good_match and max_chain_length, depending on 5921 // the desired pack level (0..9). The values given below have been tuned to 5922 // exclude worst case performance for pathological files. Better values may be 5923 // found for specific files. 5924 type Config_s = struct { 5925 Fgood_length Ush 5926 Fmax_lazy Ush 5927 Fnice_length Ush 5928 Fmax_chain Ush 5929 Ffunc Compress_func 5930 } /* deflate.c:120:9 */ 5931 5932 // =========================================================================== 5933 // Local data 5934 5935 // Tail of hash chains 5936 5937 // Matches of length 3 are discarded if their distance exceeds TOO_FAR 5938 5939 // Values for max_lazy_match, good_match and max_chain_length, depending on 5940 // the desired pack level (0..9). The values given below have been tuned to 5941 // exclude worst case performance for pathological files. Better values may be 5942 // found for specific files. 5943 type Config = Config_s /* deflate.c:126:3 */ 5944 5945 var configuration_table = [10]Config{ 5946 // good lazy nice chain 5947 /* 0 */ {Ffunc: 0}, // store only 5948 /* 1 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(8), Fmax_chain: Ush(4), Ffunc: 0}, // max speed, no lazy matches 5949 /* 2 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(5), Fnice_length: Ush(16), Fmax_chain: Ush(8), Ffunc: 0}, 5950 /* 3 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(6), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0}, 5951 5952 /* 4 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(16), Fmax_chain: Ush(16), Ffunc: 0}, // lazy matches 5953 /* 5 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0}, 5954 /* 6 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(128), Fmax_chain: Ush(128), Ffunc: 0}, 5955 /* 7 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(32), Fnice_length: Ush(128), Fmax_chain: Ush(256), Ffunc: 0}, 5956 /* 8 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(128), Fnice_length: Ush(258), Fmax_chain: Ush(1024), Ffunc: 0}, 5957 /* 9 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(258), Fnice_length: Ush(258), Fmax_chain: Ush(4096), Ffunc: 0}} /* deflate.c:134:20 */ 5958 5959 // max compression 5960 5961 // Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 5962 // For deflate_fast() (levels <= 3) good is ignored and lazy has a different 5963 // meaning. 5964 5965 // rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH 5966 5967 // =========================================================================== 5968 // Update a hash value with the given input byte 5969 // IN assertion: all calls to UPDATE_HASH are made with consecutive input 5970 // characters, so that a running hash key can be computed from the previous 5971 // key instead of complete recalculation each time. 5972 5973 // =========================================================================== 5974 // Insert string str in the dictionary and set match_head to the previous head 5975 // of the hash chain (the most recent string with same hash key). Return 5976 // the previous length of the hash chain. 5977 // If this file is compiled with -DFASTEST, the compression level is forced 5978 // to 1, and no hash chains are maintained. 5979 // IN assertion: all calls to INSERT_STRING are made with consecutive input 5980 // characters and the first MIN_MATCH bytes of str are valid (except for 5981 // the last MIN_MATCH-1 bytes of the input file). 5982 5983 // =========================================================================== 5984 // Initialize the hash table (avoiding 64K overflow for 16 bit systems). 5985 // prev[] will be initialized on the fly. 5986 5987 // =========================================================================== 5988 // Slide the hash table when sliding the window down (could be avoided with 32 5989 // bit values at the expense of memory usage). We slide even when level == 0 to 5990 // keep the hash table consistent if we switch back to level > 0 later. 5991 func slide_hash(tls *libc.TLS, s uintptr) { /* deflate.c:201:12: */ 5992 var n uint32 5993 var m uint32 5994 var p uintptr 5995 var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 5996 5997 n = (*Deflate_state)(unsafe.Pointer(s)).Fhash_size 5998 p = (*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(n)*2 5999 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&n, 1) != 0 { 6000 m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2)))) 6001 *(*Posf)(unsafe.Pointer(p)) = func() uint16 { 6002 if m >= wsize { 6003 return uint16(m - wsize) 6004 } 6005 return uint16(NIL) 6006 }() 6007 } 6008 n = wsize 6009 p = (*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr(n)*2 6010 for __ccgo1 := true; __ccgo1; __ccgo1 = libc.PreDecUint32(&n, 1) != 0 { 6011 m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2)))) 6012 *(*Posf)(unsafe.Pointer(p)) = func() uint16 { 6013 if m >= wsize { 6014 return uint16(m - wsize) 6015 } 6016 return uint16(NIL) 6017 }() 6018 // If n is not on any hash chain, prev[n] is garbage but 6019 // its value will never be used. 6020 } 6021 } 6022 6023 // ========================================================================= 6024 func XdeflateInit_(tls *libc.TLS, strm Z_streamp, level int32, version uintptr, stream_size int32) int32 { /* deflate.c:228:13: */ 6025 return XdeflateInit2_(tls, strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, 6026 Z_DEFAULT_STRATEGY, version, stream_size) 6027 // To do: ignore strm->next_in if we use it as window 6028 } 6029 6030 // ========================================================================= 6031 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: */ 6032 var s uintptr 6033 var wrap int32 = 1 6034 var overlay uintptr 6035 // We overlay pending_buf and d_buf+l_buf. This works since the average 6036 // output size for (length,distance) codes is <= 24 bits. 6037 6038 if version == uintptr(Z_NULL) || int32(*(*uint8)(unsafe.Pointer(version))) != int32(my_version[0]) || uint64(stream_size) != uint64(unsafe.Sizeof(Z_stream{})) { 6039 return -6 6040 } 6041 if strm == uintptr(Z_NULL) { 6042 return -2 6043 } 6044 6045 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 6046 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 6047 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 6048 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 6049 }{Xzcalloc})) 6050 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 6051 } 6052 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 6053 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 6054 f func(*libc.TLS, Voidpf, Voidpf) 6055 }{Xzcfree})) 6056 } 6057 6058 if level == -1 { 6059 level = 6 6060 } 6061 6062 if windowBits < 0 { // suppress zlib wrapper 6063 wrap = 0 6064 windowBits = -windowBits 6065 } else if windowBits > 15 { 6066 wrap = 2 // write gzip wrapper instead 6067 windowBits = windowBits - 16 6068 } 6069 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 { 6070 return -2 6071 } 6072 if windowBits == 8 { 6073 windowBits = 9 6074 } // until 256-byte window bug fixed 6075 s = (*struct { 6076 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6077 })(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{}))) 6078 if s == uintptr(Z_NULL) { 6079 return -4 6080 } 6081 (*Z_stream)(unsafe.Pointer(strm)).Fstate = s 6082 (*Deflate_state)(unsafe.Pointer(s)).Fstrm = strm 6083 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = INIT_STATE // to pass state test in deflateReset() 6084 6085 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap 6086 (*Deflate_state)(unsafe.Pointer(s)).Fgzhead = Gz_headerp(Z_NULL) 6087 (*Deflate_state)(unsafe.Pointer(s)).Fw_bits = UInt(windowBits) 6088 (*Deflate_state)(unsafe.Pointer(s)).Fw_size = UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fw_bits) 6089 (*Deflate_state)(unsafe.Pointer(s)).Fw_mask = (*Deflate_state)(unsafe.Pointer(s)).Fw_size - UInt(1) 6090 6091 (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits = UInt(memLevel) + UInt(7) 6092 (*Deflate_state)(unsafe.Pointer(s)).Fhash_size = UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits) 6093 (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask = (*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1) 6094 (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift = ((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits + UInt(MIN_MATCH) - UInt(1)) / UInt(MIN_MATCH) 6095 6096 (*Deflate_state)(unsafe.Pointer(s)).Fwindow = (*struct { 6097 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6098 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fw_size, uint32(uint64(2)*uint64(unsafe.Sizeof(Byte(0))))) 6099 (*Deflate_state)(unsafe.Pointer(s)).Fprev = (*struct { 6100 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6101 })(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)))) 6102 (*Deflate_state)(unsafe.Pointer(s)).Fhead = (*struct { 6103 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6104 })(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)))) 6105 6106 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = uint64(0) // nothing written to s->window yet 6107 6108 (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize = UInt(int32(1) << (memLevel + 6)) // 16K elements by default 6109 6110 overlay = (*struct { 6111 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 6112 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize, uint32(uint64(unsafe.Sizeof(Ush(0)))+uint64(2))) 6113 (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf = overlay 6114 (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size = Ulg((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize) * (uint64(unsafe.Sizeof(Ush(0))) + uint64(2)) 6115 6116 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) { 6117 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE 6118 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[Z_NEED_DICT - -4] 6119 XdeflateEnd(tls, strm) 6120 return -4 6121 } 6122 (*Deflate_state)(unsafe.Pointer(s)).Fd_buf = overlay + uintptr(uint64((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize)/uint64(unsafe.Sizeof(Ush(0))))*2 6123 (*Deflate_state)(unsafe.Pointer(s)).Fl_buf = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((uint64(1)+uint64(unsafe.Sizeof(Ush(0))))*uint64((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize)) 6124 6125 (*Deflate_state)(unsafe.Pointer(s)).Flevel = level 6126 (*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy 6127 (*Deflate_state)(unsafe.Pointer(s)).Fmethod = Byte(method) 6128 6129 return XdeflateReset(tls, strm) 6130 } 6131 6132 var my_version = *(*[7]uint8)(unsafe.Pointer(ts)) /* deflate.c:253:23 */ 6133 6134 // ========================================================================= 6135 // Check for a valid deflate stream state. Return 0 if ok, 1 if not. 6136 func deflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:353:11: */ 6137 var s uintptr 6138 if strm == uintptr(Z_NULL) || (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) || (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 6139 return 1 6140 } 6141 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6142 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 { 6143 return 1 6144 } 6145 return 0 6146 } 6147 6148 // ========================================================================= 6149 func XdeflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* deflate.c:376:13: */ 6150 var s uintptr 6151 var str UInt 6152 var n UInt 6153 var wrap int32 6154 var avail uint32 6155 var next uintptr 6156 6157 if deflateStateCheck(tls, strm) != 0 || dictionary == uintptr(Z_NULL) { 6158 return -2 6159 } 6160 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6161 wrap = (*Deflate_state)(unsafe.Pointer(s)).Fwrap 6162 if wrap == 2 || wrap == 1 && (*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE || (*Deflate_state)(unsafe.Pointer(s)).Flookahead != 0 { 6163 return -2 6164 } 6165 6166 // when using zlib wrappers, compute Adler-32 for provided dictionary 6167 if wrap == 1 { 6168 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, dictionary, dictLength) 6169 } 6170 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = 0 // avoid computing Adler-32 in read_buf 6171 6172 // if dictionary would fill window, just replace the history 6173 if dictLength >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { 6174 if wrap == 0 { // already empty otherwise 6175 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*2)) = Posf(NIL) 6176 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, uint64((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*uint64(unsafe.Sizeof(Posf(0)))) 6177 6178 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 6179 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 6180 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 6181 } 6182 dictionary += uintptr(dictLength - (*Deflate_state)(unsafe.Pointer(s)).Fw_size) // use the tail 6183 dictLength = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 6184 } 6185 6186 // insert dictionary into window and hash 6187 avail = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 6188 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 6189 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = dictLength 6190 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = dictionary 6191 fill_window(tls, s) 6192 for (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 6193 str = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 6194 n = (*Deflate_state)(unsafe.Pointer(s)).Flookahead - UInt(MIN_MATCH-1) 6195 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&n, 1) != 0 { 6196 (*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 6197 *(*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)) 6198 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str) 6199 str++ 6200 } 6201 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = str 6202 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(MIN_MATCH - 1) 6203 fill_window(tls, s) 6204 } 6205 *(*UInt)(unsafe.Pointer(s + 172)) += (*Deflate_state)(unsafe.Pointer(s)).Flookahead 6206 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 6207 (*Deflate_state)(unsafe.Pointer(s)).Finsert = (*Deflate_state)(unsafe.Pointer(s)).Flookahead 6208 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0) 6209 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+184, UInt(MIN_MATCH-1)) 6210 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 6211 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 6212 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = avail 6213 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap 6214 return Z_OK 6215 } 6216 6217 // ========================================================================= 6218 func XdeflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* deflate.c:445:13: */ 6219 var s uintptr 6220 var len UInt 6221 6222 if deflateStateCheck(tls, strm) != 0 { 6223 return -2 6224 } 6225 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6226 len = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead 6227 if len > (*Deflate_state)(unsafe.Pointer(s)).Fw_size { 6228 len = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 6229 } 6230 if dictionary != uintptr(Z_NULL) && len != 0 { 6231 libc.Xmemcpy(tls, dictionary, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)+uintptr((*Deflate_state)(unsafe.Pointer(s)).Flookahead)-uintptr(len), uint64(len)) 6232 } 6233 if dictLength != uintptr(Z_NULL) { 6234 *(*UInt)(unsafe.Pointer(dictLength)) = len 6235 } 6236 return Z_OK 6237 } 6238 6239 // ========================================================================= 6240 func XdeflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:467:13: */ 6241 var s uintptr 6242 6243 if deflateStateCheck(tls, strm) != 0 { 6244 return -2 6245 } 6246 6247 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint64(strm+40, uint64(0)) 6248 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // use zfree if we ever allocate msg dynamically 6249 (*Z_stream)(unsafe.Pointer(strm)).Fdata_type = Z_UNKNOWN 6250 6251 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6252 (*Deflate_state)(unsafe.Pointer(s)).Fpending = uint64(0) 6253 (*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf 6254 6255 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap < 0 { 6256 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap // was made negative by deflate(..., Z_FINISH); 6257 } 6258 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = func() int32 { 6259 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 6260 return GZIP_STATE 6261 } 6262 return func() int32 { 6263 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap != 0 { 6264 return INIT_STATE 6265 } 6266 return BUSY_STATE 6267 }() 6268 }() 6269 (*Z_stream)(unsafe.Pointer(strm)).Fadler = func() uint64 { 6270 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 6271 return Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 6272 } 6273 return Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 6274 }() 6275 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = Z_NO_FLUSH 6276 6277 X_tr_init(tls, s) 6278 6279 return Z_OK 6280 } 6281 6282 // ========================================================================= 6283 func XdeflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:505:13: */ 6284 var ret int32 6285 6286 ret = XdeflateResetKeep(tls, strm) 6287 if ret == Z_OK { 6288 lm_init(tls, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 6289 } 6290 return ret 6291 } 6292 6293 // ========================================================================= 6294 func XdeflateSetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* deflate.c:517:13: */ 6295 if deflateStateCheck(tls, strm) != 0 || (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap != 2 { 6296 return -2 6297 } 6298 (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fgzhead = head 6299 return Z_OK 6300 } 6301 6302 // ========================================================================= 6303 func XdeflatePending(tls *libc.TLS, strm Z_streamp, pending uintptr, bits uintptr) int32 { /* deflate.c:528:13: */ 6304 if deflateStateCheck(tls, strm) != 0 { 6305 return -2 6306 } 6307 if pending != uintptr(Z_NULL) { 6308 *(*uint32)(unsafe.Pointer(pending)) = uint32((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending) 6309 } 6310 if bits != uintptr(Z_NULL) { 6311 *(*int32)(unsafe.Pointer(bits)) = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fbi_valid 6312 } 6313 return Z_OK 6314 } 6315 6316 // ========================================================================= 6317 func XdeflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* deflate.c:542:13: */ 6318 var s uintptr 6319 var put int32 6320 6321 if deflateStateCheck(tls, strm) != 0 { 6322 return -2 6323 } 6324 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6325 if (*Deflate_state)(unsafe.Pointer(s)).Fd_buf < (*Deflate_state)(unsafe.Pointer(s)).Fpending_out+uintptr(int32(Buf_size+7)>>3) { 6326 return -5 6327 } 6328 for __ccgo := true; __ccgo; __ccgo = bits != 0 { 6329 put = Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid 6330 if put > bits { 6331 put = bits 6332 } 6333 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(value & (int32(1)<<put - 1) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))) 6334 *(*int32)(unsafe.Pointer(s + 5940)) += put 6335 X_tr_flush_bits(tls, s) 6336 value >>= put 6337 bits = bits - put 6338 } 6339 return Z_OK 6340 } 6341 6342 // ========================================================================= 6343 func XdeflateParams(tls *libc.TLS, strm Z_streamp, level int32, strategy int32) int32 { /* deflate.c:568:13: */ 6344 var s uintptr 6345 var func1 Compress_func 6346 6347 if deflateStateCheck(tls, strm) != 0 { 6348 return -2 6349 } 6350 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6351 6352 if level == -1 { 6353 level = 6 6354 } 6355 if level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED { 6356 return -2 6357 } 6358 func1 = configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc 6359 6360 if (strategy != (*Deflate_state)(unsafe.Pointer(s)).Fstrategy || func1 != configuration_table[level].Ffunc) && (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water != 0 { 6361 // Flush the last buffer: 6362 var err int32 = Xdeflate(tls, strm, Z_BLOCK) 6363 if err == -2 { 6364 return err 6365 } 6366 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6367 return -5 6368 } 6369 } 6370 if (*Deflate_state)(unsafe.Pointer(s)).Flevel != level { 6371 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 0 && (*Deflate_state)(unsafe.Pointer(s)).Fmatches != UInt(0) { 6372 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches == UInt(1) { 6373 slide_hash(tls, s) 6374 } else { 6375 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*2)) = Posf(NIL) 6376 } 6377 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, uint64((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*uint64(unsafe.Sizeof(Posf(0)))) 6378 6379 (*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(0) 6380 } 6381 (*Deflate_state)(unsafe.Pointer(s)).Flevel = level 6382 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[level].Fmax_lazy) 6383 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[level].Fgood_length) 6384 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[level].Fnice_length) 6385 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[level].Fmax_chain) 6386 } 6387 (*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy 6388 return Z_OK 6389 } 6390 6391 // ========================================================================= 6392 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: */ 6393 var s uintptr 6394 6395 if deflateStateCheck(tls, strm) != 0 { 6396 return -2 6397 } 6398 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6399 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(good_length) 6400 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(max_lazy) 6401 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = nice_length 6402 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(max_chain) 6403 return Z_OK 6404 } 6405 6406 // ========================================================================= 6407 // For the default windowBits of 15 and memLevel of 8, this function returns 6408 // a close to exact, as well as small, upper bound on the compressed size. 6409 // They are coded as constants here for a reason--if the #define's are 6410 // changed, then this function needs to be changed as well. The return 6411 // value for 15 and 8 only works for those exact settings. 6412 // 6413 // For any setting other than those defaults for windowBits and memLevel, 6414 // the value returned is a conservative worst case for the maximum expansion 6415 // resulting from using fixed blocks instead of stored blocks, which deflate 6416 // can emit on compressed data for some combinations of the parameters. 6417 // 6418 // This function could be more sophisticated to provide closer upper bounds for 6419 // every combination of windowBits and memLevel. But even the conservative 6420 // upper bound of about 14% expansion does not seem onerous for output buffer 6421 // allocation. 6422 func XdeflateBound(tls *libc.TLS, strm Z_streamp, sourceLen ULong) ULong { /* deflate.c:652:15: */ 6423 var s uintptr 6424 var complen ULong 6425 var wraplen ULong 6426 6427 // conservative upper bound for compressed data 6428 complen = sourceLen + (sourceLen+uint64(7))>>3 + (sourceLen+uint64(63))>>6 + uint64(5) 6429 6430 // if can't get parameters, return conservative bound plus zlib wrapper 6431 if deflateStateCheck(tls, strm) != 0 { 6432 return complen + uint64(6) 6433 } 6434 6435 // compute wrapper length 6436 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6437 switch (*Deflate_state)(unsafe.Pointer(s)).Fwrap { 6438 case 0: // raw deflate 6439 wraplen = uint64(0) 6440 break 6441 case 1: // zlib wrapper 6442 wraplen = ULong(6 + func() int32 { 6443 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != 0 { 6444 return 4 6445 } 6446 return 0 6447 }()) 6448 break 6449 case 2: // gzip wrapper 6450 wraplen = uint64(18) 6451 if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead != uintptr(Z_NULL) { // user-supplied gzip header 6452 var str uintptr 6453 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 6454 wraplen = wraplen + ULong(UInt(2)+(*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len) 6455 } 6456 str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname 6457 if str != uintptr(Z_NULL) { 6458 for __ccgo := true; __ccgo; __ccgo = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 { 6459 wraplen++ 6460 } 6461 } 6462 str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment 6463 if str != uintptr(Z_NULL) { 6464 for __ccgo1 := true; __ccgo1; __ccgo1 = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 { 6465 wraplen++ 6466 } 6467 } 6468 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6469 wraplen = wraplen + uint64(2) 6470 } 6471 } 6472 break 6473 default: // for compiler happiness 6474 wraplen = uint64(6) 6475 } 6476 6477 // if not default parameters, return conservative bound 6478 if (*Deflate_state)(unsafe.Pointer(s)).Fw_bits != UInt(15) || (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits != UInt(8+7) { 6479 return complen + wraplen 6480 } 6481 6482 // default settings: return tight bound for that case 6483 return sourceLen + sourceLen>>12 + sourceLen>>14 + sourceLen>>25 + uint64(13) - uint64(6) + wraplen 6484 } 6485 6486 // ========================================================================= 6487 // Put a short in the pending buffer. The 16-bit value is put in MSB order. 6488 // IN assertion: the stream state is correct and there is enough room in 6489 // pending_buf. 6490 func putShortMSB(tls *libc.TLS, s uintptr, b UInt) { /* deflate.c:716:12: */ 6491 { 6492 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte(b >> 8) 6493 } 6494 6495 { 6496 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte(b & UInt(0xff)) 6497 } 6498 6499 } 6500 6501 // ========================================================================= 6502 // Flush as much pending output as possible. All deflate() output, except for 6503 // some deflate_stored() output, goes through this function so some 6504 // applications may wish to modify it to avoid allocating a large 6505 // strm->next_out buffer and copying into it. (See also read_buf()). 6506 func flush_pending(tls *libc.TLS, strm Z_streamp) { /* deflate.c:730:12: */ 6507 var len uint32 6508 var s uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6509 6510 X_tr_flush_bits(tls, s) 6511 len = uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending) 6512 if len > (*Z_stream)(unsafe.Pointer(strm)).Favail_out { 6513 len = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 6514 } 6515 if len == uint32(0) { 6516 return 6517 } 6518 6519 libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (*Deflate_state)(unsafe.Pointer(s)).Fpending_out, uint64(len)) 6520 *(*uintptr)(unsafe.Pointer(strm + 24)) += uintptr(len) 6521 *(*uintptr)(unsafe.Pointer(s + 32)) += uintptr(len) 6522 *(*ULong)(unsafe.Pointer(strm + 40)) += ULong(len) 6523 *(*UInt)(unsafe.Pointer(strm + 32)) -= len 6524 *(*Ulg)(unsafe.Pointer(s + 40)) -= Ulg(len) 6525 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == uint64(0) { 6526 (*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf 6527 } 6528 } 6529 6530 // =========================================================================== 6531 // Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1]. 6532 6533 // ========================================================================= 6534 func Xdeflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* deflate.c:763:13: */ 6535 var old_flush int32 // value of flush param for previous deflate call 6536 var s uintptr 6537 6538 if deflateStateCheck(tls, strm) != 0 || flush > Z_BLOCK || flush < 0 { 6539 return -2 6540 } 6541 s = (*Z_stream)(unsafe.Pointer(strm)).Fstate 6542 6543 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 { 6544 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[Z_NEED_DICT - -2]; return -2 }() 6545 } 6546 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6547 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[Z_NEED_DICT - -5]; return -5 }() 6548 } 6549 6550 old_flush = (*Deflate_state)(unsafe.Pointer(s)).Flast_flush 6551 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = flush 6552 6553 // Flush as much pending output as possible 6554 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6555 flush_pending(tls, strm) 6556 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6557 // Since avail_out is 0, deflate will be called again with 6558 // more output space, but possibly with both pending and 6559 // avail_in equal to zero. There won't be anything to do, 6560 // but this is not an error situation so make sure we 6561 // return OK instead of BUF_ERROR at next call of deflate: 6562 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6563 return Z_OK 6564 } 6565 6566 // Make sure there is something to do and avoid duplicate consecutive 6567 // flushes. For repeated and useless calls with Z_FINISH, we keep 6568 // returning Z_STREAM_END instead of Z_BUF_ERROR. 6569 } else if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) && flush*2-func() int32 { 6570 if flush > 4 { 6571 return 9 6572 } 6573 return 0 6574 }() <= old_flush*2-func() int32 { 6575 if old_flush > 4 { 6576 return 9 6577 } 6578 return 0 6579 }() && flush != Z_FINISH { 6580 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[Z_NEED_DICT - -5]; return -5 }() 6581 } 6582 6583 // User must not provide more input after the first FINISH: 6584 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE && (*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0) { 6585 return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[Z_NEED_DICT - -5]; return -5 }() 6586 } 6587 6588 // Write the header 6589 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == INIT_STATE { 6590 // zlib header 6591 var header UInt = (UInt(Z_DEFLATED) + ((*Deflate_state)(unsafe.Pointer(s)).Fw_bits-UInt(8))<<4) << 8 6592 var level_flags UInt 6593 6594 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY || (*Deflate_state)(unsafe.Pointer(s)).Flevel < 2 { 6595 level_flags = UInt(0) 6596 } else if (*Deflate_state)(unsafe.Pointer(s)).Flevel < 6 { 6597 level_flags = UInt(1) 6598 } else if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 6 { 6599 level_flags = UInt(2) 6600 } else { 6601 level_flags = UInt(3) 6602 } 6603 header = header | level_flags<<6 6604 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) { 6605 header = header | UInt(PRESET_DICT) 6606 } 6607 header = header + (UInt(31) - header%UInt(31)) 6608 6609 putShortMSB(tls, s, header) 6610 6611 // Save the adler32 of the preset dictionary: 6612 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) { 6613 putShortMSB(tls, s, UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler>>16)) 6614 putShortMSB(tls, s, UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler&uint64(0xffff))) 6615 } 6616 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 6617 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 6618 6619 // Compression must start with an empty pending buffer 6620 flush_pending(tls, strm) 6621 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6622 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6623 return Z_OK 6624 } 6625 } 6626 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == GZIP_STATE { 6627 // gzip header 6628 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 6629 { 6630 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(31) 6631 } 6632 6633 { 6634 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(139) 6635 } 6636 6637 { 6638 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(8) 6639 } 6640 6641 if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead == uintptr(Z_NULL) { 6642 { 6643 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6644 } 6645 6646 { 6647 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6648 } 6649 6650 { 6651 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6652 } 6653 6654 { 6655 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6656 } 6657 6658 { 6659 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0) 6660 } 6661 6662 { 6663 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 { 6664 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 { 6665 return uint8(2) 6666 } 6667 return func() uint8 { 6668 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY || (*Deflate_state)(unsafe.Pointer(s)).Flevel < 2 { 6669 return uint8(4) 6670 } 6671 return uint8(0) 6672 }() 6673 }() 6674 } 6675 6676 { 6677 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(OS_CODE) 6678 } 6679 6680 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 6681 6682 // Compression must start with an empty pending buffer 6683 flush_pending(tls, strm) 6684 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6685 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6686 return Z_OK 6687 } 6688 } else { 6689 { 6690 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(func() int32 { 6691 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftext != 0 { 6692 return 1 6693 } 6694 return 0 6695 }() + func() int32 { 6696 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6697 return 2 6698 } 6699 return 0 6700 }() + func() int32 { 6701 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra == uintptr(Z_NULL) { 6702 return 0 6703 } 6704 return 4 6705 }() + func() int32 { 6706 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname == uintptr(Z_NULL) { 6707 return 0 6708 } 6709 return 8 6710 }() + func() int32 { 6711 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment == uintptr(Z_NULL) { 6712 return 0 6713 } 6714 return 16 6715 }()) 6716 } 6717 6718 { 6719 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime & uint64(0xff)) 6720 } 6721 6722 { 6723 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 8 & uint64(0xff)) 6724 } 6725 6726 { 6727 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 16 & uint64(0xff)) 6728 } 6729 6730 { 6731 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 24 & uint64(0xff)) 6732 } 6733 6734 { 6735 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 { 6736 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 { 6737 return uint8(2) 6738 } 6739 return func() uint8 { 6740 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY || (*Deflate_state)(unsafe.Pointer(s)).Flevel < 2 { 6741 return uint8(4) 6742 } 6743 return uint8(0) 6744 }() 6745 }() 6746 } 6747 6748 { 6749 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fos & 0xff) 6750 } 6751 6752 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 6753 { 6754 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xff)) 6755 } 6756 6757 { 6758 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len >> 8 & UInt(0xff)) 6759 } 6760 6761 } 6762 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6763 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf, 6764 uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending)) 6765 } 6766 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0) 6767 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = EXTRA_STATE 6768 } 6769 } 6770 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == EXTRA_STATE { 6771 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) { 6772 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 6773 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) 6774 for (*Deflate_state)(unsafe.Pointer(s)).Fpending+Ulg(left) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6775 var copy UInt = UInt((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fpending) 6776 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending), 6777 (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex), uint64(copy)) 6778 (*Deflate_state)(unsafe.Pointer(s)).Fpending = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size 6779 for __ccgo := true; __ccgo; __ccgo = 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 *(*Ulg)(unsafe.Pointer(s + 64)) += Ulg(copy) 6785 flush_pending(tls, strm) 6786 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6787 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6788 return Z_OK 6789 } 6790 beg = uint64(0) 6791 left = left - copy 6792 } 6793 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending), 6794 (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex), uint64(left)) 6795 *(*Ulg)(unsafe.Pointer(s + 40)) += Ulg(left) 6796 for __ccgo1 := true; __ccgo1; __ccgo1 = 0 != 0 { 6797 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 && (*Deflate_state)(unsafe.Pointer(s)).Fpending > beg { 6798 (*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)) 6799 } 6800 } 6801 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0) 6802 } 6803 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = NAME_STATE 6804 } 6805 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == NAME_STATE { 6806 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname != uintptr(Z_NULL) { 6807 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 6808 var val int32 6809 for __ccgo2 := true; __ccgo2; __ccgo2 = val != 0 { 6810 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6811 for __ccgo3 := true; __ccgo3; __ccgo3 = 0 != 0 { 6812 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 && (*Deflate_state)(unsafe.Pointer(s)).Fpending > beg { 6813 (*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)) 6814 } 6815 } 6816 flush_pending(tls, strm) 6817 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6818 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6819 return Z_OK 6820 } 6821 beg = uint64(0) 6822 } 6823 val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1))))) 6824 { 6825 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val) 6826 } 6827 6828 } 6829 for __ccgo4 := true; __ccgo4; __ccgo4 = 0 != 0 { 6830 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 && (*Deflate_state)(unsafe.Pointer(s)).Fpending > beg { 6831 (*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)) 6832 } 6833 } 6834 (*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0) 6835 } 6836 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = COMMENT_STATE 6837 } 6838 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == COMMENT_STATE { 6839 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment != uintptr(Z_NULL) { 6840 var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc 6841 var val int32 6842 for __ccgo5 := true; __ccgo5; __ccgo5 = val != 0 { 6843 if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6844 for __ccgo6 := true; __ccgo6; __ccgo6 = 0 != 0 { 6845 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 && (*Deflate_state)(unsafe.Pointer(s)).Fpending > beg { 6846 (*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)) 6847 } 6848 } 6849 flush_pending(tls, strm) 6850 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6851 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6852 return Z_OK 6853 } 6854 beg = uint64(0) 6855 } 6856 val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1))))) 6857 { 6858 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val) 6859 } 6860 6861 } 6862 for __ccgo7 := true; __ccgo7; __ccgo7 = 0 != 0 { 6863 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 && (*Deflate_state)(unsafe.Pointer(s)).Fpending > beg { 6864 (*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)) 6865 } 6866 } 6867 } 6868 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = HCRC_STATE 6869 } 6870 if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == HCRC_STATE { 6871 if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 { 6872 if (*Deflate_state)(unsafe.Pointer(s)).Fpending+uint64(2) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size { 6873 flush_pending(tls, strm) 6874 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6875 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6876 return Z_OK 6877 } 6878 } 6879 { 6880 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xff)) 6881 } 6882 6883 { 6884 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8 & uint64(0xff)) 6885 } 6886 6887 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 6888 } 6889 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE 6890 6891 // Compression must start with an empty pending buffer 6892 flush_pending(tls, strm) 6893 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 6894 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 6895 return Z_OK 6896 } 6897 } 6898 6899 // Start a new block or continue the current one. 6900 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 { 6901 var bstate Block_state 6902 6903 if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 0 { 6904 bstate = deflate_stored(tls, s, flush) 6905 } else { 6906 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_HUFFMAN_ONLY { 6907 bstate = deflate_huff(tls, s, flush) 6908 } else { 6909 if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_RLE { 6910 bstate = deflate_rle(tls, s, flush) 6911 } else { 6912 bstate = (*struct { 6913 f func(*libc.TLS, uintptr, int32) Block_state 6914 })(unsafe.Pointer(&struct{ uintptr }{configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc})).f(tls, s, flush) 6915 } 6916 } 6917 } 6918 6919 if bstate == Finish_started || bstate == Finish_done { 6920 (*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE 6921 } 6922 if bstate == Need_more || bstate == Finish_started { 6923 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6924 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR next call, see above 6925 } 6926 return Z_OK 6927 // If flush != Z_NO_FLUSH && avail_out == 0, the next call 6928 // of deflate should use the same flush parameter to make sure 6929 // that the flush is complete. So we don't have to output an 6930 // empty block here, this will be done at next call. This also 6931 // ensures that for a very small output buffer, we emit at most 6932 // one empty block. 6933 } 6934 if bstate == Block_done { 6935 if flush == Z_PARTIAL_FLUSH { 6936 X_tr_align(tls, s) 6937 } else if flush != Z_BLOCK { // FULL_FLUSH or SYNC_FLUSH 6938 X_tr_stored_block(tls, s, uintptr(0), uint64(0), 0) 6939 // For a full flush, this empty block will be recognized 6940 // as a special marker by inflate_sync(). 6941 if flush == Z_FULL_FLUSH { 6942 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*2)) = Posf(NIL) 6943 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, uint64((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*uint64(unsafe.Sizeof(Posf(0)))) 6944 // forget history 6945 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 6946 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 6947 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 6948 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 6949 } 6950 } 6951 } 6952 flush_pending(tls, strm) 6953 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 6954 (*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR at next call, see above 6955 return Z_OK 6956 } 6957 } 6958 } 6959 6960 if flush != Z_FINISH { 6961 return Z_OK 6962 } 6963 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap <= 0 { 6964 return Z_STREAM_END 6965 } 6966 6967 // Write the trailer 6968 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 { 6969 { 6970 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xff)) 6971 } 6972 6973 { 6974 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8 & uint64(0xff)) 6975 } 6976 6977 { 6978 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16 & uint64(0xff)) 6979 } 6980 6981 { 6982 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 24 & uint64(0xff)) 6983 } 6984 6985 { 6986 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in & uint64(0xff)) 6987 } 6988 6989 { 6990 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 8 & uint64(0xff)) 6991 } 6992 6993 { 6994 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 16 & uint64(0xff)) 6995 } 6996 6997 { 6998 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 24 & uint64(0xff)) 6999 } 7000 7001 } else { 7002 putShortMSB(tls, s, UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler>>16)) 7003 putShortMSB(tls, s, UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler&uint64(0xffff))) 7004 } 7005 flush_pending(tls, strm) 7006 // If avail_out is zero, the application will call deflate again 7007 // to flush the rest. 7008 if (*Deflate_state)(unsafe.Pointer(s)).Fwrap > 0 { 7009 (*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap 7010 } // write the trailer only once! 7011 if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) { 7012 return Z_OK 7013 } 7014 return Z_STREAM_END 7015 } 7016 7017 // ========================================================================= 7018 func XdeflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:1076:13: */ 7019 var status int32 7020 7021 if deflateStateCheck(tls, strm) != 0 { 7022 return -2 7023 } 7024 7025 status = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fstatus 7026 7027 /* Deallocate in reverse order of allocations: */ 7028 { 7029 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf != 0 { 7030 (*struct { 7031 f func(*libc.TLS, Voidpf, Voidpf) 7032 })(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) 7033 } 7034 } 7035 7036 { 7037 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead != 0 { 7038 (*struct { 7039 f func(*libc.TLS, Voidpf, Voidpf) 7040 })(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) 7041 } 7042 } 7043 7044 { 7045 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev != 0 { 7046 (*struct { 7047 f func(*libc.TLS, Voidpf, Voidpf) 7048 })(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) 7049 } 7050 } 7051 7052 { 7053 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow != 0 { 7054 (*struct { 7055 f func(*libc.TLS, Voidpf, Voidpf) 7056 })(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) 7057 } 7058 } 7059 7060 (*struct { 7061 f func(*libc.TLS, Voidpf, Voidpf) 7062 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 7063 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 7064 7065 if status == BUSY_STATE { 7066 return -3 7067 } 7068 return Z_OK 7069 } 7070 7071 // ========================================================================= 7072 // Copy the source state to the destination state. 7073 // To simplify the source, this is not supported for 16-bit MSDOS (which 7074 // doesn't have enough memory anyway to duplicate compression states). 7075 func XdeflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* deflate.c:1102:13: */ 7076 var ds uintptr 7077 var ss uintptr 7078 var overlay uintptr 7079 7080 if deflateStateCheck(tls, source) != 0 || dest == uintptr(Z_NULL) { 7081 return -2 7082 } 7083 7084 ss = (*Z_stream)(unsafe.Pointer(source)).Fstate 7085 7086 libc.Xmemcpy(tls, dest, source, uint64(unsafe.Sizeof(Z_stream{}))) 7087 7088 ds = (*struct { 7089 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7090 })(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{}))) 7091 if ds == uintptr(Z_NULL) { 7092 return -4 7093 } 7094 (*Z_stream)(unsafe.Pointer(dest)).Fstate = ds 7095 libc.Xmemcpy(tls, ds, ss, uint64(unsafe.Sizeof(Deflate_state{}))) 7096 (*Deflate_state)(unsafe.Pointer(ds)).Fstrm = dest 7097 7098 (*Deflate_state)(unsafe.Pointer(ds)).Fwindow = (*struct { 7099 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7100 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(dest)).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fw_size, uint32(uint64(2)*uint64(unsafe.Sizeof(Byte(0))))) 7101 (*Deflate_state)(unsafe.Pointer(ds)).Fprev = (*struct { 7102 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7103 })(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)))) 7104 (*Deflate_state)(unsafe.Pointer(ds)).Fhead = (*struct { 7105 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7106 })(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)))) 7107 overlay = (*struct { 7108 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 7109 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(dest)).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize, uint32(uint64(unsafe.Sizeof(Ush(0)))+uint64(2))) 7110 (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf = overlay 7111 7112 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) { 7113 XdeflateEnd(tls, dest) 7114 return -4 7115 } 7116 // following zmemcpy do not work for 16-bit MSDOS 7117 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fwindow, (*Deflate_state)(unsafe.Pointer(ss)).Fwindow, uint64((*Deflate_state)(unsafe.Pointer(ds)).Fw_size*UInt(2))*uint64(unsafe.Sizeof(Byte(0)))) 7118 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fprev, (*Deflate_state)(unsafe.Pointer(ss)).Fprev, uint64((*Deflate_state)(unsafe.Pointer(ds)).Fw_size)*uint64(unsafe.Sizeof(Pos(0)))) 7119 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fhead, (*Deflate_state)(unsafe.Pointer(ss)).Fhead, uint64((*Deflate_state)(unsafe.Pointer(ds)).Fhash_size)*uint64(unsafe.Sizeof(Pos(0)))) 7120 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf, (*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf, uint64(UInt((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf_size))) 7121 7122 (*Deflate_state)(unsafe.Pointer(ds)).Fpending_out = (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr((int64((*Deflate_state)(unsafe.Pointer(ss)).Fpending_out)-int64((*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf))/1) 7123 (*Deflate_state)(unsafe.Pointer(ds)).Fd_buf = overlay + uintptr(uint64((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize)/uint64(unsafe.Sizeof(Ush(0))))*2 7124 (*Deflate_state)(unsafe.Pointer(ds)).Fl_buf = (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr((uint64(1)+uint64(unsafe.Sizeof(Ush(0))))*uint64((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize)) 7125 7126 (*Deflate_state)(unsafe.Pointer(ds)).Fl_desc.Fdyn_tree = ds + 212 /* &.dyn_ltree */ 7127 (*Deflate_state)(unsafe.Pointer(ds)).Fd_desc.Fdyn_tree = ds + 2504 /* &.dyn_dtree */ 7128 (*Deflate_state)(unsafe.Pointer(ds)).Fbl_desc.Fdyn_tree = ds + 2748 /* &.bl_tree */ 7129 7130 return Z_OK 7131 } 7132 7133 // =========================================================================== 7134 // Read a new buffer from the current input stream, update the adler32 7135 // and total number of bytes read. All deflate() input goes through 7136 // this function so some applications may wish to modify it to avoid 7137 // allocating a large strm->next_in buffer and copying from it. 7138 // (See also flush_pending()). 7139 func read_buf(tls *libc.TLS, strm Z_streamp, buf uintptr, size uint32) uint32 { /* deflate.c:1164:16: */ 7140 var len uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 7141 7142 if len > size { 7143 len = size 7144 } 7145 if len == uint32(0) { 7146 return uint32(0) 7147 } 7148 7149 *(*UInt)(unsafe.Pointer(strm + 8)) -= len 7150 7151 libc.Xmemcpy(tls, buf, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64(len)) 7152 if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 1 { 7153 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len) 7154 } else if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 2 { 7155 (*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len) 7156 } 7157 *(*uintptr)(unsafe.Pointer(strm)) += uintptr(len) 7158 *(*ULong)(unsafe.Pointer(strm + 16)) += ULong(len) 7159 7160 return len 7161 } 7162 7163 // =========================================================================== 7164 // Initialize the "longest match" routines for a new zlib stream 7165 func lm_init(tls *libc.TLS, s uintptr) { /* deflate.c:1194:12: */ 7166 (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size = uint64(2) * Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size) 7167 7168 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*2)) = Posf(NIL) 7169 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, uint64((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1))*uint64(unsafe.Sizeof(Posf(0)))) 7170 7171 // Set the default configuration parameters: 7172 (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_lazy) 7173 (*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fgood_length) 7174 (*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fnice_length) 7175 (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_chain) 7176 7177 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0) 7178 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0 7179 (*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0) 7180 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 7181 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+184, UInt(MIN_MATCH-1)) 7182 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 7183 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(0) 7184 } 7185 7186 // =========================================================================== 7187 // Set match_start to the longest match starting at the given string and 7188 // return its length. Matches shorter or equal to prev_length are discarded, 7189 // in which case the result is equal to prev_length and match_start is 7190 // garbage. 7191 // IN assertions: cur_match is the head of the hash chain for the current 7192 // string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 7193 // OUT assertion: the match length is not greater than s->lookahead. 7194 // For 80x86 and 680x0, an optimized version will be provided in match.asm or 7195 // match.S. The code will be functionally equivalent. 7196 func longest_match(tls *libc.TLS, s uintptr, cur_match IPos) UInt { /* deflate.c:1236:12: */ 7197 var chain_length uint32 = (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length // max hash chain length 7198 var scan uintptr = (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) // current string 7199 var match uintptr // matched string 7200 var len int32 // length of current match 7201 var best_len int32 = int32((*Deflate_state)(unsafe.Pointer(s)).Fprev_length) // best match length so far 7202 var nice_match int32 = (*Deflate_state)(unsafe.Pointer(s)).Fnice_match // stop if match long enough 7203 var limit IPos 7204 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart > (*Deflate_state)(unsafe.Pointer(s)).Fw_size-UInt(MAX_MATCH+MIN_MATCH+1) { 7205 limit = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart - ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - UInt(MAX_MATCH+MIN_MATCH+1)) 7206 } else { 7207 limit = uint32(NIL) 7208 } 7209 // Stop when cur_match becomes <= limit. To simplify the code, 7210 // we prevent matches with the string of window index 0. 7211 var prev uintptr = (*Deflate_state)(unsafe.Pointer(s)).Fprev 7212 var wmask UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_mask 7213 7214 var strend uintptr = (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + uintptr(MAX_MATCH) 7215 var scan_end1 Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len-1))) 7216 var scan_end Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len))) 7217 7218 // The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. 7219 // It is easy to get rid of this optimization if necessary. 7220 7221 // Do not waste too much time if we already have a good match: 7222 if (*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= (*Deflate_state)(unsafe.Pointer(s)).Fgood_match { 7223 chain_length >>= 2 7224 } 7225 // Do not look for matches beyond the end of the input. This is necessary 7226 // to make deflate deterministic. 7227 if UInt(nice_match) > (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 7228 nice_match = int32((*Deflate_state)(unsafe.Pointer(s)).Flookahead) 7229 } 7230 7231 for __ccgo := true; __ccgo; __ccgo = libc.AssignUint32(&cur_match, IPos(*(*Posf)(unsafe.Pointer(prev + uintptr(cur_match&wmask)*2)))) > limit && 7232 libc.PreDecUint32(&chain_length, 1) != uint32(0) { 7233 7234 match = (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(cur_match) 7235 7236 // Skip to next match if the match length cannot increase 7237 // or if the match length is less than 2. Note that the checks below 7238 // for insufficient lookahead only occur occasionally for performance 7239 // reasons. Therefore uninitialized memory will be accessed, and 7240 // conditional jumps will be made that depend on those values. 7241 // However the length of the match is limited to the lookahead, so 7242 // the output of deflate is not affected by the uninitialized values. 7243 7244 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))) { 7245 continue 7246 } 7247 7248 // The check at best_len-1 can be removed because it will be made 7249 // again later. (This heuristic is not always a win.) 7250 // It is not necessary to compare scan[2] and match[2] since they 7251 // are always equal when the other bytes match, given that 7252 // the hash keys are equal and that HASH_BITS >= 8. 7253 scan += uintptr(2) 7254 match++ 7255 7256 // We check for insufficient lookahead only every 8th comparison; 7257 // the 256th check will be made at strstart+258. 7258 for __ccgo1 := true; __ccgo1; __ccgo1 = 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 { 7259 } 7260 7261 len = MAX_MATCH - int32((int64(strend)-int64(scan))/1) 7262 scan = strend - uintptr(MAX_MATCH) 7263 7264 if len > best_len { 7265 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start = cur_match 7266 best_len = len 7267 if len >= nice_match { 7268 break 7269 } 7270 scan_end1 = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len-1))) 7271 scan_end = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len))) 7272 } 7273 } 7274 7275 if UInt(best_len) <= (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 7276 return UInt(best_len) 7277 } 7278 return (*Deflate_state)(unsafe.Pointer(s)).Flookahead 7279 } 7280 7281 // =========================================================================== 7282 // Fill the window when the lookahead becomes insufficient. 7283 // Updates strstart and lookahead. 7284 // 7285 // IN assertion: lookahead < MIN_LOOKAHEAD 7286 // OUT assertions: strstart <= window_size-MIN_LOOKAHEAD 7287 // At least one byte has been read, or avail_in == 0; reads are 7288 // performed for at least two bytes (required for the zip translate_eol 7289 // option -- not supported here). 7290 func fill_window(tls *libc.TLS, s uintptr) { /* deflate.c:1482:12: */ 7291 var n uint32 7292 var more uint32 // Amount of free space at the end of the window. 7293 var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7294 7295 for __ccgo := true; __ccgo; __ccgo = (*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) { 7296 more = uint32((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead) - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) 7297 7298 // Deal with !@#$% 64K limit: 7299 if uint64(unsafe.Sizeof(int32(0))) <= uint64(2) { 7300 if more == uint32(0) && (*Deflate_state)(unsafe.Pointer(s)).Fstrstart == UInt(0) && (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 7301 more = wsize 7302 7303 } else if more == libc.Uint32(libc.Uint32FromInt32(-1)) { 7304 // Very unlikely, but possible on 16 bit machine if 7305 // strstart == 0 && lookahead == 1 (input done a byte at time) 7306 more-- 7307 } 7308 } 7309 7310 // If the window is almost full and there is insufficient lookahead, 7311 // move the upper half to the lower one to make room in the upper half. 7312 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart >= wsize+((*Deflate_state)(unsafe.Pointer(s)).Fw_size-UInt(MAX_MATCH+MIN_MATCH+1)) { 7313 7314 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr(wsize), uint64(wsize-more)) 7315 *(*UInt)(unsafe.Pointer(s + 176)) -= wsize 7316 *(*UInt)(unsafe.Pointer(s + 172)) -= wsize // we now have strstart >= MAX_DIST 7317 *(*int64)(unsafe.Pointer(s + 152)) -= int64(wsize) 7318 slide_hash(tls, s) 7319 more = more + wsize 7320 } 7321 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0) { 7322 break 7323 } 7324 7325 // If there was no sliding: 7326 // strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && 7327 // more == window_size - lookahead - strstart 7328 // => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) 7329 // => more >= window_size - 2*WSIZE + 2 7330 // In the BIG_MEM or MMAP case (not yet supported), 7331 // window_size == input_size + MIN_LOOKAHEAD && 7332 // strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. 7333 // Otherwise, window_size == 2*WSIZE so more >= 2. 7334 // If there was sliding, more >= WSIZE. So in all cases, more >= 2. 7335 7336 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) 7337 *(*UInt)(unsafe.Pointer(s + 180)) += n 7338 7339 // Initialize the hash value now that we have some input: 7340 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead+(*Deflate_state)(unsafe.Pointer(s)).Finsert >= UInt(MIN_MATCH) { 7341 var str UInt = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Finsert 7342 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(str)))) 7343 (*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 7344 for (*Deflate_state)(unsafe.Pointer(s)).Finsert != 0 { 7345 (*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 7346 *(*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)) 7347 *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str) 7348 str++ 7349 (*Deflate_state)(unsafe.Pointer(s)).Finsert-- 7350 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead+(*Deflate_state)(unsafe.Pointer(s)).Finsert < UInt(MIN_MATCH) { 7351 break 7352 } 7353 } 7354 } 7355 // If the whole input has less than MIN_MATCH bytes, ins_h is garbage, 7356 // but this is not important since only literal bytes will be emitted. 7357 7358 } 7359 7360 // If the WIN_INIT bytes after the end of the current data have never been 7361 // written, then zero those bytes in order to avoid memory check reports of 7362 // the use of uninitialized (or uninitialised as Julian writes) bytes by 7363 // the longest match routines. Update the high water mark for the next 7364 // time through here. WIN_INIT is set to MAX_MATCH since the longest match 7365 // routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. 7366 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size { 7367 var curr Ulg = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead) 7368 var init1 Ulg 7369 7370 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < curr { 7371 // Previous high water mark below current data -- zero WIN_INIT 7372 // bytes or up to end of window, whichever is less. 7373 init1 = (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - curr 7374 if init1 > uint64(MAX_MATCH) { 7375 init1 = uint64(MAX_MATCH) 7376 } 7377 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr(curr), 0, uint64(uint32(init1))) 7378 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = curr + init1 7379 } else if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < curr+uint64(MAX_MATCH) { 7380 // High water mark at or above current data, but below current data 7381 // plus WIN_INIT -- zero out to current data plus WIN_INIT, or up 7382 // to end of window, whichever is less. 7383 init1 = curr + uint64(MAX_MATCH) - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water 7384 if init1 > (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size-(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water { 7385 init1 = (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water 7386 } 7387 libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water), 0, uint64(uint32(init1))) 7388 *(*Ulg)(unsafe.Pointer(s + 5944)) += init1 7389 } 7390 } 7391 7392 } 7393 7394 // =========================================================================== 7395 // Flush the current block, with given end-of-file flag. 7396 // IN assertion: strstart is set to the end of the current match. 7397 7398 // Same but force premature exit if necessary. 7399 7400 // Maximum stored block length in deflate format (not including header). 7401 7402 // Minimum of a and b. 7403 7404 // =========================================================================== 7405 // Copy without compression as much as possible from the input stream, return 7406 // the current block state. 7407 // 7408 // In case deflateParams() is used to later switch to a non-zero compression 7409 // level, s->matches (otherwise unused when storing) keeps track of the number 7410 // of hash table slides to perform. If s->matches is 1, then one hash table 7411 // slide will be done when switching. If s->matches is 2, the maximum value 7412 // allowed here, then the hash table will be cleared, since two or more slides 7413 // is the same as a clear. 7414 // 7415 // deflate_stored() is written to minimize the number of times an input byte is 7416 // copied. It is most efficient with large input and output buffers, which 7417 // maximizes the opportunites to have a single copy from next_in to next_out. 7418 func deflate_stored(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1643:19: */ 7419 // Smallest worthy block size when not flushing or finishing. By default 7420 // this is 32K. This can be as small as 507 bytes for memLevel == 1. For 7421 // large input and output buffers, the stored block size will be larger. 7422 var min_block uint32 = func() uint32 { 7423 if (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size-uint64(5) > Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size) { 7424 return (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7425 } 7426 return uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - uint64(5)) 7427 }() 7428 7429 // Copy as many min_block or larger stored blocks directly to next_out as 7430 // possible. If flushing, copy the remaining available input to next_out as 7431 // stored blocks, if there is enough space. 7432 var len uint32 7433 var left uint32 7434 var have uint32 7435 var last uint32 = uint32(0) 7436 var used uint32 = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in 7437 for __ccgo := true; __ccgo; __ccgo = last == uint32(0) { 7438 // Set len to the maximum size block that we can copy directly with the 7439 // available input data and output space. Set left to how much of that 7440 // would be copied from what's left in the window. 7441 len = uint32(MAX_STORED) // maximum deflate stored block length 7442 have = uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3) // number of header bytes 7443 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out < have { // need room for header 7444 break 7445 } 7446 // maximum stored block length that will fit in avail_out: 7447 have = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out - have 7448 left = uint32(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start) // bytes left in window 7449 if Ulg(len) > Ulg(left)+Ulg((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in) { 7450 len = left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in 7451 } // limit len to the input 7452 if len > have { 7453 len = have 7454 } // limit len to the output 7455 7456 // If the stored block would be less than min_block in length, or if 7457 // unable to copy all of the available input when flushing, then try 7458 // copying to the window and the pending buffer instead. Also don't 7459 // write an empty block when flushing -- deflate() does that. 7460 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) { 7461 break 7462 } 7463 7464 // Make a dummy stored block in pending to get the header bytes, 7465 // including any pending bits. This also updates the debugging counts. 7466 if flush == Z_FINISH && len == left+(*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in { 7467 last = uint32(1) 7468 } else { 7469 last = uint32(0) 7470 } 7471 X_tr_stored_block(tls, s, uintptr(0), uint64(0), int32(last)) 7472 7473 // Replace the lengths in the dummy stored block with len. 7474 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending-uint64(4)))) = Bytef(len) 7475 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending-uint64(3)))) = Bytef(len >> 8) 7476 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending-uint64(2)))) = Bytef(^len) 7477 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending-uint64(1)))) = Bytef(^len >> 8) 7478 7479 // Write the stored block header bytes. 7480 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7481 7482 // Copy uncompressed bytes from the window to next_out. 7483 if left != 0 { 7484 if left > len { 7485 left = len 7486 } 7487 libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start), uint64(left)) 7488 *(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 24)) += uintptr(left) 7489 *(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 32)) -= left 7490 *(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 40)) += ULong(left) 7491 *(*int64)(unsafe.Pointer(s + 152)) += int64(left) 7492 len = len - left 7493 } 7494 7495 // Copy uncompressed bytes directly from next_in to next_out, updating 7496 // the check value. 7497 if len != 0 { 7498 read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, len) 7499 *(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 24)) += uintptr(len) 7500 *(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 32)) -= len 7501 *(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 40)) += ULong(len) 7502 } 7503 } 7504 7505 // Update the sliding window with the last s->w_size bytes of the copied 7506 // data, or append all of the copied data to the existing window if less 7507 // than s->w_size bytes were copied. Also update the number of bytes to 7508 // insert in the hash tables, in the event that deflateParams() switches to 7509 // a non-zero compression level. 7510 used = used - (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in // number of input bytes directly copied 7511 if used != 0 { 7512 // If any input was used, then no unused input remains in the window, 7513 // therefore s->block_start == s->strstart. 7514 if used >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { // supplant the previous history 7515 (*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(2) // clear hash 7516 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in-uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size), uint64((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) 7517 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart = (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7518 } else { 7519 if (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size-Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) <= Ulg(used) { 7520 // Slide the window down. 7521 *(*UInt)(unsafe.Pointer(s + 172)) -= (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7522 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size), uint64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) 7523 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) { 7524 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 7525 } // add a pending slide_hash() 7526 } 7527 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart), (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in-uintptr(used), uint64(used)) 7528 *(*UInt)(unsafe.Pointer(s + 172)) += used 7529 } 7530 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7531 *(*UInt)(unsafe.Pointer(s + 5932)) += func() uint32 { 7532 if used > (*Deflate_state)(unsafe.Pointer(s)).Fw_size-(*Deflate_state)(unsafe.Pointer(s)).Finsert { 7533 return (*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert 7534 } 7535 return used 7536 }() 7537 } 7538 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) { 7539 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7540 } 7541 7542 // If the last block was written to next_out, then done. 7543 if last != 0 { 7544 return Finish_done 7545 } 7546 7547 // If flushing and all input has been consumed, then done. 7548 if flush != Z_NO_FLUSH && flush != Z_FINISH && (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0) && int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) == (*Deflate_state)(unsafe.Pointer(s)).Fblock_start { 7549 return Block_done 7550 } 7551 7552 // Fill the window with any remaining input. 7553 have = uint32((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - uint64(1)) 7554 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in > have && (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= int64((*Deflate_state)(unsafe.Pointer(s)).Fw_size) { 7555 // Slide the window down. 7556 *(*int64)(unsafe.Pointer(s + 152)) -= int64((*Deflate_state)(unsafe.Pointer(s)).Fw_size) 7557 *(*UInt)(unsafe.Pointer(s + 172)) -= (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7558 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size), uint64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) 7559 if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) { 7560 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 7561 } // add a pending slide_hash() 7562 have = have + (*Deflate_state)(unsafe.Pointer(s)).Fw_size // more space now 7563 } 7564 if have > (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in { 7565 have = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in 7566 } 7567 if have != 0 { 7568 read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart), have) 7569 *(*UInt)(unsafe.Pointer(s + 172)) += have 7570 } 7571 if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) { 7572 (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7573 } 7574 7575 // There was not enough avail_out to write a complete worthy or flushed 7576 // stored block to next_out. Write a stored block to pending instead, if we 7577 // have enough input for a worthy block, or if flushing and there is enough 7578 // room for the remaining input as a stored block in the pending buffer. 7579 have = uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3) // number of header bytes 7580 // maximum stored block length that will fit in pending: 7581 have = func() uint32 { 7582 if (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size-Ulg(have) > uint64(MAX_STORED) { 7583 return uint32(MAX_STORED) 7584 } 7585 return uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have)) 7586 }() 7587 min_block = func() uint32 { 7588 if have > (*Deflate_state)(unsafe.Pointer(s)).Fw_size { 7589 return (*Deflate_state)(unsafe.Pointer(s)).Fw_size 7590 } 7591 return have 7592 }() 7593 left = uint32(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start) 7594 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 { 7595 len = func() uint32 { 7596 if left > have { 7597 return have 7598 } 7599 return left 7600 }() 7601 if flush == Z_FINISH && (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0) && len == left { 7602 last = uint32(1) 7603 } else { 7604 last = uint32(0) 7605 } 7606 X_tr_stored_block(tls, s, (*Deflate_state)(unsafe.Pointer(s)).Fwindow+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start), uint64(len), int32(last)) 7607 *(*int64)(unsafe.Pointer(s + 152)) += int64(len) 7608 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7609 } 7610 7611 // We've done all we can with the available input and output. 7612 if last != 0 { 7613 return Finish_started 7614 } 7615 return Need_more 7616 } 7617 7618 // =========================================================================== 7619 // Compress as much as possible from the input stream, return the current 7620 // block state. 7621 // This function does not perform lazy evaluation of matches and inserts 7622 // new strings in the dictionary only for unmatched strings or for short 7623 // matches. It is used only for the fast compression options. 7624 func deflate_fast(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1824:19: */ 7625 var hash_head IPos // head of the hash chain 7626 var bflush int32 // set if current block must be flushed 7627 7628 for { 7629 // Make sure that we always have enough lookahead, except 7630 // at the end of the input file. We need MAX_MATCH bytes 7631 // for the next match, plus MIN_MATCH bytes to insert the 7632 // string following the next match. 7633 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < UInt(MAX_MATCH+MIN_MATCH+1) { 7634 fill_window(tls, s) 7635 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < UInt(MAX_MATCH+MIN_MATCH+1) && flush == Z_NO_FLUSH { 7636 return Need_more 7637 } 7638 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 7639 break 7640 } // flush the current block 7641 } 7642 7643 // Insert the string window[strstart .. strstart+2] in the 7644 // dictionary, and set hash_head to the head of the hash chain: 7645 hash_head = IPos(NIL) 7646 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 7647 (*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 7648 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)))) 7649 *(*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) 7650 } 7651 7652 // Find the longest match, discarding those <= prev_length. 7653 // At this point we have always match_length < MIN_MATCH 7654 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) { 7655 // To simplify the code, we prevent matches with the string 7656 // of window index 0 (in particular we have to avoid a match 7657 // of the string with itself at the start of the input file). 7658 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head) 7659 // longest_match() sets match_start 7660 } 7661 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) { 7662 7663 { 7664 var len Uch = Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH)) 7665 var dist Ush = Ush((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start) 7666 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 7667 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 7668 dist-- 7669 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(int32(X_length_code[len])+LITERALS+1)*4))++ 7670 *(*Ush)(unsafe.Pointer(s + 2504 + uintptr(func() int32 { 7671 if int32(dist) < 256 { 7672 return int32(X_dist_code[dist]) 7673 } 7674 return int32(X_dist_code[256+int32(dist)>>7]) 7675 }())*4))++ 7676 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 7677 } 7678 7679 *(*UInt)(unsafe.Pointer(s + 180)) -= (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length 7680 7681 // Insert new strings in the hash table only if the match length 7682 // is not too large. This saves time but degrades compression. 7683 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) { 7684 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length-- // string at strstart already in table 7685 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length, 1) != UInt(0) { 7686 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7687 (*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 7688 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)))) 7689 *(*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) 7690 // strstart never exceeds WSIZE-MAX_MATCH, so there are 7691 // always MIN_MATCH bytes ahead. 7692 } 7693 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7694 } else { 7695 *(*UInt)(unsafe.Pointer(s + 172)) += (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length 7696 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 7697 (*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))) 7698 (*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 7699 // If lookahead < MIN_MATCH, ins_h is garbage, but it does not 7700 // matter since it will be recomputed at next deflate call. 7701 } 7702 } else { 7703 // No match, output a literal byte 7704 7705 { 7706 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 7707 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 7708 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 7709 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(cc)*4))++ 7710 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 7711 } 7712 7713 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 7714 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7715 } 7716 if bflush != 0 { 7717 { 7718 X_tr_flush_block(tls, s, func() uintptr { 7719 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7720 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 7721 } 7722 return uintptr(Z_NULL) 7723 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 7724 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7725 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7726 } 7727 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7728 if 0 != 0 { 7729 return Finish_started 7730 } 7731 return Need_more 7732 } 7733 } 7734 7735 } 7736 (*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 { 7737 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < UInt(MIN_MATCH-1) { 7738 return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 7739 } 7740 return uint32(MIN_MATCH - 1) 7741 }() 7742 if flush == Z_FINISH { 7743 { 7744 { 7745 X_tr_flush_block(tls, s, func() uintptr { 7746 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7747 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 7748 } 7749 return uintptr(Z_NULL) 7750 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 1) 7751 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7752 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7753 } 7754 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7755 if 1 != 0 { 7756 return Finish_started 7757 } 7758 return Need_more 7759 } 7760 } 7761 7762 return Finish_done 7763 } 7764 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 7765 { 7766 X_tr_flush_block(tls, s, func() uintptr { 7767 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7768 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 7769 } 7770 return uintptr(Z_NULL) 7771 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 7772 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7773 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7774 } 7775 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7776 if 0 != 0 { 7777 return Finish_started 7778 } 7779 return Need_more 7780 } 7781 } 7782 7783 return Block_done 7784 } 7785 7786 // =========================================================================== 7787 // Same as above, but achieves better compression. We use a lazy 7788 // evaluation for matches: a match is finally adopted only if there is 7789 // no better match at the next window position. 7790 func deflate_slow(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1926:19: */ 7791 var hash_head IPos // head of hash chain 7792 var bflush int32 // set if current block must be flushed 7793 7794 // Process the input block. 7795 for { 7796 // Make sure that we always have enough lookahead, except 7797 // at the end of the input file. We need MAX_MATCH bytes 7798 // for the next match, plus MIN_MATCH bytes to insert the 7799 // string following the next match. 7800 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < UInt(MAX_MATCH+MIN_MATCH+1) { 7801 fill_window(tls, s) 7802 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < UInt(MAX_MATCH+MIN_MATCH+1) && flush == Z_NO_FLUSH { 7803 return Need_more 7804 } 7805 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 7806 break 7807 } // flush the current block 7808 } 7809 7810 // Insert the string window[strstart .. strstart+2] in the 7811 // dictionary, and set hash_head to the head of the hash chain: 7812 hash_head = IPos(NIL) 7813 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) { 7814 (*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 7815 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)))) 7816 *(*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) 7817 } 7818 7819 // Find the longest match, discarding those <= prev_length. 7820 (*Deflate_state)(unsafe.Pointer(s)).Fprev_length = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length 7821 (*Deflate_state)(unsafe.Pointer(s)).Fprev_match = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start 7822 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(MIN_MATCH - 1) 7823 7824 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) { 7825 // To simplify the code, we prevent matches with the string 7826 // of window index 0 (in particular we have to avoid a match 7827 // of the string with itself at the start of the input file). 7828 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head) 7829 // longest_match() sets match_start 7830 7831 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= UInt(5) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FILTERED || 7832 (*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)) { 7833 7834 // If prev_match is also MIN_MATCH, match_start is garbage 7835 // but we will ignore the current match anyway. 7836 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(MIN_MATCH - 1) 7837 } 7838 } 7839 // If there was a match at the previous step and the current 7840 // match is not better, output the previous match: 7841 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 { 7842 var max_insert UInt = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead - UInt(MIN_MATCH) 7843 // Do not insert strings in hash table beyond this. 7844 7845 { 7846 var len Uch = Uch((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(MIN_MATCH)) 7847 var dist Ush = Ush((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1) - (*Deflate_state)(unsafe.Pointer(s)).Fprev_match) 7848 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 7849 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 7850 dist-- 7851 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(int32(X_length_code[len])+LITERALS+1)*4))++ 7852 *(*Ush)(unsafe.Pointer(s + 2504 + uintptr(func() int32 { 7853 if int32(dist) < 256 { 7854 return int32(X_dist_code[dist]) 7855 } 7856 return int32(X_dist_code[256+int32(dist)>>7]) 7857 }())*4))++ 7858 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 7859 } 7860 7861 // Insert in hash table all strings up to the end of the match. 7862 // strstart-1 and strstart are already inserted. If there is not 7863 // enough lookahead, the last two strings are not inserted in 7864 // the hash table. 7865 *(*UInt)(unsafe.Pointer(s + 180)) -= (*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(1) 7866 *(*UInt)(unsafe.Pointer(s + 184)) -= UInt(2) 7867 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fprev_length, 1) != UInt(0) { 7868 if libc.PreIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fstrstart, 1) <= max_insert { 7869 (*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 7870 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)))) 7871 *(*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) 7872 } 7873 } 7874 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 7875 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(MIN_MATCH - 1) 7876 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7877 7878 if bflush != 0 { 7879 { 7880 X_tr_flush_block(tls, s, func() uintptr { 7881 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7882 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 7883 } 7884 return uintptr(Z_NULL) 7885 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 7886 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7887 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7888 } 7889 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7890 if 0 != 0 { 7891 return Finish_started 7892 } 7893 return Need_more 7894 } 7895 } 7896 7897 } else if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 { 7898 // If there was no match at the previous position, output a 7899 // single literal. If there was a match but the current match 7900 // is longer, truncate the previous match to a single literal. 7901 7902 { 7903 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart-UInt(1)))) 7904 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 7905 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 7906 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(cc)*4))++ 7907 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 7908 } 7909 7910 if bflush != 0 { 7911 { 7912 X_tr_flush_block(tls, s, func() uintptr { 7913 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7914 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 7915 } 7916 return uintptr(Z_NULL) 7917 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 7918 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7919 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7920 } 7921 7922 } 7923 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7924 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 7925 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7926 return Need_more 7927 } 7928 } else { 7929 // There is no previous match to compare with, wait for 7930 // the next step to decide. 7931 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 1 7932 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 7933 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 7934 } 7935 } 7936 7937 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 { 7938 7939 { 7940 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart-UInt(1)))) 7941 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 7942 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 7943 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(cc)*4))++ 7944 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 7945 } 7946 7947 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0 7948 } 7949 (*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 { 7950 if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < UInt(MIN_MATCH-1) { 7951 return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart 7952 } 7953 return uint32(MIN_MATCH - 1) 7954 }() 7955 if flush == Z_FINISH { 7956 { 7957 { 7958 X_tr_flush_block(tls, s, func() uintptr { 7959 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7960 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 7961 } 7962 return uintptr(Z_NULL) 7963 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 1) 7964 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7965 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7966 } 7967 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7968 if 1 != 0 { 7969 return Finish_started 7970 } 7971 return Need_more 7972 } 7973 } 7974 7975 return Finish_done 7976 } 7977 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 7978 { 7979 X_tr_flush_block(tls, s, func() uintptr { 7980 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 7981 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 7982 } 7983 return uintptr(Z_NULL) 7984 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 7985 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 7986 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 7987 } 7988 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 7989 if 0 != 0 { 7990 return Finish_started 7991 } 7992 return Need_more 7993 } 7994 } 7995 7996 return Block_done 7997 } 7998 7999 // =========================================================================== 8000 // For Z_RLE, simply look for runs of bytes, generate matches only of distance 8001 // one. Do not maintain a hash table. (It will be regenerated if this run of 8002 // deflate switches away from Z_RLE.) 8003 func deflate_rle(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2057:19: */ 8004 var bflush int32 // set if current block must be flushed 8005 var prev UInt // byte at distance one to match 8006 var scan uintptr 8007 var strend uintptr // scan goes up to strend for length of run 8008 8009 for { 8010 // Make sure that we always have enough lookahead, except 8011 // at the end of the input file. We need MAX_MATCH bytes 8012 // for the longest run, plus one for the unrolled loop. 8013 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH) { 8014 fill_window(tls, s) 8015 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH) && flush == Z_NO_FLUSH { 8016 return Need_more 8017 } 8018 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 8019 break 8020 } // flush the current block 8021 } 8022 8023 // See how many times the previous byte repeats 8024 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 8025 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) && (*Deflate_state)(unsafe.Pointer(s)).Fstrstart > UInt(0) { 8026 scan = (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - uintptr(1) 8027 prev = UInt(*(*Bytef)(unsafe.Pointer(scan))) 8028 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)))) { 8029 strend = (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + uintptr(MAX_MATCH) 8030 for __ccgo := true; __ccgo; __ccgo = 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 { 8031 } 8032 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(MAX_MATCH) - UInt((int64(strend)-int64(scan))/1) 8033 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length > (*Deflate_state)(unsafe.Pointer(s)).Flookahead { 8034 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (*Deflate_state)(unsafe.Pointer(s)).Flookahead 8035 } 8036 } 8037 8038 } 8039 8040 // Emit match if have run of MIN_MATCH or longer, else emit literal 8041 if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) { 8042 8043 { 8044 var len Uch = Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH)) 8045 var dist Ush = Ush(1) 8046 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist 8047 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len 8048 dist-- 8049 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(int32(X_length_code[len])+LITERALS+1)*4))++ 8050 *(*Ush)(unsafe.Pointer(s + 2504 + uintptr(func() int32 { 8051 if int32(dist) < 256 { 8052 return int32(X_dist_code[dist]) 8053 } 8054 return int32(X_dist_code[256+int32(dist)>>7]) 8055 }())*4))++ 8056 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 8057 } 8058 8059 *(*UInt)(unsafe.Pointer(s + 180)) -= (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length 8060 *(*UInt)(unsafe.Pointer(s + 172)) += (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length 8061 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 8062 } else { 8063 // No match, output a literal byte 8064 8065 { 8066 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 8067 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 8068 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 8069 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(cc)*4))++ 8070 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 8071 } 8072 8073 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 8074 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 8075 } 8076 if bflush != 0 { 8077 { 8078 X_tr_flush_block(tls, s, func() uintptr { 8079 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8080 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 8081 } 8082 return uintptr(Z_NULL) 8083 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 8084 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8085 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8086 } 8087 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8088 if 0 != 0 { 8089 return Finish_started 8090 } 8091 return Need_more 8092 } 8093 } 8094 8095 } 8096 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 8097 if flush == Z_FINISH { 8098 { 8099 { 8100 X_tr_flush_block(tls, s, func() uintptr { 8101 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8102 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 8103 } 8104 return uintptr(Z_NULL) 8105 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 1) 8106 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8107 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8108 } 8109 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8110 if 1 != 0 { 8111 return Finish_started 8112 } 8113 return Need_more 8114 } 8115 } 8116 8117 return Finish_done 8118 } 8119 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 8120 { 8121 X_tr_flush_block(tls, s, func() uintptr { 8122 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8123 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 8124 } 8125 return uintptr(Z_NULL) 8126 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 8127 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8128 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8129 } 8130 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8131 if 0 != 0 { 8132 return Finish_started 8133 } 8134 return Need_more 8135 } 8136 } 8137 8138 return Block_done 8139 } 8140 8141 // =========================================================================== 8142 // For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. 8143 // (It will be regenerated if this run of deflate switches away from Huffman.) 8144 func deflate_huff(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2130:19: */ 8145 var bflush int32 // set if current block must be flushed 8146 8147 for { 8148 // Make sure that we have a literal to write. 8149 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 8150 fill_window(tls, s) 8151 if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) { 8152 if flush == Z_NO_FLUSH { 8153 return Need_more 8154 } 8155 break // flush the current block 8156 } 8157 } 8158 8159 // Output a literal byte 8160 (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0) 8161 8162 { 8163 var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))) 8164 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0) 8165 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc 8166 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(cc)*4))++ 8167 bflush = libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 8168 } 8169 8170 (*Deflate_state)(unsafe.Pointer(s)).Flookahead-- 8171 (*Deflate_state)(unsafe.Pointer(s)).Fstrstart++ 8172 if bflush != 0 { 8173 { 8174 X_tr_flush_block(tls, s, func() uintptr { 8175 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8176 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 8177 } 8178 return uintptr(Z_NULL) 8179 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 8180 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8181 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8182 } 8183 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8184 if 0 != 0 { 8185 return Finish_started 8186 } 8187 return Need_more 8188 } 8189 } 8190 8191 } 8192 (*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0) 8193 if flush == Z_FINISH { 8194 { 8195 { 8196 X_tr_flush_block(tls, s, func() uintptr { 8197 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8198 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 8199 } 8200 return uintptr(Z_NULL) 8201 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 1) 8202 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8203 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8204 } 8205 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8206 if 1 != 0 { 8207 return Finish_started 8208 } 8209 return Need_more 8210 } 8211 } 8212 8213 return Finish_done 8214 } 8215 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 { 8216 { 8217 X_tr_flush_block(tls, s, func() uintptr { 8218 if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 { 8219 return (*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) 8220 } 8221 return uintptr(Z_NULL) 8222 }(), Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)-(*Deflate_state)(unsafe.Pointer(s)).Fblock_start), 0) 8223 (*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) 8224 flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm) 8225 } 8226 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) { 8227 if 0 != 0 { 8228 return Finish_started 8229 } 8230 return Need_more 8231 } 8232 } 8233 8234 return Block_done 8235 } 8236 8237 // Seconds since the Epoch, visible to user code when time_t is too 8238 // narrow only for consistency with the old way of widening too-narrow 8239 // types. User code should never use __time64_t. 8240 8241 // bits/types.h -- definitions of __*_t types underlying *_t types. 8242 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 8243 // This file is part of the GNU C Library. 8244 // 8245 // The GNU C Library is free software; you can redistribute it and/or 8246 // modify it under the terms of the GNU Lesser General Public 8247 // License as published by the Free Software Foundation; either 8248 // version 2.1 of the License, or (at your option) any later version. 8249 // 8250 // The GNU C Library is distributed in the hope that it will be useful, 8251 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8252 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8253 // Lesser General Public License for more details. 8254 // 8255 // You should have received a copy of the GNU Lesser General Public 8256 // License along with the GNU C Library; if not, see 8257 // <https://www.gnu.org/licenses/>. 8258 8259 // Never include this file directly; use <sys/types.h> instead. 8260 8261 // Integral type unchanged by default argument promotions that can 8262 // hold any value corresponding to members of the extended character 8263 // set, as well as at least one value that does not correspond to any 8264 // member of the extended character set. 8265 8266 // Conversion state information. 8267 type X__mbstate_t = struct { 8268 F__count int32 8269 F__value struct{ F__wch uint32 } 8270 } /* __mbstate_t.h:21:3 */ 8271 8272 // The tag name of this struct is _G_fpos_t to preserve historic 8273 // C++ mangled names for functions taking fpos_t arguments. 8274 // That name should not be used in new code. 8275 type X_G_fpos_t = struct { 8276 F__pos X__off_t 8277 F__state X__mbstate_t 8278 } /* __fpos_t.h:10:9 */ 8279 8280 // The tag name of this struct is _G_fpos_t to preserve historic 8281 // C++ mangled names for functions taking fpos_t arguments. 8282 // That name should not be used in new code. 8283 type X__fpos_t = X_G_fpos_t /* __fpos_t.h:14:3 */ 8284 8285 // bits/types.h -- definitions of __*_t types underlying *_t types. 8286 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 8287 // This file is part of the GNU C Library. 8288 // 8289 // The GNU C Library is free software; you can redistribute it and/or 8290 // modify it under the terms of the GNU Lesser General Public 8291 // License as published by the Free Software Foundation; either 8292 // version 2.1 of the License, or (at your option) any later version. 8293 // 8294 // The GNU C Library is distributed in the hope that it will be useful, 8295 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8296 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8297 // Lesser General Public License for more details. 8298 // 8299 // You should have received a copy of the GNU Lesser General Public 8300 // License along with the GNU C Library; if not, see 8301 // <https://www.gnu.org/licenses/>. 8302 8303 // Never include this file directly; use <sys/types.h> instead. 8304 8305 // The tag name of this struct is _G_fpos64_t to preserve historic 8306 // C++ mangled names for functions taking fpos_t and/or fpos64_t 8307 // arguments. That name should not be used in new code. 8308 type X_G_fpos64_t = struct { 8309 F__pos X__off64_t 8310 F__state X__mbstate_t 8311 } /* __fpos64_t.h:10:9 */ 8312 8313 // bits/types.h -- definitions of __*_t types underlying *_t types. 8314 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 8315 // This file is part of the GNU C Library. 8316 // 8317 // The GNU C Library is free software; you can redistribute it and/or 8318 // modify it under the terms of the GNU Lesser General Public 8319 // License as published by the Free Software Foundation; either 8320 // version 2.1 of the License, or (at your option) any later version. 8321 // 8322 // The GNU C Library is distributed in the hope that it will be useful, 8323 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8324 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8325 // Lesser General Public License for more details. 8326 // 8327 // You should have received a copy of the GNU Lesser General Public 8328 // License along with the GNU C Library; if not, see 8329 // <https://www.gnu.org/licenses/>. 8330 8331 // Never include this file directly; use <sys/types.h> instead. 8332 8333 // The tag name of this struct is _G_fpos64_t to preserve historic 8334 // C++ mangled names for functions taking fpos_t and/or fpos64_t 8335 // arguments. That name should not be used in new code. 8336 type X__fpos64_t = X_G_fpos64_t /* __fpos64_t.h:14:3 */ 8337 8338 type X_IO_FILE = struct { 8339 F_flags int32 8340 F__ccgo_pad1 [4]byte 8341 F_IO_read_ptr uintptr 8342 F_IO_read_end uintptr 8343 F_IO_read_base uintptr 8344 F_IO_write_base uintptr 8345 F_IO_write_ptr uintptr 8346 F_IO_write_end uintptr 8347 F_IO_buf_base uintptr 8348 F_IO_buf_end uintptr 8349 F_IO_save_base uintptr 8350 F_IO_backup_base uintptr 8351 F_IO_save_end uintptr 8352 F_markers uintptr 8353 F_chain uintptr 8354 F_fileno int32 8355 F_flags2 int32 8356 F_old_offset X__off_t 8357 F_cur_column uint16 8358 F_vtable_offset int8 8359 F_shortbuf [1]uint8 8360 F__ccgo_pad2 [4]byte 8361 F_lock uintptr 8362 F_offset X__off64_t 8363 F_codecvt uintptr 8364 F_wide_data uintptr 8365 F_freeres_list uintptr 8366 F_freeres_buf uintptr 8367 F__pad5 Size_t 8368 F_mode int32 8369 F_unused2 [20]uint8 8370 } /* __FILE.h:4:1 */ 8371 8372 type X__FILE = X_IO_FILE /* __FILE.h:5:25 */ 8373 8374 // The opaque type of streams. This is the definition used elsewhere. 8375 type FILE = X_IO_FILE /* FILE.h:7:25 */ 8376 8377 // The type of the second argument to `fgetpos' and `fsetpos'. 8378 type Fpos_t = X__fpos_t /* stdio.h:84:18 */ 8379 type Fpos64_t = X__fpos64_t /* stdio.h:89:20 */ 8380 8381 // Floating-point inline functions for stdlib.h. 8382 // Copyright (C) 2012-2021 Free Software Foundation, Inc. 8383 // This file is part of the GNU C Library. 8384 // 8385 // The GNU C Library is free software; you can redistribute it and/or 8386 // modify it under the terms of the GNU Lesser General Public 8387 // License as published by the Free Software Foundation; either 8388 // version 2.1 of the License, or (at your option) any later version. 8389 // 8390 // The GNU C Library is distributed in the hope that it will be useful, 8391 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8392 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8393 // Lesser General Public License for more details. 8394 // 8395 // You should have received a copy of the GNU Lesser General Public 8396 // License along with the GNU C Library; if not, see 8397 // <https://www.gnu.org/licenses/>. 8398 8399 // Define some macros helping to catch buffer overflows. 8400 8401 // Macros to control TS 18661-3 glibc features on ldbl-128 platforms. 8402 // Copyright (C) 2017-2021 Free Software Foundation, Inc. 8403 // This file is part of the GNU C Library. 8404 // 8405 // The GNU C Library is free software; you can redistribute it and/or 8406 // modify it under the terms of the GNU Lesser General Public 8407 // License as published by the Free Software Foundation; either 8408 // version 2.1 of the License, or (at your option) any later version. 8409 // 8410 // The GNU C Library is distributed in the hope that it will be useful, 8411 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8412 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8413 // Lesser General Public License for more details. 8414 // 8415 // You should have received a copy of the GNU Lesser General Public 8416 // License along with the GNU C Library; if not, see 8417 // <https://www.gnu.org/licenses/>. 8418 8419 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 8420 // 8421 // This file is part of GCC. 8422 // 8423 // GCC is free software; you can redistribute it and/or modify it under 8424 // the terms of the GNU General Public License as published by the Free 8425 // Software Foundation; either version 3, or (at your option) any later 8426 // version. 8427 // 8428 // GCC is distributed in the hope that it will be useful, but WITHOUT ANY 8429 // WARRANTY; without even the implied warranty of MERCHANTABILITY or 8430 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 8431 // for more details. 8432 // 8433 // Under Section 7 of GPL version 3, you are granted additional 8434 // permissions described in the GCC Runtime Library Exception, version 8435 // 3.1, as published by the Free Software Foundation. 8436 // 8437 // You should have received a copy of the GNU General Public License and 8438 // a copy of the GCC Runtime Library Exception along with this program; 8439 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 8440 // <http://www.gnu.org/licenses/>. 8441 8442 // This administrivia gets added to the beginning of limits.h 8443 // if the system has its own version of limits.h. 8444 8445 // We use _GCC_LIMITS_H_ because we want this not to match 8446 // any macros that the system's limits.h uses for its own purposes. 8447 8448 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 8449 // This file is part of the GNU C Library. 8450 // 8451 // The GNU C Library is free software; you can redistribute it and/or 8452 // modify it under the terms of the GNU Lesser General Public 8453 // License as published by the Free Software Foundation; either 8454 // version 2.1 of the License, or (at your option) any later version. 8455 // 8456 // The GNU C Library is distributed in the hope that it will be useful, 8457 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8458 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8459 // Lesser General Public License for more details. 8460 // 8461 // You should have received a copy of the GNU Lesser General Public 8462 // License along with the GNU C Library; if not, see 8463 // <https://www.gnu.org/licenses/>. 8464 8465 // POSIX Standard: 6.5 File Control Operations <fcntl.h> 8466 8467 // Copyright (C) 1991-2021 Free Software Foundation, Inc. 8468 // This file is part of the GNU C Library. 8469 // 8470 // The GNU C Library is free software; you can redistribute it and/or 8471 // modify it under the terms of the GNU Lesser General Public 8472 // License as published by the Free Software Foundation; either 8473 // version 2.1 of the License, or (at your option) any later version. 8474 // 8475 // The GNU C Library is distributed in the hope that it will be useful, 8476 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8477 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8478 // Lesser General Public License for more details. 8479 // 8480 // You should have received a copy of the GNU Lesser General Public 8481 // License along with the GNU C Library; if not, see 8482 // <https://www.gnu.org/licenses/>. 8483 8484 // This must be early so <bits/fcntl.h> can define types winningly. 8485 8486 // Get __mode_t, __dev_t and __off_t . 8487 // bits/types.h -- definitions of __*_t types underlying *_t types. 8488 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 8489 // This file is part of the GNU C Library. 8490 // 8491 // The GNU C Library is free software; you can redistribute it and/or 8492 // modify it under the terms of the GNU Lesser General Public 8493 // License as published by the Free Software Foundation; either 8494 // version 2.1 of the License, or (at your option) any later version. 8495 // 8496 // The GNU C Library is distributed in the hope that it will be useful, 8497 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8498 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8499 // Lesser General Public License for more details. 8500 // 8501 // You should have received a copy of the GNU Lesser General Public 8502 // License along with the GNU C Library; if not, see 8503 // <https://www.gnu.org/licenses/>. 8504 8505 // Never include this file directly; use <sys/types.h> instead. 8506 8507 // Get the definitions of O_*, F_*, FD_*: all the 8508 // numbers and flag bits for `open', `fcntl', et al. 8509 // O_*, F_*, FD_* bit values for Linux / RISC-V. 8510 // Copyright (C) 2011-2021 Free Software Foundation, Inc. 8511 // 8512 // This file is part of the GNU C Library. 8513 // 8514 // The GNU C Library is free software; you can redistribute it and/or 8515 // modify it under the terms of the GNU Lesser General Public 8516 // License as published by the Free Software Foundation; either 8517 // version 2.1 of the License, or (at your option) any later version. 8518 // 8519 // The GNU C Library is distributed in the hope that it will be useful, 8520 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8521 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8522 // Lesser General Public License for more details. 8523 // 8524 // You should have received a copy of the GNU Lesser General Public 8525 // License along with the GNU C Library; if not, see 8526 // <https://www.gnu.org/licenses/>. 8527 8528 // Determine the wordsize from the preprocessor defines. RISC-V version. 8529 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 8530 // This file is part of the GNU C Library. 8531 // 8532 // The GNU C Library is free software; you can redistribute it and/or 8533 // modify it under the terms of the GNU Lesser General Public 8534 // License as published by the Free Software Foundation; either 8535 // version 2.1 of the License, or (at your option) any later version. 8536 // 8537 // The GNU C Library is distributed in the hope that it will be useful, 8538 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8539 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8540 // Lesser General Public License for more details. 8541 // 8542 // You should have received a copy of the GNU Lesser General Public 8543 // License along with the GNU C Library. If not, see 8544 // <https://www.gnu.org/licenses/>. 8545 8546 // In 64-bit ISA files are always with 64bit off_t and F_*LK64 are the same as 8547 // non-64-bit versions. It will need to be revised for 128-bit. 8548 8549 type Flock = struct { 8550 Fl_type int16 8551 Fl_whence int16 8552 F__ccgo_pad1 [4]byte 8553 Fl_start X__off_t 8554 Fl_len X__off_t 8555 Fl_pid X__pid_t 8556 F__ccgo_pad2 [4]byte 8557 } /* fcntl.h:36:1 */ 8558 8559 type Flock64 = struct { 8560 Fl_type int16 8561 Fl_whence int16 8562 F__ccgo_pad1 [4]byte 8563 Fl_start X__off64_t 8564 Fl_len X__off64_t 8565 Fl_pid X__pid_t 8566 F__ccgo_pad2 [4]byte 8567 } /* fcntl.h:51:1 */ 8568 8569 // Include generic Linux declarations. 8570 // O_*, F_*, FD_* bit values for Linux. 8571 // Copyright (C) 2001-2021 Free Software Foundation, Inc. 8572 // This file is part of the GNU C Library. 8573 // 8574 // The GNU C Library is free software; you can redistribute it and/or 8575 // modify it under the terms of the GNU Lesser General Public 8576 // License as published by the Free Software Foundation; either 8577 // version 2.1 of the License, or (at your option) any later version. 8578 // 8579 // The GNU C Library is distributed in the hope that it will be useful, 8580 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8581 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8582 // Lesser General Public License for more details. 8583 // 8584 // You should have received a copy of the GNU Lesser General Public 8585 // License along with the GNU C Library; if not, see 8586 // <https://www.gnu.org/licenses/>. 8587 8588 // This file contains shared definitions between Linux architectures 8589 // and is included by <bits/fcntl.h> to declare them. The various 8590 // #ifndef cases allow the architecture specific file to define those 8591 // values with different values. 8592 // 8593 // A minimal <bits/fcntl.h> contains just: 8594 // 8595 // struct flock {...} 8596 // #ifdef __USE_LARGEFILE64 8597 // struct flock64 {...} 8598 // #endif 8599 // #include <bits/fcntl-linux.h> 8600 8601 // open/fcntl. 8602 8603 // open file description locks. 8604 // 8605 // Usually record locks held by a process are released on *any* close and are 8606 // not inherited across a fork. 8607 // 8608 // These cmd values will set locks that conflict with process-associated record 8609 // locks, but are "owned" by the opened file description, not the process. 8610 // This means that they are inherited across fork or clone with CLONE_FILES 8611 // like BSD (flock) locks, and they are only released automatically when the 8612 // last reference to the the file description against which they were acquired 8613 // is put. 8614 8615 // For now, Linux has no separate synchronicity options for read 8616 // operations. We define O_RSYNC therefore as the same as O_SYNC 8617 // since this is a superset. 8618 8619 // Values for the second argument to `fcntl'. 8620 8621 // For F_[GET|SET]FD. 8622 8623 // For posix fcntl() and `l_type' field of a `struct flock' for lockf(). 8624 8625 // For old implementation of BSD flock. 8626 8627 // Operations for BSD flock, also used by the kernel implementation. 8628 8629 // Define some more compatibility macros to be backward compatible with 8630 // BSD systems which did not managed to hide these kernel macros. 8631 8632 // Advise to `posix_fadvise'. 8633 8634 // Values for `*at' functions. 8635 8636 // Detect if open needs mode as a third argument (or for openat as a fourth 8637 // argument). 8638 8639 // POSIX.1-2001 specifies that these types are defined by <fcntl.h>. 8640 // Earlier POSIX standards permitted any type ending in `_t' to be defined 8641 // by any POSIX header, so we don't conditionalize the definitions here. 8642 8643 // For XPG all symbols from <sys/stat.h> should also be available. 8644 // NB: Include guard matches what <linux/time.h> uses. 8645 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 8646 // This file is part of the GNU C Library. 8647 // 8648 // The GNU C Library is free software; you can redistribute it and/or 8649 // modify it under the terms of the GNU Lesser General Public 8650 // License as published by the Free Software Foundation; either 8651 // version 2.1 of the License, or (at your option) any later version. 8652 // 8653 // The GNU C Library is distributed in the hope that it will be useful, 8654 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8655 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8656 // Lesser General Public License for more details. 8657 // 8658 // You should have received a copy of the GNU Lesser General Public 8659 // License along with the GNU C Library; if not, see 8660 // <https://www.gnu.org/licenses/>. 8661 8662 // Definition for struct stat. 8663 // Copyright (C) 2020-2021 Free Software Foundation, Inc. 8664 // This file is part of the GNU C Library. 8665 // 8666 // The GNU C Library is free software; you can redistribute it and/or 8667 // modify it under the terms of the GNU Lesser General Public 8668 // License as published by the Free Software Foundation; either 8669 // version 2.1 of the License, or (at your option) any later version. 8670 // 8671 // The GNU C Library is distributed in the hope that it will be useful, 8672 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8673 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8674 // Lesser General Public License for more details. 8675 // 8676 // You should have received a copy of the GNU Lesser General Public 8677 // License along with the GNU C Library. If not, see 8678 // <https://www.gnu.org/licenses/>. 8679 8680 // Endian macros for string.h functions 8681 // Copyright (C) 1992-2021 Free Software Foundation, Inc. 8682 // This file is part of the GNU C Library. 8683 // 8684 // The GNU C Library is free software; you can redistribute it and/or 8685 // modify it under the terms of the GNU Lesser General Public 8686 // License as published by the Free Software Foundation; either 8687 // version 2.1 of the License, or (at your option) any later version. 8688 // 8689 // The GNU C Library is distributed in the hope that it will be useful, 8690 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8691 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8692 // Lesser General Public License for more details. 8693 // 8694 // You should have received a copy of the GNU Lesser General Public 8695 // License along with the GNU C Library; if not, see 8696 // <http://www.gnu.org/licenses/>. 8697 8698 // Determine the wordsize from the preprocessor defines. RISC-V version. 8699 // Copyright (C) 2002-2021 Free Software Foundation, Inc. 8700 // This file is part of the GNU C Library. 8701 // 8702 // The GNU C Library is free software; you can redistribute it and/or 8703 // modify it under the terms of the GNU Lesser General Public 8704 // License as published by the Free Software Foundation; either 8705 // version 2.1 of the License, or (at your option) any later version. 8706 // 8707 // The GNU C Library is distributed in the hope that it will be useful, 8708 // but WITHOUT ANY WARRANTY; without even the implied warranty of 8709 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 8710 // Lesser General Public License for more details. 8711 // 8712 // You should have received a copy of the GNU Lesser General Public 8713 // License along with the GNU C Library. If not, see 8714 // <https://www.gnu.org/licenses/>. 8715 8716 type Stat = struct { 8717 Fst_dev X__dev_t 8718 Fst_ino X__ino_t 8719 Fst_mode X__mode_t 8720 Fst_nlink X__nlink_t 8721 Fst_uid X__uid_t 8722 Fst_gid X__gid_t 8723 Fst_rdev X__dev_t 8724 F__pad1 X__dev_t 8725 Fst_size X__off_t 8726 Fst_blksize X__blksize_t 8727 F__pad2 int32 8728 Fst_blocks X__blkcnt_t 8729 Fst_atim struct { 8730 Ftv_sec X__time_t 8731 Ftv_nsec X__syscall_slong_t 8732 } 8733 Fst_mtim struct { 8734 Ftv_sec X__time_t 8735 Ftv_nsec X__syscall_slong_t 8736 } 8737 Fst_ctim struct { 8738 Ftv_sec X__time_t 8739 Ftv_nsec X__syscall_slong_t 8740 } 8741 F__glibc_reserved [2]int32 8742 } /* struct_stat.h:44:1 */ 8743 8744 type Stat64 = struct { 8745 Fst_dev X__dev_t 8746 Fst_ino X__ino64_t 8747 Fst_mode X__mode_t 8748 Fst_nlink X__nlink_t 8749 Fst_uid X__uid_t 8750 Fst_gid X__gid_t 8751 Fst_rdev X__dev_t 8752 F__pad1 X__dev_t 8753 Fst_size X__off64_t 8754 Fst_blksize X__blksize_t 8755 F__pad2 int32 8756 Fst_blocks X__blkcnt64_t 8757 Fst_atim struct { 8758 Ftv_sec X__time_t 8759 Ftv_nsec X__syscall_slong_t 8760 } 8761 Fst_mtim struct { 8762 Ftv_sec X__time_t 8763 Ftv_nsec X__syscall_slong_t 8764 } 8765 Fst_ctim struct { 8766 Ftv_sec X__time_t 8767 Ftv_nsec X__syscall_slong_t 8768 } 8769 F__glibc_reserved [2]int32 8770 } /* struct_stat.h:85:1 */ 8771 8772 // provide prototypes for these when building zlib without LFS 8773 8774 // default memLevel 8775 8776 // default i/o buffer size -- double this for output when reading (this and 8777 // twice this must be able to fit in an unsigned type) 8778 8779 // gzip modes, also provide a little integrity check on the passed structure 8780 8781 // values for gz_state how 8782 8783 // internal gzip file state data structure 8784 type Gz_state = struct { 8785 Fx GzFile_s 8786 Fmode int32 8787 Ffd int32 8788 Fpath uintptr 8789 Fsize uint32 8790 Fwant uint32 8791 Fin uintptr 8792 Fout uintptr 8793 Fdirect int32 8794 Fhow int32 8795 Fstart Off64_t 8796 Feof int32 8797 Fpast int32 8798 Flevel int32 8799 Fstrategy int32 8800 Fskip Off64_t 8801 Fseek int32 8802 Ferr int32 8803 Fmsg uintptr 8804 Fstrm Z_stream 8805 } /* gzguts.h:201:3 */ 8806 type Gz_statep = uintptr /* gzguts.h:202:22 */ 8807 8808 // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t 8809 // value -- needed when comparing unsigned to z_off64_t, which is signed 8810 // (possible z_off64_t types off_t, off64_t, and long are all signed) 8811 8812 // gzclose() is in a separate file so that it is linked in only if it is used. 8813 // That way the other gzclose functions can be used instead to avoid linking in 8814 // unneeded compression or decompression routines. 8815 func Xgzclose(tls *libc.TLS, file GzFile) int32 { /* gzclose.c:11:13: */ 8816 var state Gz_statep 8817 8818 if file == uintptr(0) { 8819 return -2 8820 } 8821 state = file 8822 8823 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8824 return Xgzclose_r(tls, file) 8825 } 8826 return Xgzclose_w(tls, file) 8827 } 8828 8829 // Reset gzip file state 8830 func gz_reset(tls *libc.TLS, state Gz_statep) { /* gzlib.c:75:12: */ 8831 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) // no output data available 8832 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // for reading ... 8833 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 // not at end of file 8834 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 // have not read past end yet 8835 (*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK // look for gzip header 8836 } 8837 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 // no seek request pending 8838 Xgz_error(tls, state, Z_OK, uintptr(0)) // clear error 8839 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos = int64(0) // no uncompressed data yet 8840 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) // no input data yet 8841 } 8842 8843 // Open a gzip file either by name or file descriptor. 8844 func gz_open(tls *libc.TLS, path uintptr, fd int32, mode uintptr) GzFile { /* gzlib.c:91:14: */ 8845 bp := tls.Alloc(16) 8846 defer tls.Free(16) 8847 8848 var state Gz_statep 8849 var len Z_size_t 8850 var oflag int32 8851 var cloexec int32 = 0 8852 var exclusive int32 = 0 8853 8854 // check input 8855 if path == uintptr(0) { 8856 return uintptr(0) 8857 } 8858 8859 // allocate gzFile structure to return 8860 state = libc.Xmalloc(tls, uint64(unsafe.Sizeof(Gz_state{}))) 8861 if state == uintptr(0) { 8862 return uintptr(0) 8863 } 8864 (*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0) // no buffers allocated yet 8865 (*Gz_state)(unsafe.Pointer(state)).Fwant = uint32(GZBUFSIZE) // requested buffer size 8866 (*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0) // no error message yet 8867 8868 // interpret mode 8869 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_NONE 8870 (*Gz_state)(unsafe.Pointer(state)).Flevel = -1 8871 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_DEFAULT_STRATEGY 8872 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 0 8873 for *(*uint8)(unsafe.Pointer(mode)) != 0 { 8874 if int32(*(*uint8)(unsafe.Pointer(mode))) >= '0' && int32(*(*uint8)(unsafe.Pointer(mode))) <= '9' { 8875 (*Gz_state)(unsafe.Pointer(state)).Flevel = int32(*(*uint8)(unsafe.Pointer(mode))) - '0' 8876 } else { 8877 switch int32(*(*uint8)(unsafe.Pointer(mode))) { 8878 case 'r': 8879 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_READ 8880 break 8881 fallthrough 8882 case 'w': 8883 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE 8884 break 8885 fallthrough 8886 case 'a': 8887 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_APPEND 8888 break 8889 fallthrough 8890 case '+': // can't read and write at the same time 8891 libc.Xfree(tls, state) 8892 return uintptr(0) 8893 fallthrough 8894 case 'b': // ignore -- will request binary anyway 8895 break 8896 fallthrough 8897 case 'e': 8898 cloexec = 1 8899 break 8900 fallthrough 8901 case 'x': 8902 exclusive = 1 8903 break 8904 fallthrough 8905 case 'f': 8906 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FILTERED 8907 break 8908 fallthrough 8909 case 'h': 8910 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_HUFFMAN_ONLY 8911 break 8912 fallthrough 8913 case 'R': 8914 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_RLE 8915 break 8916 fallthrough 8917 case 'F': 8918 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FIXED 8919 break 8920 fallthrough 8921 case 'T': 8922 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 8923 break 8924 fallthrough 8925 default: // could consider as an error, but just ignore 8926 8927 } 8928 } 8929 mode++ 8930 } 8931 8932 // must provide an "r", "w", or "a" 8933 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_NONE { 8934 libc.Xfree(tls, state) 8935 return uintptr(0) 8936 } 8937 8938 // can't force transparent read 8939 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8940 if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 { 8941 libc.Xfree(tls, state) 8942 return uintptr(0) 8943 } 8944 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 // for empty file 8945 } 8946 8947 // save the path name for error messages 8948 len = libc.Xstrlen(tls, path) 8949 (*Gz_state)(unsafe.Pointer(state)).Fpath = libc.Xmalloc(tls, len+uint64(1)) 8950 if (*Gz_state)(unsafe.Pointer(state)).Fpath == uintptr(0) { 8951 libc.Xfree(tls, state) 8952 return uintptr(0) 8953 } 8954 libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath, len+uint64(1), ts+76, libc.VaList(bp, path)) 8955 8956 // compute the flags for open() 8957 oflag = 0 | func() int32 { 8958 if cloexec != 0 { 8959 return 02000000 8960 } 8961 return 0 8962 }() | func() int32 { 8963 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8964 return O_RDONLY 8965 } 8966 return O_WRONLY | O_CREAT | func() int32 { 8967 if exclusive != 0 { 8968 return O_EXCL 8969 } 8970 return 0 8971 }() | func() int32 { 8972 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_WRITE { 8973 return O_TRUNC 8974 } 8975 return O_APPEND 8976 }() 8977 }() 8978 8979 // open the file with the appropriate flags (or just use fd) 8980 (*Gz_state)(unsafe.Pointer(state)).Ffd = func() int32 { 8981 if fd > -1 { 8982 return fd 8983 } 8984 return libc.Xopen(tls, path, oflag, libc.VaList(bp+8, 0666)) 8985 }() 8986 if (*Gz_state)(unsafe.Pointer(state)).Ffd == -1 { 8987 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 8988 libc.Xfree(tls, state) 8989 return uintptr(0) 8990 } 8991 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_APPEND { 8992 libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_END) // so gzoffset() is correct 8993 (*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE // simplify later checks 8994 } 8995 8996 // save the current position for rewinding (only if reading) 8997 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 8998 (*Gz_state)(unsafe.Pointer(state)).Fstart = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR) 8999 if (*Gz_state)(unsafe.Pointer(state)).Fstart == int64(-1) { 9000 (*Gz_state)(unsafe.Pointer(state)).Fstart = int64(0) 9001 } 9002 } 9003 9004 // initialize stream 9005 gz_reset(tls, state) 9006 9007 // return stream 9008 return state 9009 } 9010 9011 // -- see zlib.h -- 9012 func Xgzopen(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:270:16: */ 9013 return gz_open(tls, path, -1, mode) 9014 } 9015 9016 // -- see zlib.h -- 9017 func Xgzopen64(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:278:16: */ 9018 return gz_open(tls, path, -1, mode) 9019 } 9020 9021 // -- see zlib.h -- 9022 func Xgzdopen(tls *libc.TLS, fd int32, mode uintptr) GzFile { /* gzlib.c:286:16: */ 9023 bp := tls.Alloc(8) 9024 defer tls.Free(8) 9025 9026 var path uintptr // identifier for error messages 9027 var gz GzFile 9028 9029 if fd == -1 || libc.AssignUintptr(&path, libc.Xmalloc(tls, uint64(7)+uint64(3)*uint64(unsafe.Sizeof(int32(0))))) == uintptr(0) { 9030 return uintptr(0) 9031 } 9032 libc.Xsnprintf(tls, path, uint64(7)+uint64(3)*uint64(unsafe.Sizeof(int32(0))), ts+79, libc.VaList(bp, fd)) 9033 gz = gz_open(tls, path, fd, mode) 9034 libc.Xfree(tls, path) 9035 return gz 9036 } 9037 9038 // -- see zlib.h -- 9039 9040 // -- see zlib.h -- 9041 func Xgzbuffer(tls *libc.TLS, file GzFile, size uint32) int32 { /* gzlib.c:316:13: */ 9042 var state Gz_statep 9043 9044 // get internal structure and check integrity 9045 if file == uintptr(0) { 9046 return -1 9047 } 9048 state = file 9049 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ && (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 9050 return -1 9051 } 9052 9053 // make sure we haven't already allocated memory 9054 if (*Gz_state)(unsafe.Pointer(state)).Fsize != uint32(0) { 9055 return -1 9056 } 9057 9058 // check and set requested size 9059 if size<<1 < size { 9060 return -1 9061 } // need to be able to double it 9062 if size < uint32(2) { 9063 size = uint32(2) 9064 } // need two bytes to check magic header 9065 (*Gz_state)(unsafe.Pointer(state)).Fwant = size 9066 return 0 9067 } 9068 9069 // -- see zlib.h -- 9070 func Xgzrewind(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:343:13: */ 9071 var state Gz_statep 9072 9073 // get internal structure 9074 if file == uintptr(0) { 9075 return -1 9076 } 9077 state = file 9078 9079 // check that we're reading and that there's no error 9080 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9081 return -1 9082 } 9083 9084 // back up and start over 9085 if libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fstart, SEEK_SET) == int64(-1) { 9086 return -1 9087 } 9088 gz_reset(tls, state) 9089 return 0 9090 } 9091 9092 // -- see zlib.h -- 9093 func Xgzseek64(tls *libc.TLS, file GzFile, offset Off64_t, whence int32) Off64_t { /* gzlib.c:366:19: */ 9094 var n uint32 9095 var ret Off64_t 9096 var state Gz_statep 9097 9098 // get internal structure and check integrity 9099 if file == uintptr(0) { 9100 return int64(-1) 9101 } 9102 state = file 9103 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ && (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 9104 return int64(-1) 9105 } 9106 9107 // check that there's no error 9108 if (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9109 return int64(-1) 9110 } 9111 9112 // can only seek from start or relative to current position 9113 if whence != SEEK_SET && whence != SEEK_CUR { 9114 return int64(-1) 9115 } 9116 9117 // normalize offset to a SEEK_CUR specification 9118 if whence == SEEK_SET { 9119 offset = offset - (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos 9120 } else if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9121 offset = offset + (*Gz_state)(unsafe.Pointer(state)).Fskip 9122 } 9123 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9124 9125 // if within raw area while reading, just go there 9126 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) { 9127 ret = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, offset-Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave), SEEK_CUR) 9128 if ret == int64(-1) { 9129 return int64(-1) 9130 } 9131 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 9132 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 9133 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 9134 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9135 Xgz_error(tls, state, Z_OK, uintptr(0)) 9136 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) 9137 *(*Off64_t)(unsafe.Pointer(state + 16)) += offset 9138 return (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos 9139 } 9140 9141 // calculate skip amount, rewinding if needed for back seek when reading 9142 if offset < int64(0) { 9143 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { // writing -- can't go backwards 9144 return int64(-1) 9145 } 9146 offset = offset + (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos 9147 if offset < int64(0) { // before start of file! 9148 return int64(-1) 9149 } 9150 if Xgzrewind(tls, file) == -1 { // rewind, then skip to offset 9151 return int64(-1) 9152 } 9153 } 9154 9155 // if reading, skip what's in output buffer (one less gzgetc() check) 9156 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 9157 if uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off64_t(0))) && (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave > uint32(0x7fffffff) || Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > offset { 9158 n = uint32(offset) 9159 } else { 9160 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9161 } 9162 *(*uint32)(unsafe.Pointer(state)) -= n 9163 *(*uintptr)(unsafe.Pointer(state + 8)) += uintptr(n) 9164 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(n) 9165 offset = offset - Off64_t(n) 9166 } 9167 9168 // request skip (if not zero) 9169 if offset != 0 { 9170 (*Gz_state)(unsafe.Pointer(state)).Fseek = 1 9171 (*Gz_state)(unsafe.Pointer(state)).Fskip = offset 9172 } 9173 return (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset 9174 } 9175 9176 // -- see zlib.h -- 9177 func Xgzseek(tls *libc.TLS, file GzFile, offset Off_t, whence int32) Off_t { /* gzlib.c:443:17: */ 9178 var ret Off64_t 9179 9180 ret = Xgzseek64(tls, file, offset, whence) 9181 if ret == ret { 9182 return ret 9183 } 9184 return int64(-1) 9185 } 9186 9187 // -- see zlib.h -- 9188 func Xgztell64(tls *libc.TLS, file GzFile) Off64_t { /* gzlib.c:455:19: */ 9189 var state Gz_statep 9190 9191 // get internal structure and check integrity 9192 if file == uintptr(0) { 9193 return int64(-1) 9194 } 9195 state = file 9196 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ && (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 9197 return int64(-1) 9198 } 9199 9200 // return position 9201 return (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + func() int64 { 9202 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9203 return (*Gz_state)(unsafe.Pointer(state)).Fskip 9204 } 9205 return int64(0) 9206 }() 9207 } 9208 9209 // -- see zlib.h -- 9210 func Xgztell(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:472:17: */ 9211 var ret Off64_t 9212 9213 ret = Xgztell64(tls, file) 9214 if ret == ret { 9215 return ret 9216 } 9217 return int64(-1) 9218 } 9219 9220 // -- see zlib.h -- 9221 func Xgzoffset64(tls *libc.TLS, file GzFile) Off64_t { /* gzlib.c:482:19: */ 9222 var offset Off64_t 9223 var state Gz_statep 9224 9225 // get internal structure and check integrity 9226 if file == uintptr(0) { 9227 return int64(-1) 9228 } 9229 state = file 9230 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ && (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 9231 return int64(-1) 9232 } 9233 9234 // compute and return effective offset in file 9235 offset = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR) 9236 if offset == int64(-1) { 9237 return int64(-1) 9238 } 9239 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // reading 9240 offset = offset - Off64_t((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in) 9241 } // don't count buffered input 9242 return offset 9243 } 9244 9245 // -- see zlib.h -- 9246 func Xgzoffset(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:505:17: */ 9247 var ret Off64_t 9248 9249 ret = Xgzoffset64(tls, file) 9250 if ret == ret { 9251 return ret 9252 } 9253 return int64(-1) 9254 } 9255 9256 // -- see zlib.h -- 9257 func Xgzeof(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:515:13: */ 9258 var state Gz_statep 9259 9260 // get internal structure and check integrity 9261 if file == uintptr(0) { 9262 return 0 9263 } 9264 state = file 9265 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ && (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 9266 return 0 9267 } 9268 9269 // return end-of-file state 9270 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 9271 return (*Gz_state)(unsafe.Pointer(state)).Fpast 9272 } 9273 return 0 9274 } 9275 9276 // -- see zlib.h -- 9277 func Xgzerror(tls *libc.TLS, file GzFile, errnum uintptr) uintptr { /* gzlib.c:532:12: */ 9278 var state Gz_statep 9279 9280 // get internal structure and check integrity 9281 if file == uintptr(0) { 9282 return uintptr(0) 9283 } 9284 state = file 9285 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ && (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 9286 return uintptr(0) 9287 } 9288 9289 // return error information 9290 if errnum != uintptr(0) { 9291 *(*int32)(unsafe.Pointer(errnum)) = (*Gz_state)(unsafe.Pointer(state)).Ferr 9292 } 9293 if (*Gz_state)(unsafe.Pointer(state)).Ferr == -4 { 9294 return ts + 87 /* "out of memory" */ 9295 } 9296 return func() uintptr { 9297 if (*Gz_state)(unsafe.Pointer(state)).Fmsg == uintptr(0) { 9298 return ts + 101 9299 } 9300 return (*Gz_state)(unsafe.Pointer(state)).Fmsg 9301 }() 9302 } 9303 9304 // -- see zlib.h -- 9305 func Xgzclearerr(tls *libc.TLS, file GzFile) { /* gzlib.c:553:14: */ 9306 var state Gz_statep 9307 9308 // get internal structure and check integrity 9309 if file == uintptr(0) { 9310 return 9311 } 9312 state = file 9313 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ && (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 9314 return 9315 } 9316 9317 // clear error and end-of-file 9318 if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { 9319 (*Gz_state)(unsafe.Pointer(state)).Feof = 0 9320 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 9321 } 9322 Xgz_error(tls, state, Z_OK, uintptr(0)) 9323 } 9324 9325 // Create an error message in allocated memory and set state->err and 9326 // state->msg accordingly. Free any previous error message already there. Do 9327 // not try to free or allocate space if the error is Z_MEM_ERROR (out of 9328 // memory). Simply save the error message as a static string. If there is an 9329 // allocation failure constructing the error message, then convert the error to 9330 // out of memory. 9331 func Xgz_error(tls *libc.TLS, state Gz_statep, err int32, msg uintptr) { /* gzlib.c:579:20: */ 9332 bp := tls.Alloc(24) 9333 defer tls.Free(24) 9334 9335 // free previously allocated message and clear 9336 if (*Gz_state)(unsafe.Pointer(state)).Fmsg != uintptr(0) { 9337 if (*Gz_state)(unsafe.Pointer(state)).Ferr != -4 { 9338 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg) 9339 } 9340 (*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0) 9341 } 9342 9343 // if fatal, set state->x.have to 0 so that the gzgetc() macro fails 9344 if err != Z_OK && err != -5 { 9345 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 9346 } 9347 9348 // set error code, and if no message, then done 9349 (*Gz_state)(unsafe.Pointer(state)).Ferr = err 9350 if msg == uintptr(0) { 9351 return 9352 } 9353 9354 // for an out of memory error, return literal string when requested 9355 if err == -4 { 9356 return 9357 } 9358 9359 // construct error message with path 9360 if libc.AssignPtrUintptr(state+112, libc.Xmalloc(tls, libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)+libc.Xstrlen(tls, msg)+uint64(3))) == uintptr(0) { 9361 (*Gz_state)(unsafe.Pointer(state)).Ferr = -4 9362 return 9363 } 9364 libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg, libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)+libc.Xstrlen(tls, msg)+uint64(3), 9365 ts+102, libc.VaList(bp, (*Gz_state)(unsafe.Pointer(state)).Fpath, ts+109, msg)) 9366 } 9367 9368 // Use read() to load a buffer -- return -1 on error, otherwise 0. Read from 9369 // state->fd, and update state->eof, state->err, and state->msg as appropriate. 9370 // This function needs to loop on read(), since read() is not guaranteed to 9371 // read the number of bytes requested, depending on the type of descriptor. 9372 func gz_load(tls *libc.TLS, state Gz_statep, buf uintptr, len uint32, have uintptr) int32 { /* gzread.c:21:11: */ 9373 var ret int32 9374 var get uint32 9375 var max uint32 = uint32(libc.Uint32(libc.Uint32FromInt32(-1)))>>2 + uint32(1) 9376 9377 *(*uint32)(unsafe.Pointer(have)) = uint32(0) 9378 for __ccgo := true; __ccgo; __ccgo = *(*uint32)(unsafe.Pointer(have)) < len { 9379 get = len - *(*uint32)(unsafe.Pointer(have)) 9380 if get > max { 9381 get = max 9382 } 9383 ret = int32(libc.Xread(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, buf+uintptr(*(*uint32)(unsafe.Pointer(have))), uint64(get))) 9384 if ret <= 0 { 9385 break 9386 } 9387 *(*uint32)(unsafe.Pointer(have)) += uint32(ret) 9388 } 9389 if ret < 0 { 9390 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))))) 9391 return -1 9392 } 9393 if ret == 0 { 9394 (*Gz_state)(unsafe.Pointer(state)).Feof = 1 9395 } 9396 return 0 9397 } 9398 9399 // Load up input buffer and set eof flag if last data loaded -- return -1 on 9400 // error, 0 otherwise. Note that the eof flag is set when the end of the input 9401 // file is reached, even though there may be unused data in the buffer. Once 9402 // that data has been used, no more attempts will be made to read the file. 9403 // If strm->avail_in != 0, then the current data is moved to the beginning of 9404 // the input buffer, and then the remainder of the buffer is loaded with the 9405 // available data from the input file. 9406 func gz_avail(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:56:11: */ 9407 bp := tls.Alloc(4) 9408 defer tls.Free(4) 9409 9410 // var got uint32 at bp, 4 9411 9412 var strm Z_streamp = state + 120 9413 9414 if (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9415 return -1 9416 } 9417 if (*Gz_state)(unsafe.Pointer(state)).Feof == 0 { 9418 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { // copy what's there to the start 9419 var p uintptr = (*Gz_state)(unsafe.Pointer(state)).Fin 9420 var q uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 9421 var n uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 9422 for __ccgo := true; __ccgo; __ccgo = libc.PreDecUint32(&n, 1) != 0 { 9423 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1))) 9424 } 9425 } 9426 if gz_load(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fin+uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in), 9427 (*Gz_state)(unsafe.Pointer(state)).Fsize-(*Z_stream)(unsafe.Pointer(strm)).Favail_in, bp) == -1 { 9428 return -1 9429 } 9430 *(*UInt)(unsafe.Pointer(strm + 8)) += *(*uint32)(unsafe.Pointer(bp)) 9431 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 9432 } 9433 return 0 9434 } 9435 9436 // Look for gzip header, set up for inflate or copy. state->x.have must be 0. 9437 // If this is the first time in, allocate required memory. state->how will be 9438 // left unchanged if there is no more input data available, will be set to COPY 9439 // if there is no gzip header and direct copying will be performed, or it will 9440 // be set to GZIP for decompression. If direct copying, then leftover input 9441 // data from the input buffer will be copied to the output buffer. In that 9442 // case, all further file reads will be directly to either the output buffer or 9443 // a user buffer. If decompressing, the inflate state will be initialized. 9444 // gz_look() will return 0 on success or -1 on failure. 9445 func gz_look(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:91:11: */ 9446 var strm Z_streamp = state + 120 9447 9448 // allocate read buffers and inflate memory 9449 if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) { 9450 // allocate buffers 9451 (*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant)) 9452 (*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant<<1)) 9453 if (*Gz_state)(unsafe.Pointer(state)).Fin == uintptr(0) || (*Gz_state)(unsafe.Pointer(state)).Fout == uintptr(0) { 9454 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 9455 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 9456 Xgz_error(tls, state, -4, ts+87) 9457 return -1 9458 } 9459 (*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant 9460 9461 // allocate inflate memory 9462 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzalloc = Alloc_func(Z_NULL) 9463 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzfree = Free_func(Z_NULL) 9464 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fopaque = Voidpf(Z_NULL) 9465 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) 9466 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = uintptr(Z_NULL) 9467 if XinflateInit2_(tls, state+120, 15+16, ts, int32(unsafe.Sizeof(Z_stream{}))) != Z_OK { // gunzip 9468 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 9469 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 9470 (*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0) 9471 Xgz_error(tls, state, -4, ts+87) 9472 return -1 9473 } 9474 } 9475 9476 // get at least the magic bytes in the input buffer 9477 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in < UInt(2) { 9478 if gz_avail(tls, state) == -1 { 9479 return -1 9480 } 9481 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 9482 return 0 9483 } 9484 } 9485 9486 // look for gzip magic bytes -- if there, do gzip decoding (note: there is 9487 // a logical dilemma here when considering the case of a partially written 9488 // gzip file, to wit, if a single 31 byte is written, then we cannot tell 9489 // whether this is a single-byte file, or just a partially written gzip 9490 // file -- for here we assume that if a gzip file is being written, then 9491 // the header will be written in a single operation, so that reading a 9492 // single byte is sufficient indication that it is not a gzip file) 9493 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 { 9494 XinflateReset(tls, strm) 9495 (*Gz_state)(unsafe.Pointer(state)).Fhow = /* GZIP */ 2 9496 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 0 9497 return 0 9498 } 9499 9500 // no gzip header -- if we were decoding gzip before, then this is trailing 9501 // garbage. Ignore the trailing garbage and finish. 9502 if (*Gz_state)(unsafe.Pointer(state)).Fdirect == 0 { 9503 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0) 9504 (*Gz_state)(unsafe.Pointer(state)).Feof = 1 9505 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 9506 return 0 9507 } 9508 9509 // doing raw i/o, copy any leftover input to output -- this assumes that 9510 // the output buffer is larger than the input buffer, which also assures 9511 // space for gzungetc() 9512 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 9513 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { 9514 libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64((*Z_stream)(unsafe.Pointer(strm)).Favail_in)) 9515 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 9516 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0) 9517 } 9518 (*Gz_state)(unsafe.Pointer(state)).Fhow = COPY1 9519 (*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 9520 return 0 9521 } 9522 9523 // Decompress from input to the provided next_out and avail_out in the state. 9524 // On return, state->x.have and state->x.next point to the just decompressed 9525 // data. If the gzip stream completes, state->how is reset to LOOK to look for 9526 // the next gzip stream or raw data, once state->x.have is depleted. Returns 0 9527 // on success, -1 on failure. 9528 func gz_decomp(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:175:11: */ 9529 var ret int32 = Z_OK 9530 var had uint32 9531 var strm Z_streamp = state + 120 9532 9533 // fill output buffer up to end of deflate stream 9534 had = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 9535 for __ccgo := true; __ccgo; __ccgo = (*Z_stream)(unsafe.Pointer(strm)).Favail_out != 0 && ret != Z_STREAM_END { 9536 // get more input for inflate() 9537 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) && gz_avail(tls, state) == -1 { 9538 return -1 9539 } 9540 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 9541 Xgz_error(tls, state, -5, ts+112) 9542 break 9543 } 9544 9545 // decompress and handle errors 9546 ret = Xinflate(tls, strm, Z_NO_FLUSH) 9547 if ret == -2 || ret == Z_NEED_DICT { 9548 Xgz_error(tls, state, -2, 9549 ts+135) 9550 return -1 9551 } 9552 if ret == -4 { 9553 Xgz_error(tls, state, -4, ts+87) 9554 return -1 9555 } 9556 if ret == -3 { // deflate stream invalid 9557 Xgz_error(tls, state, -3, 9558 func() uintptr { 9559 if (*Z_stream)(unsafe.Pointer(strm)).Fmsg == uintptr(0) { 9560 return ts + 174 /* "compressed data ..." */ 9561 } 9562 return (*Z_stream)(unsafe.Pointer(strm)).Fmsg 9563 }()) 9564 return -1 9565 } 9566 } 9567 9568 // update available output 9569 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = had - (*Z_stream)(unsafe.Pointer(strm)).Favail_out 9570 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) 9571 9572 // if the gzip stream completed successfully, look for another 9573 if ret == Z_STREAM_END { 9574 (*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK 9575 } 9576 9577 // good decompression 9578 return 0 9579 } 9580 9581 // Fetch data and put it in the output buffer. Assumes state->x.have is 0. 9582 // Data is either copied from the input file or decompressed from the input 9583 // file depending on state->how. If state->how is LOOK, then a gzip header is 9584 // looked for to determine whether to copy or decompress. Returns -1 on error, 9585 // otherwise 0. gz_fetch() will leave state->how as COPY or GZIP unless the 9586 // end of the input file has been reached and all data has been processed. 9587 func gz_fetch(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:229:11: */ 9588 var strm Z_streamp = state + 120 9589 9590 for __ccgo := true; __ccgo; __ccgo = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) && (!((*Gz_state)(unsafe.Pointer(state)).Feof != 0) || (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) { 9591 switch (*Gz_state)(unsafe.Pointer(state)).Fhow { 9592 case LOOK: // -> LOOK, COPY (only if never GZIP), or GZIP 9593 if gz_look(tls, state) == -1 { 9594 return -1 9595 } 9596 if (*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK { 9597 return 0 9598 } 9599 break 9600 case COPY1: // -> COPY 9601 if gz_load(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fout, (*Gz_state)(unsafe.Pointer(state)).Fsize<<1, state) == 9602 -1 { 9603 return -1 9604 } 9605 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 9606 return 0 9607 case /* GZIP */ 2: // -> GZIP or LOOK (if end of gzip stream) 9608 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize << 1 9609 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 9610 if gz_decomp(tls, state) == -1 { 9611 return -1 9612 } 9613 } 9614 } 9615 return 0 9616 } 9617 9618 // Skip len uncompressed bytes of output. Return -1 on error, 0 on success. 9619 func gz_skip(tls *libc.TLS, state Gz_statep, len Off64_t) int32 { /* gzread.c:259:11: */ 9620 var n uint32 9621 9622 // skip over len bytes or reach end-of-file, whichever comes first 9623 for len != 0 { 9624 // skip over whatever is in output buffer 9625 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 9626 if uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off64_t(0))) && (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave > uint32(0x7fffffff) || Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > len { 9627 n = uint32(len) 9628 } else { 9629 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9630 } 9631 *(*uint32)(unsafe.Pointer(state)) -= n 9632 *(*uintptr)(unsafe.Pointer(state + 8)) += uintptr(n) 9633 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(n) 9634 len = len - Off64_t(n) 9635 } else if (*Gz_state)(unsafe.Pointer(state)).Feof != 0 && (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0) { 9636 break 9637 } else { 9638 // get more output, looking for header if required 9639 if gz_fetch(tls, state) == -1 { 9640 return -1 9641 } 9642 } 9643 } 9644 return 0 9645 } 9646 9647 // Read len bytes into buf from file, or less than len up to the end of the 9648 // input. Return the number of bytes read. If zero is returned, either the 9649 // end of file was reached, or there was an error. state->err must be 9650 // consulted in that case to determine which. 9651 func gz_read(tls *libc.TLS, state Gz_statep, buf Voidp, len Z_size_t) Z_size_t { /* gzread.c:294:16: */ 9652 bp := tls.Alloc(4) 9653 defer tls.Free(4) 9654 9655 var got Z_size_t 9656 // var n uint32 at bp, 4 9657 9658 // if len is zero, avoid unnecessary operations 9659 if len == uint64(0) { 9660 return uint64(0) 9661 } 9662 9663 // process a skip request 9664 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9665 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9666 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9667 return uint64(0) 9668 } 9669 } 9670 9671 // get len bytes to buf, or less than len if at the end 9672 got = uint64(0) 9673 for __ccgo := true; __ccgo; __ccgo = len != 0 { 9674 // set n to the maximum amount of len that fits in an unsigned int 9675 *(*uint32)(unsafe.Pointer(bp /* n */)) = libc.Uint32FromInt32(-1) 9676 if Z_size_t(*(*uint32)(unsafe.Pointer(bp))) > len { 9677 *(*uint32)(unsafe.Pointer(bp /* n */)) = uint32(len) 9678 } 9679 9680 // first just try copying data from the output buffer 9681 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 9682 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave < *(*uint32)(unsafe.Pointer(bp)) { 9683 *(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9684 } 9685 libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(*(*uint32)(unsafe.Pointer(bp /* n */)))) 9686 *(*uintptr)(unsafe.Pointer(state + 8)) += uintptr(*(*uint32)(unsafe.Pointer(bp))) 9687 *(*uint32)(unsafe.Pointer(state)) -= *(*uint32)(unsafe.Pointer(bp)) 9688 } else if (*Gz_state)(unsafe.Pointer(state)).Feof != 0 && (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0) { 9689 (*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // tried to read past end 9690 break 9691 } else if (*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK || *(*uint32)(unsafe.Pointer(bp)) < (*Gz_state)(unsafe.Pointer(state)).Fsize<<1 { 9692 // get more output, looking for header if required 9693 if gz_fetch(tls, state) == -1 { 9694 return uint64(0) 9695 } 9696 continue // no progress yet -- go back to copy above 9697 // the copy above assures that we will leave with space in the 9698 // output buffer, allowing at least one gzungetc() to succeed 9699 } else if (*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1 { // read directly 9700 if gz_load(tls, state, buf, *(*uint32)(unsafe.Pointer(bp)), bp) == -1 { 9701 return uint64(0) 9702 } 9703 } else { // state->how == GZIP 9704 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_out = *(*uint32)(unsafe.Pointer(bp /* n */)) 9705 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_out = buf 9706 if gz_decomp(tls, state) == -1 { 9707 return uint64(0) 9708 } 9709 *(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9710 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0) 9711 } 9712 9713 // update progress 9714 len = len - Z_size_t(*(*uint32)(unsafe.Pointer(bp))) 9715 buf = buf + uintptr(*(*uint32)(unsafe.Pointer(bp))) 9716 got = got + Z_size_t(*(*uint32)(unsafe.Pointer(bp))) 9717 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(*(*uint32)(unsafe.Pointer(bp))) 9718 } 9719 9720 // return number of bytes read into user buffer 9721 return got 9722 } 9723 9724 // -- see zlib.h -- 9725 func Xgzread(tls *libc.TLS, file GzFile, buf Voidp, len uint32) int32 { /* gzread.c:375:13: */ 9726 var state Gz_statep 9727 9728 // get internal structure 9729 if file == uintptr(0) { 9730 return -1 9731 } 9732 state = file 9733 9734 // check that we're reading and that there's no (serious) error 9735 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9736 return -1 9737 } 9738 9739 // since an int is returned, make sure len fits in one, otherwise return 9740 // with an error (this avoids a flaw in the interface) 9741 if int32(len) < 0 { 9742 Xgz_error(tls, state, -2, ts+196) 9743 return -1 9744 } 9745 9746 // read len or fewer bytes to buf 9747 len = uint32(gz_read(tls, state, buf, uint64(len))) 9748 9749 // check for an error 9750 if len == uint32(0) && (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9751 return -1 9752 } 9753 9754 // return the number of bytes read (this is assured to fit in an int) 9755 return int32(len) 9756 } 9757 9758 // -- see zlib.h -- 9759 func Xgzfread(tls *libc.TLS, buf Voidp, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzread.c:411:18: */ 9760 var len Z_size_t 9761 var state Gz_statep 9762 9763 // get internal structure 9764 if file == uintptr(0) { 9765 return uint64(0) 9766 } 9767 state = file 9768 9769 // check that we're reading and that there's no (serious) error 9770 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9771 return uint64(0) 9772 } 9773 9774 // compute bytes to read -- error on overflow 9775 len = nitems * size 9776 if size != 0 && len/size != nitems { 9777 Xgz_error(tls, state, -2, ts+227) 9778 return uint64(0) 9779 } 9780 9781 // read len or fewer bytes to buf, return the number of full items read 9782 if len != 0 { 9783 return gz_read(tls, state, buf, len) / size 9784 } 9785 return uint64(0) 9786 } 9787 9788 // -- see zlib.h -- 9789 func Xgzgetc(tls *libc.TLS, file GzFile) int32 { /* gzread.c:447:13: */ 9790 bp := tls.Alloc(1) 9791 defer tls.Free(1) 9792 9793 var ret int32 9794 // var buf [1]uint8 at bp, 1 9795 9796 var state Gz_statep 9797 9798 // get internal structure 9799 if file == uintptr(0) { 9800 return -1 9801 } 9802 state = file 9803 9804 // check that we're reading and that there's no (serious) error 9805 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9806 return -1 9807 } 9808 9809 // try output buffer (no need to check for skip request) 9810 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 { 9811 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave-- 9812 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++ 9813 return int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, 1)))) 9814 } 9815 9816 // nothing there -- try gz_read() 9817 ret = int32(gz_read(tls, state, bp, uint64(1))) 9818 if ret < 1 { 9819 return -1 9820 } 9821 return int32(*(*uint8)(unsafe.Pointer(bp))) 9822 } 9823 9824 func Xgzgetc_(tls *libc.TLS, file GzFile) int32 { /* gzread.c:476:13: */ 9825 return Xgzgetc(tls, file) 9826 } 9827 9828 // -- see zlib.h -- 9829 func Xgzungetc(tls *libc.TLS, c int32, file GzFile) int32 { /* gzread.c:483:13: */ 9830 var state Gz_statep 9831 9832 // get internal structure 9833 if file == uintptr(0) { 9834 return -1 9835 } 9836 state = file 9837 9838 // check that we're reading and that there's no (serious) error 9839 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9840 return -1 9841 } 9842 9843 // process a skip request 9844 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9845 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9846 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9847 return -1 9848 } 9849 } 9850 9851 // can't push EOF 9852 if c < 0 { 9853 return -1 9854 } 9855 9856 // if output buffer empty, put byte at end (allows more pushing) 9857 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { 9858 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(1) 9859 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout + uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize<<1) - uintptr(1) 9860 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c) 9861 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos-- 9862 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 9863 return c 9864 } 9865 9866 // if no room, give up (must have already done a gzungetc()) 9867 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == (*Gz_state)(unsafe.Pointer(state)).Fsize<<1 { 9868 Xgz_error(tls, state, -3, ts+260) 9869 return -1 9870 } 9871 9872 // slide output data if needed and insert byte before existing data 9873 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext == (*Gz_state)(unsafe.Pointer(state)).Fout { 9874 var src uintptr = (*Gz_state)(unsafe.Pointer(state)).Fout + uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) 9875 var dest uintptr = (*Gz_state)(unsafe.Pointer(state)).Fout + uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize<<1) 9876 for src > (*Gz_state)(unsafe.Pointer(state)).Fout { 9877 *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&dest, 1))) = *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&src, 1))) 9878 } 9879 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = dest 9880 } 9881 (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave++ 9882 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext-- 9883 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c) 9884 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos-- 9885 (*Gz_state)(unsafe.Pointer(state)).Fpast = 0 9886 return c 9887 } 9888 9889 // -- see zlib.h -- 9890 func Xgzgets(tls *libc.TLS, file GzFile, buf uintptr, len int32) uintptr { /* gzread.c:543:6: */ 9891 var left uint32 9892 var n uint32 9893 var str uintptr 9894 var eol uintptr 9895 var state Gz_statep 9896 9897 // check parameters and get internal structure 9898 if file == uintptr(0) || buf == uintptr(0) || len < 1 { 9899 return uintptr(0) 9900 } 9901 state = file 9902 9903 // check that we're reading and that there's no (serious) error 9904 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK && (*Gz_state)(unsafe.Pointer(state)).Ferr != -5 { 9905 return uintptr(0) 9906 } 9907 9908 // process a skip request 9909 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 9910 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 9911 if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 9912 return uintptr(0) 9913 } 9914 } 9915 9916 // copy output bytes up to new line or len - 1, whichever comes first -- 9917 // append a terminating zero to the string (we don't check for a zero in 9918 // the contents, let the user worry about that) 9919 str = buf 9920 left = uint32(len) - uint32(1) 9921 if left != 0 { 9922 for __ccgo := true; __ccgo; __ccgo = left != 0 && eol == uintptr(0) { 9923 // assure that something is in the output buffer 9924 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) && gz_fetch(tls, state) == -1 { 9925 return uintptr(0) 9926 } // error 9927 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { // end of file 9928 (*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // read past end 9929 break // return what we have 9930 } 9931 9932 // look for end-of-line in current output buffer 9933 if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave > left { 9934 n = left 9935 } else { 9936 n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave 9937 } 9938 eol = libc.Xmemchr(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, '\n', uint64(n)) 9939 if eol != uintptr(0) { 9940 n = uint32((int64(eol)-int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext))/1) + uint32(1) 9941 } 9942 9943 // copy through end-of-line, or remainder if not found 9944 libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(n)) 9945 *(*uint32)(unsafe.Pointer(state)) -= n 9946 *(*uintptr)(unsafe.Pointer(state + 8)) += uintptr(n) 9947 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(n) 9948 left = left - n 9949 buf += uintptr(n) 9950 } 9951 } 9952 9953 // return terminated string, or if nothing, end of file 9954 if buf == str { 9955 return uintptr(0) 9956 } 9957 *(*uint8)(unsafe.Pointer(buf)) = uint8(0) 9958 return str 9959 } 9960 9961 // -- see zlib.h -- 9962 func Xgzdirect(tls *libc.TLS, file GzFile) int32 { /* gzread.c:607:13: */ 9963 var state Gz_statep 9964 9965 // get internal structure 9966 if file == uintptr(0) { 9967 return 0 9968 } 9969 state = file 9970 9971 // if the state is not known, but we can find out, then do so (this is 9972 // mainly for right after a gzopen() or gzdopen()) 9973 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) { 9974 gz_look(tls, state) 9975 } 9976 9977 // return 1 if transparent, 0 if processing a gzip stream 9978 return (*Gz_state)(unsafe.Pointer(state)).Fdirect 9979 } 9980 9981 // -- see zlib.h -- 9982 func Xgzclose_r(tls *libc.TLS, file GzFile) int32 { /* gzread.c:627:13: */ 9983 var ret int32 9984 var err int32 9985 var state Gz_statep 9986 9987 // get internal structure 9988 if file == uintptr(0) { 9989 return -2 9990 } 9991 state = file 9992 9993 // check that we're reading 9994 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { 9995 return -2 9996 } 9997 9998 // free memory and close file 9999 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 10000 XinflateEnd(tls, state+120) 10001 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 10002 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 10003 } 10004 if (*Gz_state)(unsafe.Pointer(state)).Ferr == -5 { 10005 err = -5 10006 } else { 10007 err = Z_OK 10008 } 10009 Xgz_error(tls, state, Z_OK, uintptr(0)) 10010 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 10011 ret = libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) 10012 libc.Xfree(tls, state) 10013 if ret != 0 { 10014 return -1 10015 } 10016 return err 10017 } 10018 10019 // Initialize state for writing a gzip file. Mark initialization by setting 10020 // state->size to non-zero. Return -1 on a memory allocation failure, or 0 on 10021 // success. 10022 func gz_init(tls *libc.TLS, state Gz_statep) int32 { /* gzwrite.c:17:11: */ 10023 var ret int32 10024 var strm Z_streamp = state + 120 10025 10026 // allocate input buffer (double size for gzprintf) 10027 (*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant<<1)) 10028 if (*Gz_state)(unsafe.Pointer(state)).Fin == uintptr(0) { 10029 Xgz_error(tls, state, -4, ts+87) 10030 return -1 10031 } 10032 10033 // only need output buffer and deflate state if compressing 10034 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 10035 // allocate output buffer 10036 (*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant)) 10037 if (*Gz_state)(unsafe.Pointer(state)).Fout == uintptr(0) { 10038 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 10039 Xgz_error(tls, state, -4, ts+87) 10040 return -1 10041 } 10042 10043 // allocate deflate memory, set up for gzip compression 10044 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = Alloc_func(Z_NULL) 10045 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = Free_func(Z_NULL) 10046 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = Voidpf(Z_NULL) 10047 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, int32(unsafe.Sizeof(Z_stream{}))) 10048 if ret != Z_OK { 10049 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 10050 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 10051 Xgz_error(tls, state, -4, ts+87) 10052 return -1 10053 } 10054 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = uintptr(0) 10055 } 10056 10057 // mark state as initialized 10058 (*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant 10059 10060 // initialize write buffer if compressing 10061 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 10062 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize 10063 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 10064 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 10065 } 10066 return 0 10067 } 10068 10069 // Compress whatever is at avail_in and next_in and write to the output file. 10070 // Return -1 if there is an error writing to the output file or if gz_init() 10071 // fails to allocate memory, otherwise 0. flush is assumed to be a valid 10072 // deflate() flush value. If flush is Z_FINISH, then the deflate() state is 10073 // reset to start a new gzip stream. If gz->direct is true, then simply write 10074 // to the output file without compressing, and ignore flush. 10075 func gz_comp(tls *libc.TLS, state Gz_statep, flush int32) int32 { /* gzwrite.c:73:11: */ 10076 var ret int32 10077 var writ int32 10078 var have uint32 10079 var put uint32 10080 var max uint32 = uint32(libc.Uint32(libc.Uint32FromInt32(-1)))>>2 + uint32(1) 10081 var strm Z_streamp = state + 120 10082 10083 // allocate memory if this is the first time through 10084 if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) && gz_init(tls, state) == -1 { 10085 return -1 10086 } 10087 10088 // write directly if requested 10089 if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 { 10090 for (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { 10091 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in > max { 10092 put = max 10093 } else { 10094 put = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 10095 } 10096 writ = int32(libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64(put))) 10097 if writ < 0 { 10098 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))))) 10099 return -1 10100 } 10101 *(*UInt)(unsafe.Pointer(strm + 8)) -= uint32(writ) 10102 *(*uintptr)(unsafe.Pointer(strm)) += uintptr(writ) 10103 } 10104 return 0 10105 } 10106 10107 // run deflate() on provided input until it produces no more output 10108 ret = Z_OK 10109 for __ccgo := true; __ccgo; __ccgo = have != 0 { 10110 // write out current buffer contents if full, or if flushing, but if 10111 // doing Z_FINISH then don't write until we get to Z_STREAM_END 10112 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) || flush != Z_NO_FLUSH && (flush != Z_FINISH || ret == Z_STREAM_END) { 10113 for (*Z_stream)(unsafe.Pointer(strm)).Fnext_out > (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext { 10114 if (int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_out)-int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext))/1 > int64(int32(max)) { 10115 put = max 10116 } else { 10117 put = uint32((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1) 10118 } 10119 writ = int32(libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(put))) 10120 if writ < 0 { 10121 Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls))))) 10122 return -1 10123 } 10124 *(*uintptr)(unsafe.Pointer(state + 8)) += uintptr(writ) 10125 } 10126 if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) { 10127 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize 10128 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout 10129 (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout 10130 } 10131 } 10132 10133 // compress 10134 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 10135 ret = Xdeflate(tls, strm, flush) 10136 if ret == -2 { 10137 Xgz_error(tls, state, -2, 10138 ts+291) 10139 return -1 10140 } 10141 have = have - (*Z_stream)(unsafe.Pointer(strm)).Favail_out 10142 } 10143 10144 // if that completed a deflate stream, allow another to start 10145 if flush == Z_FINISH { 10146 XdeflateReset(tls, strm) 10147 } 10148 10149 // all done, no errors 10150 return 0 10151 } 10152 10153 // Compress len zeros to output. Return -1 on a write error or memory 10154 // allocation failure by gz_comp(), or 0 on success. 10155 func gz_zero(tls *libc.TLS, state Gz_statep, len Off64_t) int32 { /* gzwrite.c:145:11: */ 10156 var first int32 10157 var n uint32 10158 var strm Z_streamp = state + 120 10159 10160 // consume whatever's left in the input buffer 10161 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 && gz_comp(tls, state, Z_NO_FLUSH) == -1 { 10162 return -1 10163 } 10164 10165 // compress len zeros (len guaranteed > 0) 10166 first = 1 10167 for len != 0 { 10168 if uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off64_t(0))) && (*Gz_state)(unsafe.Pointer(state)).Fsize > uint32(0x7fffffff) || Off64_t((*Gz_state)(unsafe.Pointer(state)).Fsize) > len { 10169 n = uint32(len) 10170 } else { 10171 n = (*Gz_state)(unsafe.Pointer(state)).Fsize 10172 } 10173 if first != 0 { 10174 libc.Xmemset(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, 0, uint64(n)) 10175 first = 0 10176 } 10177 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = n 10178 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 10179 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(n) 10180 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 10181 return -1 10182 } 10183 len = len - Off64_t(n) 10184 } 10185 return 0 10186 } 10187 10188 // Write len bytes from buf to file. Return the number of bytes written. If 10189 // the returned value is less than len, then there was an error. 10190 func gz_write(tls *libc.TLS, state Gz_statep, buf Voidpc, len Z_size_t) Z_size_t { /* gzwrite.c:178:16: */ 10191 var put Z_size_t = len 10192 10193 // if len is zero, avoid unnecessary operations 10194 if len == uint64(0) { 10195 return uint64(0) 10196 } 10197 10198 // allocate memory if this is the first time through 10199 if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) && gz_init(tls, state) == -1 { 10200 return uint64(0) 10201 } 10202 10203 // check for seek request 10204 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10205 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10206 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10207 return uint64(0) 10208 } 10209 } 10210 10211 // for small len, copy to input buffer, otherwise compress directly 10212 if len < Z_size_t((*Gz_state)(unsafe.Pointer(state)).Fsize) { 10213 // copy to input buffer, compress when full 10214 for __ccgo := true; __ccgo; __ccgo = len != 0 { 10215 var have uint32 10216 var copy uint32 10217 10218 if (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0) { 10219 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 10220 } 10221 have = uint32((int64((*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in+uintptr((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in)) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1) 10222 copy = (*Gz_state)(unsafe.Pointer(state)).Fsize - have 10223 if Z_size_t(copy) > len { 10224 copy = uint32(len) 10225 } 10226 libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fin+uintptr(have), buf, uint64(copy)) 10227 *(*UInt)(unsafe.Pointer(state + 120 + 8)) += copy 10228 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(copy) 10229 buf = buf + uintptr(copy) 10230 len = len - Z_size_t(copy) 10231 if len != 0 && gz_comp(tls, state, Z_NO_FLUSH) == -1 { 10232 return uint64(0) 10233 } 10234 } 10235 } else { 10236 // consume whatever's left in the input buffer 10237 if (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in != 0 && gz_comp(tls, state, Z_NO_FLUSH) == -1 { 10238 return uint64(0) 10239 } 10240 10241 // directly compress user buffer to file 10242 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = buf 10243 for __ccgo1 := true; __ccgo1; __ccgo1 = len != 0 { 10244 var n uint32 = libc.Uint32(libc.Uint32FromInt32(-1)) 10245 if Z_size_t(n) > len { 10246 n = uint32(len) 10247 } 10248 (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = n 10249 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(n) 10250 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 10251 return uint64(0) 10252 } 10253 len = len - Z_size_t(n) 10254 } 10255 } 10256 10257 // input was all buffered or compressed 10258 return put 10259 } 10260 10261 // -- see zlib.h -- 10262 func Xgzwrite(tls *libc.TLS, file GzFile, buf Voidpc, len uint32) int32 { /* gzwrite.c:246:13: */ 10263 var state Gz_statep 10264 10265 // get internal structure 10266 if file == uintptr(0) { 10267 return 0 10268 } 10269 state = file 10270 10271 // check that we're writing and that there's no error 10272 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK { 10273 return 0 10274 } 10275 10276 // since an int is returned, make sure len fits in one, otherwise return 10277 // with an error (this avoids a flaw in the interface) 10278 if int32(len) < 0 { 10279 Xgz_error(tls, state, -3, ts+330) 10280 return 0 10281 } 10282 10283 // write len bytes from buf (the return value will fit in an int) 10284 return int32(gz_write(tls, state, buf, uint64(len))) 10285 } 10286 10287 // -- see zlib.h -- 10288 func Xgzfwrite(tls *libc.TLS, buf Voidpc, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzwrite.c:274:18: */ 10289 var len Z_size_t 10290 var state Gz_statep 10291 10292 // get internal structure 10293 if file == uintptr(0) { 10294 return uint64(0) 10295 } 10296 state = file 10297 10298 // check that we're writing and that there's no error 10299 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK { 10300 return uint64(0) 10301 } 10302 10303 // compute bytes to read -- error on overflow 10304 len = nitems * size 10305 if size != 0 && len/size != nitems { 10306 Xgz_error(tls, state, -2, ts+227) 10307 return uint64(0) 10308 } 10309 10310 // write len bytes to buf, return the number of full items written 10311 if len != 0 { 10312 return gz_write(tls, state, buf, len) / size 10313 } 10314 return uint64(0) 10315 } 10316 10317 // -- see zlib.h -- 10318 func Xgzputc(tls *libc.TLS, file GzFile, c int32) int32 { /* gzwrite.c:304:13: */ 10319 bp := tls.Alloc(1) 10320 defer tls.Free(1) 10321 10322 var have uint32 10323 // var buf [1]uint8 at bp, 1 10324 10325 var state Gz_statep 10326 var strm Z_streamp 10327 10328 // get internal structure 10329 if file == uintptr(0) { 10330 return -1 10331 } 10332 state = file 10333 strm = state + 120 10334 10335 // check that we're writing and that there's no error 10336 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK { 10337 return -1 10338 } 10339 10340 // check for seek request 10341 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10342 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10343 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10344 return -1 10345 } 10346 } 10347 10348 // try writing to input buffer for speed (state->size == 0 if buffer not 10349 // initialized) 10350 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 10351 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 10352 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 10353 } 10354 have = uint32((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_in+uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in)) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1) 10355 if have < (*Gz_state)(unsafe.Pointer(state)).Fsize { 10356 *(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have))) = uint8(c) 10357 (*Z_stream)(unsafe.Pointer(strm)).Favail_in++ 10358 (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++ 10359 return c & 0xff 10360 } 10361 } 10362 10363 // no room in buffer or not initialized, use gz_write() 10364 *(*uint8)(unsafe.Pointer(bp)) = uint8(c) 10365 if gz_write(tls, state, bp, uint64(1)) != uint64(1) { 10366 return -1 10367 } 10368 return c & 0xff 10369 } 10370 10371 // -- see zlib.h -- 10372 func Xgzputs(tls *libc.TLS, file GzFile, str uintptr) int32 { /* gzwrite.c:352:13: */ 10373 var ret int32 10374 var len Z_size_t 10375 var state Gz_statep 10376 10377 // get internal structure 10378 if file == uintptr(0) { 10379 return -1 10380 } 10381 state = file 10382 10383 // check that we're writing and that there's no error 10384 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK { 10385 return -1 10386 } 10387 10388 // write string 10389 len = libc.Xstrlen(tls, str) 10390 ret = int32(gz_write(tls, state, str, len)) 10391 if ret == 0 && len != uint64(0) { 10392 return -1 10393 } 10394 return ret 10395 } 10396 10397 // Copyright (C) 1989-2021 Free Software Foundation, Inc. 10398 // 10399 // This file is part of GCC. 10400 // 10401 // GCC is free software; you can redistribute it and/or modify 10402 // it under the terms of the GNU General Public License as published by 10403 // the Free Software Foundation; either version 3, or (at your option) 10404 // any later version. 10405 // 10406 // GCC is distributed in the hope that it will be useful, 10407 // but WITHOUT ANY WARRANTY; without even the implied warranty of 10408 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10409 // GNU General Public License for more details. 10410 // 10411 // Under Section 7 of GPL version 3, you are granted additional 10412 // permissions described in the GCC Runtime Library Exception, version 10413 // 3.1, as published by the Free Software Foundation. 10414 // 10415 // You should have received a copy of the GNU General Public License and 10416 // a copy of the GCC Runtime Library Exception along with this program; 10417 // see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 10418 // <http://www.gnu.org/licenses/>. 10419 10420 // ISO C Standard: 7.15 Variable arguments <stdarg.h> 10421 10422 // -- see zlib.h -- 10423 func Xgzvprintf(tls *libc.TLS, file GzFile, format uintptr, va Va_list) int32 { /* gzwrite.c:379:15: */ 10424 var len int32 10425 var left uint32 10426 var next uintptr 10427 var state Gz_statep 10428 var strm Z_streamp 10429 10430 // get internal structure 10431 if file == uintptr(0) { 10432 return -2 10433 } 10434 state = file 10435 strm = state + 120 10436 10437 // check that we're writing and that there's no error 10438 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK { 10439 return -2 10440 } 10441 10442 // make sure we have some buffer space 10443 if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) && gz_init(tls, state) == -1 { 10444 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10445 } 10446 10447 // check for seek request 10448 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10449 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10450 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10451 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10452 } 10453 } 10454 10455 // do the printf() into the input buffer, put length in len -- the input 10456 // buffer is double-sized just for this function, so there is guaranteed to 10457 // be state->size bytes available after the current contents 10458 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) { 10459 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 10460 } 10461 next = (*Gz_state)(unsafe.Pointer(state)).Fin + uintptr((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_in)-int64((*Gz_state)(unsafe.Pointer(state)).Fin))/1) + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in) 10462 *(*uint8)(unsafe.Pointer(next + uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize-uint32(1)))) = uint8(0) 10463 len = libc.Xvsnprintf(tls, next, uint64((*Gz_state)(unsafe.Pointer(state)).Fsize), format, va) 10464 10465 // check that printf() results fit in buffer 10466 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 { 10467 return 0 10468 } 10469 10470 // update buffer and position, compress first half if past that 10471 *(*UInt)(unsafe.Pointer(strm + 8)) += uint32(len) 10472 *(*Off64_t)(unsafe.Pointer(state + 16)) += Off64_t(len) 10473 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in >= (*Gz_state)(unsafe.Pointer(state)).Fsize { 10474 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_in - (*Gz_state)(unsafe.Pointer(state)).Fsize 10475 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = (*Gz_state)(unsafe.Pointer(state)).Fsize 10476 if gz_comp(tls, state, Z_NO_FLUSH) == -1 { 10477 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10478 } 10479 libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, (*Gz_state)(unsafe.Pointer(state)).Fin+uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize), uint64(left)) 10480 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin 10481 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = left 10482 } 10483 return len 10484 } 10485 10486 func Xgzprintf(tls *libc.TLS, file GzFile, format uintptr, va uintptr) int32 { /* gzwrite.c:451:15: */ 10487 var va1 Va_list 10488 _ = va1 10489 var ret int32 10490 10491 va1 = va 10492 ret = Xgzvprintf(tls, file, format, va1) 10493 _ = va1 10494 return ret 10495 } 10496 10497 // -- see zlib.h -- 10498 func Xgzflush(tls *libc.TLS, file GzFile, flush int32) int32 { /* gzwrite.c:553:13: */ 10499 var state Gz_statep 10500 10501 // get internal structure 10502 if file == uintptr(0) { 10503 return -2 10504 } 10505 state = file 10506 10507 // check that we're writing and that there's no error 10508 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK { 10509 return -2 10510 } 10511 10512 // check flush parameter 10513 if flush < 0 || flush > Z_FINISH { 10514 return -2 10515 } 10516 10517 // check for seek request 10518 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10519 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10520 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10521 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10522 } 10523 } 10524 10525 // compress remaining data with requested flush 10526 gz_comp(tls, state, flush) 10527 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10528 } 10529 10530 // -- see zlib.h -- 10531 func Xgzsetparams(tls *libc.TLS, file GzFile, level int32, strategy int32) int32 { /* gzwrite.c:585:13: */ 10532 var state Gz_statep 10533 var strm Z_streamp 10534 10535 // get internal structure 10536 if file == uintptr(0) { 10537 return -2 10538 } 10539 state = file 10540 strm = state + 120 10541 10542 // check that we're writing and that there's no error 10543 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE || (*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK { 10544 return -2 10545 } 10546 10547 // if no change is requested, then do nothing 10548 if level == (*Gz_state)(unsafe.Pointer(state)).Flevel && strategy == (*Gz_state)(unsafe.Pointer(state)).Fstrategy { 10549 return Z_OK 10550 } 10551 10552 // check for seek request 10553 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10554 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10555 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10556 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10557 } 10558 } 10559 10560 // change compression parameters for subsequent input 10561 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 10562 // flush previous input with previous parameters before changing 10563 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 && gz_comp(tls, state, Z_BLOCK) == -1 { 10564 return (*Gz_state)(unsafe.Pointer(state)).Ferr 10565 } 10566 XdeflateParams(tls, strm, level, strategy) 10567 } 10568 (*Gz_state)(unsafe.Pointer(state)).Flevel = level 10569 (*Gz_state)(unsafe.Pointer(state)).Fstrategy = strategy 10570 return Z_OK 10571 } 10572 10573 // -- see zlib.h -- 10574 func Xgzclose_w(tls *libc.TLS, file GzFile) int32 { /* gzwrite.c:627:13: */ 10575 var ret int32 = Z_OK 10576 var state Gz_statep 10577 10578 // get internal structure 10579 if file == uintptr(0) { 10580 return -2 10581 } 10582 state = file 10583 10584 // check that we're writing 10585 if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE { 10586 return -2 10587 } 10588 10589 // check for seek request 10590 if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 { 10591 (*Gz_state)(unsafe.Pointer(state)).Fseek = 0 10592 if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 { 10593 ret = (*Gz_state)(unsafe.Pointer(state)).Ferr 10594 } 10595 } 10596 10597 // flush, free memory, and close file 10598 if gz_comp(tls, state, Z_FINISH) == -1 { 10599 ret = (*Gz_state)(unsafe.Pointer(state)).Ferr 10600 } 10601 if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 { 10602 if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) { 10603 XdeflateEnd(tls, state+120) 10604 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout) 10605 } 10606 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin) 10607 } 10608 Xgz_error(tls, state, Z_OK, uintptr(0)) 10609 libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) 10610 if libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) == -1 { 10611 ret = -1 10612 } 10613 libc.Xfree(tls, state) 10614 return ret 10615 } 10616 10617 // Reverse the bytes in a 32-bit value 10618 10619 // inftrees.h -- header to use inftrees.c 10620 // Copyright (C) 1995-2005, 2010 Mark Adler 10621 // For conditions of distribution and use, see copyright notice in zlib.h 10622 10623 // WARNING: this file should *not* be used by applications. It is 10624 // part of the implementation of the compression library and is 10625 // subject to change. Applications should only use zlib.h. 10626 // 10627 10628 // Structure for decoding tables. Each entry provides either the 10629 // information needed to do the operation requested by the code that 10630 // indexed that table entry, or it provides a pointer to another 10631 // table that indexes more bits of the code. op indicates whether 10632 // the entry is a pointer to another table, a literal, a length or 10633 // distance, an end-of-block, or an invalid code. For a table 10634 // pointer, the low four bits of op is the number of index bits of 10635 // that table. For a length or distance, the low four bits of op 10636 // is the number of extra bits to get after the code. bits is 10637 // the number of bits in this code or part of the code to drop off 10638 // of the bit buffer. val is the actual byte to output in the case 10639 // of a literal, the base length or distance, or the offset from 10640 // the current table to the next table. Each entry is four bytes. 10641 type Code = struct { 10642 Fop uint8 10643 Fbits uint8 10644 Fval uint16 10645 } /* inftrees.h:28:3 */ 10646 10647 // op values as set by inflate_table(): 10648 // 00000000 - literal 10649 // 0000tttt - table link, tttt != 0 is the number of table index bits 10650 // 0001eeee - length or distance, eeee is the number of extra bits 10651 // 01100000 - end of block 10652 // 01000000 - invalid code 10653 // 10654 10655 // Maximum size of the dynamic table. The maximum number of code structures is 10656 // 1444, which is the sum of 852 for literal/length codes and 592 for distance 10657 // codes. These values were found by exhaustive searches using the program 10658 // examples/enough.c found in the zlib distribtution. The arguments to that 10659 // program are the number of symbols, the initial root table size, and the 10660 // maximum bit length of a code. "enough 286 9 15" for literal/length codes 10661 // returns returns 852, and "enough 30 6 15" for distance codes returns 592. 10662 // The initial root table size (9 or 6) is found in the fifth argument of the 10663 // inflate_table() calls in inflate.c and infback.c. If the root table size is 10664 // changed, then these maximum sizes would be need to be recalculated and 10665 // updated. 10666 10667 // Type of code to build for inflate_table() 10668 type Codetype = uint32 /* inftrees.h:58:3 */ 10669 // inflate.h -- internal inflate state definition 10670 // Copyright (C) 1995-2016 Mark Adler 10671 // For conditions of distribution and use, see copyright notice in zlib.h 10672 10673 // WARNING: this file should *not* be used by applications. It is 10674 // part of the implementation of the compression library and is 10675 // subject to change. Applications should only use zlib.h. 10676 // 10677 10678 // define NO_GZIP when compiling if you want to disable gzip header and 10679 // trailer decoding by inflate(). NO_GZIP would be used to avoid linking in 10680 // the crc code when it is not needed. For shared libraries, gzip decoding 10681 // should be left enabled. 10682 10683 // Possible inflate modes between inflate() calls 10684 type Inflate_mode = uint32 /* inflate.h:53:3 */ 10685 10686 // 10687 // State transitions between above modes - 10688 // 10689 // (most modes can go to BAD or MEM on error -- not shown for clarity) 10690 // 10691 // Process header: 10692 // HEAD -> (gzip) or (zlib) or (raw) 10693 // (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> 10694 // HCRC -> TYPE 10695 // (zlib) -> DICTID or TYPE 10696 // DICTID -> DICT -> TYPE 10697 // (raw) -> TYPEDO 10698 // Read deflate blocks: 10699 // TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK 10700 // STORED -> COPY_ -> COPY -> TYPE 10701 // TABLE -> LENLENS -> CODELENS -> LEN_ 10702 // LEN_ -> LEN 10703 // Read deflate codes in fixed or dynamic block: 10704 // LEN -> LENEXT or LIT or TYPE 10705 // LENEXT -> DIST -> DISTEXT -> MATCH -> LEN 10706 // LIT -> LEN 10707 // Process trailer: 10708 // CHECK -> LENGTH -> DONE 10709 // 10710 10711 // State maintained between inflate() calls -- approximately 7K bytes, not 10712 // including the allocated sliding window, which is up to 32K bytes. 10713 type Inflate_state = struct { 10714 Fstrm Z_streamp 10715 Fmode Inflate_mode 10716 Flast int32 10717 Fwrap int32 10718 Fhavedict int32 10719 Fflags int32 10720 Fdmax uint32 10721 Fcheck uint64 10722 Ftotal uint64 10723 Fhead Gz_headerp 10724 Fwbits uint32 10725 Fwsize uint32 10726 Fwhave uint32 10727 Fwnext uint32 10728 Fwindow uintptr 10729 Fhold uint64 10730 Fbits uint32 10731 Flength uint32 10732 Foffset uint32 10733 Fextra uint32 10734 Flencode uintptr 10735 Fdistcode uintptr 10736 Flenbits uint32 10737 Fdistbits uint32 10738 Fncode uint32 10739 Fnlen uint32 10740 Fndist uint32 10741 Fhave uint32 10742 Fnext uintptr 10743 Flens [320]uint16 10744 Fwork [288]uint16 10745 Fcodes [1444]Code 10746 Fsane int32 10747 Fback int32 10748 Fwas uint32 10749 F__ccgo_pad1 [4]byte 10750 } /* inflate.h:82:1 */ 10751 10752 // 10753 // strm provides memory allocation functions in zalloc and zfree, or 10754 // Z_NULL to use the library memory allocation functions. 10755 // 10756 // windowBits is in the range 8..15, and window is a user-supplied 10757 // window and output buffer that is 2**windowBits bytes. 10758 // 10759 func XinflateBackInit_(tls *libc.TLS, strm Z_streamp, windowBits int32, window uintptr, version uintptr, stream_size int32) int32 { /* infback.c:28:13: */ 10760 var state uintptr 10761 10762 if version == uintptr(Z_NULL) || int32(*(*uint8)(unsafe.Pointer(version))) != int32(*(*uint8)(unsafe.Pointer(ts))) || stream_size != int32(unsafe.Sizeof(Z_stream{})) { 10763 return -6 10764 } 10765 if strm == uintptr(Z_NULL) || window == uintptr(Z_NULL) || windowBits < 8 || windowBits > 15 { 10766 return -2 10767 } 10768 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error 10769 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 10770 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 10771 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 10772 }{Xzcalloc})) 10773 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 10774 } 10775 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 10776 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 10777 f func(*libc.TLS, Voidpf, Voidpf) 10778 }{Xzcfree})) 10779 } 10780 state = (*struct { 10781 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 10782 })(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{}))) 10783 if state == uintptr(Z_NULL) { 10784 return -4 10785 } 10786 10787 (*Z_stream)(unsafe.Pointer(strm)).Fstate = state 10788 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768 10789 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = UInt(windowBits) 10790 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = uint32(1) << windowBits 10791 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = window 10792 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 10793 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 10794 return Z_OK 10795 } 10796 10797 // 10798 // Return state with length and distance decoding tables and index sizes set to 10799 // fixed code decoding. Normally this returns fixed tables from inffixed.h. 10800 // If BUILDFIXED is defined, then instead this routine builds the tables the 10801 // first time it's called, and returns those tables the first time and 10802 // thereafter. This reduces the size of the code by about 2K bytes, in 10803 // exchange for a little execution time. However, BUILDFIXED should not be 10804 // used for threaded applications, since the rewriting of the tables and virgin 10805 // may not be thread-safe. 10806 // 10807 func fixedtables(tls *libc.TLS, state uintptr) { /* infback.c:82:12: */ 10808 (*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix)) 10809 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 10810 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix)) 10811 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5) 10812 } 10813 10814 var lenfix = [512]Code{ 10815 {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)}, 10816 {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)}, 10817 {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)}, 10818 {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)}, 10819 {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)}, 10820 {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)}, 10821 {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)}, 10822 {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)}, 10823 {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)}, 10824 {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)}, 10825 {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)}, 10826 {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)}, 10827 {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)}, 10828 {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)}, 10829 {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)}, 10830 {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)}, 10831 {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)}, 10832 {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)}, 10833 {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)}, 10834 {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)}, 10835 {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)}, 10836 {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)}, 10837 {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)}, 10838 {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)}, 10839 {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)}, 10840 {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)}, 10841 {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)}, 10842 {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)}, 10843 {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)}, 10844 {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)}, 10845 {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)}, 10846 {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)}, 10847 {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)}, 10848 {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)}, 10849 {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)}, 10850 {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)}, 10851 {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)}, 10852 {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)}, 10853 {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)}, 10854 {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)}, 10855 {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)}, 10856 {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)}, 10857 {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)}, 10858 {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)}, 10859 {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)}, 10860 {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)}, 10861 {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)}, 10862 {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)}, 10863 {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)}, 10864 {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)}, 10865 {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)}, 10866 {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)}, 10867 {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)}, 10868 {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)}, 10869 {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)}, 10870 {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)}, 10871 {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)}, 10872 {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)}, 10873 {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)}, 10874 {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)}, 10875 {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)}, 10876 {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)}, 10877 {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)}, 10878 {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)}, 10879 {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)}, 10880 {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)}, 10881 {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)}, 10882 {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)}, 10883 {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)}, 10884 {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)}, 10885 {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)}, 10886 {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)}, 10887 {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)}, 10888 {Fbits: uint8(9), Fval: uint16(255)}, 10889 } /* inffixed.h:10:23 */ 10890 var distfix = [32]Code{ 10891 {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)}, 10892 {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)}, 10893 {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)}, 10894 {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)}, 10895 {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)}, 10896 {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)}, 10897 } /* inffixed.h:87:23 */ 10898 10899 // Macros for inflateBack(): 10900 10901 // Load returned state from inflate_fast() 10902 10903 // Set state from registers for inflate_fast() 10904 10905 // Clear the input bit accumulator 10906 10907 // Assure that some input is available. If input is requested, but denied, 10908 // then return a Z_BUF_ERROR from inflateBack(). 10909 10910 // Get a byte of input into the bit accumulator, or return from inflateBack() 10911 // with an error if there is no input available. 10912 10913 // Assure that there are at least n bits in the bit accumulator. If there is 10914 // not enough available input to do that, then return from inflateBack() with 10915 // an error. 10916 10917 // Return the low n bits of the bit accumulator (n < 16) 10918 10919 // Remove n bits from the bit accumulator 10920 10921 // Remove zero to seven bits as needed to go to a byte boundary 10922 10923 // Assure that some output space is available, by writing out the window 10924 // if it's full. If the write fails, return from inflateBack() with a 10925 // Z_BUF_ERROR. 10926 10927 // 10928 // strm provides the memory allocation functions and window buffer on input, 10929 // and provides information on the unused input on return. For Z_DATA_ERROR 10930 // returns, strm will also provide an error message. 10931 // 10932 // in() and out() are the call-back input and output functions. When 10933 // inflateBack() needs more input, it calls in(). When inflateBack() has 10934 // filled the window with output, or when it completes with data in the 10935 // window, it calls out() to write out the data. The application must not 10936 // change the provided input until in() is called again or inflateBack() 10937 // returns. The application must not change the window/output buffer until 10938 // inflateBack() returns. 10939 // 10940 // in() and out() are called with a descriptor parameter provided in the 10941 // inflateBack() call. This parameter can be a structure that provides the 10942 // information required to do the read or write, as well as accumulated 10943 // information on the input and output such as totals and check values. 10944 // 10945 // in() should return zero on failure. out() should return non-zero on 10946 // failure. If either in() or out() fails, than inflateBack() returns a 10947 // Z_BUF_ERROR. strm->next_in can be checked for Z_NULL to see whether it 10948 // was in() or out() that caused in the error. Otherwise, inflateBack() 10949 // returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format 10950 // error, or Z_MEM_ERROR if it could not allocate memory for the state. 10951 // inflateBack() can also return Z_STREAM_ERROR if the input parameters 10952 // are not correct, i.e. strm is Z_NULL or the state was not initialized. 10953 // 10954 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: */ 10955 bp := tls.Alloc(8) 10956 defer tls.Free(8) 10957 10958 var state uintptr 10959 // var next uintptr at bp, 8 10960 // next input 10961 var put uintptr // next output 10962 var have uint32 10963 var left uint32 // available input and output 10964 var hold uint64 // bit buffer 10965 var bits uint32 // bits in bit buffer 10966 var copy uint32 // number of stored or match bytes to copy 10967 var from uintptr // where to copy match bytes from 10968 var here Code // current decoding table entry 10969 var last Code // parent table entry 10970 var len uint32 // length to copy for repeats, bits to drop 10971 var ret int32 10972 10973 // Check that the strm exists and that the state was initialized 10974 if !(strm == uintptr(Z_NULL) || (*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL)) { 10975 goto __1 10976 } 10977 return -2 10978 __1: 10979 ; 10980 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 10981 10982 // Reset the state 10983 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 10984 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 10985 (*Inflate_state)(unsafe.Pointer(state)).Flast = 0 10986 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 10987 *(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 10988 if *(*uintptr)(unsafe.Pointer(bp)) != uintptr(Z_NULL) { 10989 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 10990 } else { 10991 have = uint32(0) 10992 } 10993 hold = uint64(0) 10994 bits = uint32(0) 10995 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 10996 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 10997 10998 // Inflate until end of block marked as last 10999 __2: 11000 switch (*Inflate_state)(unsafe.Pointer(state)).Fmode { 11001 case TYPE: 11002 goto __6 11003 11004 case STORED: 11005 goto __7 11006 11007 case TABLE: 11008 goto __8 11009 11010 case LEN: 11011 goto __9 11012 11013 case DONE: 11014 goto __10 11015 11016 case BAD: 11017 goto __11 11018 11019 default: 11020 goto __12 11021 } 11022 goto __5 11023 __6: 11024 // determine and dispatch block type 11025 if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) { 11026 goto __13 11027 } 11028 __14: 11029 hold >>= bits & uint32(7) 11030 bits = bits - bits&uint32(7) 11031 goto __15 11032 __15: 11033 if 0 != 0 { 11034 goto __14 11035 } 11036 goto __16 11037 __16: 11038 ; 11039 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE 11040 goto __5 11041 __13: 11042 ; 11043 __17: 11044 __20: 11045 if !(bits < uint32(3)) { 11046 goto __21 11047 } 11048 __22: 11049 __25: 11050 if !(have == uint32(0)) { 11051 goto __28 11052 } 11053 have = (*struct { 11054 f func(*libc.TLS, uintptr, uintptr) uint32 11055 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11056 if !(have == uint32(0)) { 11057 goto __29 11058 } 11059 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11060 ret = -5 11061 goto inf_leave 11062 __29: 11063 ; 11064 __28: 11065 ; 11066 goto __26 11067 __26: 11068 if 0 != 0 { 11069 goto __25 11070 } 11071 goto __27 11072 __27: 11073 ; 11074 have-- 11075 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11076 bits = bits + uint32(8) 11077 goto __23 11078 __23: 11079 if 0 != 0 { 11080 goto __22 11081 } 11082 goto __24 11083 __24: 11084 ; 11085 goto __20 11086 __21: 11087 ; 11088 goto __18 11089 __18: 11090 if 0 != 0 { 11091 goto __17 11092 } 11093 goto __19 11094 __19: 11095 ; 11096 (*Inflate_state)(unsafe.Pointer(state)).Flast = int32(uint32(hold) & (uint32(1)<<1 - uint32(1))) 11097 __30: 11098 hold >>= 1 11099 bits = bits - uint32(1) 11100 goto __31 11101 __31: 11102 if 0 != 0 { 11103 goto __30 11104 } 11105 goto __32 11106 __32: 11107 ; 11108 switch uint32(hold) & (uint32(1)<<2 - uint32(1)) { 11109 case uint32(0): 11110 goto __34 11111 case uint32(1): 11112 goto __35 11113 case uint32(2): 11114 goto __36 11115 case uint32(3): 11116 goto __37 11117 } 11118 goto __33 11119 __34: // stored block 11120 ; 11121 (*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED 11122 goto __33 11123 __35: // fixed block 11124 fixedtables(tls, state) 11125 11126 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN // decode codes 11127 goto __33 11128 __36: // dynamic block 11129 ; 11130 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE 11131 goto __33 11132 __37: 11133 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */ 11134 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11135 __33: 11136 ; 11137 __38: 11138 hold >>= 2 11139 bits = bits - uint32(2) 11140 goto __39 11141 __39: 11142 if 0 != 0 { 11143 goto __38 11144 } 11145 goto __40 11146 __40: 11147 ; 11148 goto __5 11149 11150 __7: 11151 // get and verify stored block length 11152 __41: 11153 hold >>= bits & uint32(7) 11154 bits = bits - bits&uint32(7) 11155 goto __42 11156 __42: 11157 if 0 != 0 { 11158 goto __41 11159 } 11160 goto __43 11161 __43: 11162 ; // go to byte boundary 11163 __44: 11164 __47: 11165 if !(bits < uint32(32)) { 11166 goto __48 11167 } 11168 __49: 11169 __52: 11170 if !(have == uint32(0)) { 11171 goto __55 11172 } 11173 have = (*struct { 11174 f func(*libc.TLS, uintptr, uintptr) uint32 11175 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11176 if !(have == uint32(0)) { 11177 goto __56 11178 } 11179 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11180 ret = -5 11181 goto inf_leave 11182 __56: 11183 ; 11184 __55: 11185 ; 11186 goto __53 11187 __53: 11188 if 0 != 0 { 11189 goto __52 11190 } 11191 goto __54 11192 __54: 11193 ; 11194 have-- 11195 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11196 bits = bits + uint32(8) 11197 goto __50 11198 __50: 11199 if 0 != 0 { 11200 goto __49 11201 } 11202 goto __51 11203 __51: 11204 ; 11205 goto __47 11206 __48: 11207 ; 11208 goto __45 11209 __45: 11210 if 0 != 0 { 11211 goto __44 11212 } 11213 goto __46 11214 __46: 11215 ; 11216 if !(hold&uint64(0xffff) != hold>>16^uint64(0xffff)) { 11217 goto __57 11218 } 11219 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */ 11220 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11221 goto __5 11222 __57: 11223 ; 11224 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(hold) & uint32(0xffff) 11225 11226 __58: 11227 hold = uint64(0) 11228 bits = uint32(0) 11229 goto __59 11230 __59: 11231 if 0 != 0 { 11232 goto __58 11233 } 11234 goto __60 11235 __60: 11236 ; 11237 11238 // copy stored block from input to output 11239 __61: 11240 if !((*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0)) { 11241 goto __62 11242 } 11243 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 11244 __63: 11245 if !(have == uint32(0)) { 11246 goto __66 11247 } 11248 have = (*struct { 11249 f func(*libc.TLS, uintptr, uintptr) uint32 11250 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11251 if !(have == uint32(0)) { 11252 goto __67 11253 } 11254 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11255 ret = -5 11256 goto inf_leave 11257 __67: 11258 ; 11259 __66: 11260 ; 11261 goto __64 11262 __64: 11263 if 0 != 0 { 11264 goto __63 11265 } 11266 goto __65 11267 __65: 11268 ; 11269 __68: 11270 if !(left == uint32(0)) { 11271 goto __71 11272 } 11273 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 11274 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 11275 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 11276 if !((*struct { 11277 f func(*libc.TLS, uintptr, uintptr, uint32) int32 11278 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 11279 goto __72 11280 } 11281 ret = -5 11282 goto inf_leave 11283 __72: 11284 ; 11285 __71: 11286 ; 11287 goto __69 11288 __69: 11289 if 0 != 0 { 11290 goto __68 11291 } 11292 goto __70 11293 __70: 11294 ; 11295 if !(copy > have) { 11296 goto __73 11297 } 11298 copy = have 11299 __73: 11300 ; 11301 if !(copy > left) { 11302 goto __74 11303 } 11304 copy = left 11305 __74: 11306 ; 11307 libc.Xmemcpy(tls, put, *(*uintptr)(unsafe.Pointer(bp /* next */)), uint64(copy)) 11308 have = have - copy 11309 *(*uintptr)(unsafe.Pointer(bp /* next */)) += uintptr(copy) 11310 left = left - copy 11311 put += uintptr(copy) 11312 *(*uint32)(unsafe.Pointer(state + 92)) -= copy 11313 goto __61 11314 __62: 11315 ; 11316 11317 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 11318 goto __5 11319 11320 __8: 11321 // get dynamic table entries descriptor 11322 __75: 11323 __78: 11324 if !(bits < uint32(14)) { 11325 goto __79 11326 } 11327 __80: 11328 __83: 11329 if !(have == uint32(0)) { 11330 goto __86 11331 } 11332 have = (*struct { 11333 f func(*libc.TLS, uintptr, uintptr) uint32 11334 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11335 if !(have == uint32(0)) { 11336 goto __87 11337 } 11338 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11339 ret = -5 11340 goto inf_leave 11341 __87: 11342 ; 11343 __86: 11344 ; 11345 goto __84 11346 __84: 11347 if 0 != 0 { 11348 goto __83 11349 } 11350 goto __85 11351 __85: 11352 ; 11353 have-- 11354 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11355 bits = bits + uint32(8) 11356 goto __81 11357 __81: 11358 if 0 != 0 { 11359 goto __80 11360 } 11361 goto __82 11362 __82: 11363 ; 11364 goto __78 11365 __79: 11366 ; 11367 goto __76 11368 __76: 11369 if 0 != 0 { 11370 goto __75 11371 } 11372 goto __77 11373 __77: 11374 ; 11375 (*Inflate_state)(unsafe.Pointer(state)).Fnlen = uint32(hold)&(uint32(1)<<5-uint32(1)) + uint32(257) 11376 __88: 11377 hold >>= 5 11378 bits = bits - uint32(5) 11379 goto __89 11380 __89: 11381 if 0 != 0 { 11382 goto __88 11383 } 11384 goto __90 11385 __90: 11386 ; 11387 (*Inflate_state)(unsafe.Pointer(state)).Fndist = uint32(hold)&(uint32(1)<<5-uint32(1)) + uint32(1) 11388 __91: 11389 hold >>= 5 11390 bits = bits - uint32(5) 11391 goto __92 11392 __92: 11393 if 0 != 0 { 11394 goto __91 11395 } 11396 goto __93 11397 __93: 11398 ; 11399 (*Inflate_state)(unsafe.Pointer(state)).Fncode = uint32(hold)&(uint32(1)<<4-uint32(1)) + uint32(4) 11400 __94: 11401 hold >>= 4 11402 bits = bits - uint32(4) 11403 goto __95 11404 __95: 11405 if 0 != 0 { 11406 goto __94 11407 } 11408 goto __96 11409 __96: 11410 ; 11411 if !((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286) || (*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30)) { 11412 goto __97 11413 } 11414 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */ 11415 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11416 goto __5 11417 __97: 11418 ; 11419 11420 // get code length code lengths (not a typo) 11421 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 11422 __98: 11423 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) { 11424 goto __99 11425 } 11426 __100: 11427 __103: 11428 if !(bits < uint32(3)) { 11429 goto __104 11430 } 11431 __105: 11432 __108: 11433 if !(have == uint32(0)) { 11434 goto __111 11435 } 11436 have = (*struct { 11437 f func(*libc.TLS, uintptr, uintptr) uint32 11438 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11439 if !(have == uint32(0)) { 11440 goto __112 11441 } 11442 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11443 ret = -5 11444 goto inf_leave 11445 __112: 11446 ; 11447 __111: 11448 ; 11449 goto __109 11450 __109: 11451 if 0 != 0 { 11452 goto __108 11453 } 11454 goto __110 11455 __110: 11456 ; 11457 have-- 11458 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11459 bits = bits + uint32(8) 11460 goto __106 11461 __106: 11462 if 0 != 0 { 11463 goto __105 11464 } 11465 goto __107 11466 __107: 11467 ; 11468 goto __103 11469 __104: 11470 ; 11471 goto __101 11472 __101: 11473 if 0 != 0 { 11474 goto __100 11475 } 11476 goto __102 11477 __102: 11478 ; 11479 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(uint32(hold) & (uint32(1)<<3 - uint32(1))) 11480 __113: 11481 hold >>= 3 11482 bits = bits - uint32(3) 11483 goto __114 11484 __114: 11485 if 0 != 0 { 11486 goto __113 11487 } 11488 goto __115 11489 __115: 11490 ; 11491 goto __98 11492 __99: 11493 ; 11494 __116: 11495 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) { 11496 goto __117 11497 } 11498 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0) 11499 goto __116 11500 __117: 11501 ; 11502 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 11503 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 11504 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7) 11505 ret = Xinflate_table(tls, CODES, state+152, uint32(19), state+144, 11506 state+120, state+792) 11507 if !(ret != 0) { 11508 goto __118 11509 } 11510 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */ 11511 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11512 goto __5 11513 __118: 11514 ; 11515 11516 // get length and distance code code lengths 11517 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 11518 __119: 11519 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fnlen+(*Inflate_state)(unsafe.Pointer(state)).Fndist) { 11520 goto __120 11521 } 11522 __121: 11523 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr(uint32(hold)&(uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Flenbits-uint32(1)))*4)) 11524 if !(uint32(here.Fbits) <= bits) { 11525 goto __124 11526 } 11527 goto __123 11528 __124: 11529 ; 11530 __125: 11531 __128: 11532 if !(have == uint32(0)) { 11533 goto __131 11534 } 11535 have = (*struct { 11536 f func(*libc.TLS, uintptr, uintptr) uint32 11537 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11538 if !(have == uint32(0)) { 11539 goto __132 11540 } 11541 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11542 ret = -5 11543 goto inf_leave 11544 __132: 11545 ; 11546 __131: 11547 ; 11548 goto __129 11549 __129: 11550 if 0 != 0 { 11551 goto __128 11552 } 11553 goto __130 11554 __130: 11555 ; 11556 have-- 11557 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11558 bits = bits + uint32(8) 11559 goto __126 11560 __126: 11561 if 0 != 0 { 11562 goto __125 11563 } 11564 goto __127 11565 __127: 11566 ; 11567 goto __122 11568 __122: 11569 goto __121 11570 goto __123 11571 __123: 11572 ; 11573 if !(int32(here.Fval) < 16) { 11574 goto __133 11575 } 11576 __135: 11577 hold >>= int32(here.Fbits) 11578 bits = bits - uint32(here.Fbits) 11579 goto __136 11580 __136: 11581 if 0 != 0 { 11582 goto __135 11583 } 11584 goto __137 11585 __137: 11586 ; 11587 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval 11588 goto __134 11589 __133: 11590 if !(int32(here.Fval) == 16) { 11591 goto __138 11592 } 11593 __140: 11594 __143: 11595 if !(bits < uint32(int32(here.Fbits)+2)) { 11596 goto __144 11597 } 11598 __145: 11599 __148: 11600 if !(have == uint32(0)) { 11601 goto __151 11602 } 11603 have = (*struct { 11604 f func(*libc.TLS, uintptr, uintptr) uint32 11605 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11606 if !(have == uint32(0)) { 11607 goto __152 11608 } 11609 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11610 ret = -5 11611 goto inf_leave 11612 __152: 11613 ; 11614 __151: 11615 ; 11616 goto __149 11617 __149: 11618 if 0 != 0 { 11619 goto __148 11620 } 11621 goto __150 11622 __150: 11623 ; 11624 have-- 11625 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11626 bits = bits + uint32(8) 11627 goto __146 11628 __146: 11629 if 0 != 0 { 11630 goto __145 11631 } 11632 goto __147 11633 __147: 11634 ; 11635 goto __143 11636 __144: 11637 ; 11638 goto __141 11639 __141: 11640 if 0 != 0 { 11641 goto __140 11642 } 11643 goto __142 11644 __142: 11645 ; 11646 __153: 11647 hold >>= int32(here.Fbits) 11648 bits = bits - uint32(here.Fbits) 11649 goto __154 11650 __154: 11651 if 0 != 0 { 11652 goto __153 11653 } 11654 goto __155 11655 __155: 11656 ; 11657 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) { 11658 goto __156 11659 } 11660 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 11661 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11662 goto __120 11663 __156: 11664 ; 11665 len = uint32(*(*uint16)(unsafe.Pointer(state + 152 + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1))*2))) 11666 copy = uint32(3) + uint32(hold)&(uint32(1)<<2-uint32(1)) 11667 __157: 11668 hold >>= 2 11669 bits = bits - uint32(2) 11670 goto __158 11671 __158: 11672 if 0 != 0 { 11673 goto __157 11674 } 11675 goto __159 11676 __159: 11677 ; 11678 goto __139 11679 __138: 11680 if !(int32(here.Fval) == 17) { 11681 goto __160 11682 } 11683 __162: 11684 __165: 11685 if !(bits < uint32(int32(here.Fbits)+3)) { 11686 goto __166 11687 } 11688 __167: 11689 __170: 11690 if !(have == uint32(0)) { 11691 goto __173 11692 } 11693 have = (*struct { 11694 f func(*libc.TLS, uintptr, uintptr) uint32 11695 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11696 if !(have == uint32(0)) { 11697 goto __174 11698 } 11699 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11700 ret = -5 11701 goto inf_leave 11702 __174: 11703 ; 11704 __173: 11705 ; 11706 goto __171 11707 __171: 11708 if 0 != 0 { 11709 goto __170 11710 } 11711 goto __172 11712 __172: 11713 ; 11714 have-- 11715 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11716 bits = bits + uint32(8) 11717 goto __168 11718 __168: 11719 if 0 != 0 { 11720 goto __167 11721 } 11722 goto __169 11723 __169: 11724 ; 11725 goto __165 11726 __166: 11727 ; 11728 goto __163 11729 __163: 11730 if 0 != 0 { 11731 goto __162 11732 } 11733 goto __164 11734 __164: 11735 ; 11736 __175: 11737 hold >>= int32(here.Fbits) 11738 bits = bits - uint32(here.Fbits) 11739 goto __176 11740 __176: 11741 if 0 != 0 { 11742 goto __175 11743 } 11744 goto __177 11745 __177: 11746 ; 11747 len = uint32(0) 11748 copy = uint32(3) + uint32(hold)&(uint32(1)<<3-uint32(1)) 11749 __178: 11750 hold >>= 3 11751 bits = bits - uint32(3) 11752 goto __179 11753 __179: 11754 if 0 != 0 { 11755 goto __178 11756 } 11757 goto __180 11758 __180: 11759 ; 11760 goto __161 11761 __160: 11762 __181: 11763 __184: 11764 if !(bits < uint32(int32(here.Fbits)+7)) { 11765 goto __185 11766 } 11767 __186: 11768 __189: 11769 if !(have == uint32(0)) { 11770 goto __192 11771 } 11772 have = (*struct { 11773 f func(*libc.TLS, uintptr, uintptr) uint32 11774 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11775 if !(have == uint32(0)) { 11776 goto __193 11777 } 11778 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11779 ret = -5 11780 goto inf_leave 11781 __193: 11782 ; 11783 __192: 11784 ; 11785 goto __190 11786 __190: 11787 if 0 != 0 { 11788 goto __189 11789 } 11790 goto __191 11791 __191: 11792 ; 11793 have-- 11794 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11795 bits = bits + uint32(8) 11796 goto __187 11797 __187: 11798 if 0 != 0 { 11799 goto __186 11800 } 11801 goto __188 11802 __188: 11803 ; 11804 goto __184 11805 __185: 11806 ; 11807 goto __182 11808 __182: 11809 if 0 != 0 { 11810 goto __181 11811 } 11812 goto __183 11813 __183: 11814 ; 11815 __194: 11816 hold >>= int32(here.Fbits) 11817 bits = bits - uint32(here.Fbits) 11818 goto __195 11819 __195: 11820 if 0 != 0 { 11821 goto __194 11822 } 11823 goto __196 11824 __196: 11825 ; 11826 len = uint32(0) 11827 copy = uint32(11) + uint32(hold)&(uint32(1)<<7-uint32(1)) 11828 __197: 11829 hold >>= 7 11830 bits = bits - uint32(7) 11831 goto __198 11832 __198: 11833 if 0 != 0 { 11834 goto __197 11835 } 11836 goto __199 11837 __199: 11838 ; 11839 __161: 11840 ; 11841 __139: 11842 ; 11843 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave+copy > (*Inflate_state)(unsafe.Pointer(state)).Fnlen+(*Inflate_state)(unsafe.Pointer(state)).Fndist) { 11844 goto __200 11845 } 11846 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 11847 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11848 goto __120 11849 __200: 11850 ; 11851 __201: 11852 if !(libc.PostDecUint32(©, 1) != 0) { 11853 goto __202 11854 } 11855 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len) 11856 goto __201 11857 __202: 11858 ; 11859 __134: 11860 ; 11861 goto __119 11862 __120: 11863 ; 11864 11865 // handle error breaks in while 11866 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) { 11867 goto __203 11868 } 11869 goto __5 11870 __203: 11871 ; 11872 11873 // check for end-of-block code (better have one) 11874 if !(int32(*(*uint16)(unsafe.Pointer(state + 152 + 256*2))) == 0) { 11875 goto __204 11876 } 11877 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */ 11878 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11879 goto __5 11880 __204: 11881 ; 11882 11883 // build code tables -- note: do not change the lenbits or distbits 11884 // values here (9 and 6) without reading the comments in inftrees.h 11885 // concerning the ENOUGH constants, which depend on those values 11886 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 11887 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 11888 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 11889 ret = Xinflate_table(tls, LENS, state+152, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, state+144, 11890 state+120, state+792) 11891 if !(ret != 0) { 11892 goto __205 11893 } 11894 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */ 11895 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11896 goto __5 11897 __205: 11898 ; 11899 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 11900 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6) 11901 ret = Xinflate_table(tls, DISTS, state+152+uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2, (*Inflate_state)(unsafe.Pointer(state)).Fndist, 11902 state+144, state+124, state+792) 11903 if !(ret != 0) { 11904 goto __206 11905 } 11906 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */ 11907 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 11908 goto __5 11909 __206: 11910 ; 11911 11912 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 11913 11914 __9: 11915 // use inflate_fast() if we have enough input and output 11916 if !(have >= uint32(6) && left >= uint32(258)) { 11917 goto __207 11918 } 11919 __208: 11920 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 11921 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 11922 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */)) 11923 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 11924 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 11925 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 11926 goto __209 11927 __209: 11928 if 0 != 0 { 11929 goto __208 11930 } 11931 goto __210 11932 __210: 11933 ; 11934 if !((*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) { 11935 goto __211 11936 } 11937 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize - left 11938 __211: 11939 ; 11940 Xinflate_fast(tls, strm, (*Inflate_state)(unsafe.Pointer(state)).Fwsize) 11941 __212: 11942 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 11943 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 11944 *(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 11945 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 11946 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 11947 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 11948 goto __213 11949 __213: 11950 if 0 != 0 { 11951 goto __212 11952 } 11953 goto __214 11954 __214: 11955 ; 11956 goto __5 11957 __207: 11958 ; 11959 11960 // get a literal, length, or end-of-block code 11961 __215: 11962 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr(uint32(hold)&(uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Flenbits-uint32(1)))*4)) 11963 if !(uint32(here.Fbits) <= bits) { 11964 goto __218 11965 } 11966 goto __217 11967 __218: 11968 ; 11969 __219: 11970 __222: 11971 if !(have == uint32(0)) { 11972 goto __225 11973 } 11974 have = (*struct { 11975 f func(*libc.TLS, uintptr, uintptr) uint32 11976 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 11977 if !(have == uint32(0)) { 11978 goto __226 11979 } 11980 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 11981 ret = -5 11982 goto inf_leave 11983 __226: 11984 ; 11985 __225: 11986 ; 11987 goto __223 11988 __223: 11989 if 0 != 0 { 11990 goto __222 11991 } 11992 goto __224 11993 __224: 11994 ; 11995 have-- 11996 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 11997 bits = bits + uint32(8) 11998 goto __220 11999 __220: 12000 if 0 != 0 { 12001 goto __219 12002 } 12003 goto __221 12004 __221: 12005 ; 12006 goto __216 12007 __216: 12008 goto __215 12009 goto __217 12010 __217: 12011 ; 12012 if !(here.Fop != 0 && int32(here.Fop)&0xf0 == 0) { 12013 goto __227 12014 } 12015 last = here 12016 __228: 12017 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)) 12018 if !(uint32(int32(last.Fbits)+int32(here.Fbits)) <= bits) { 12019 goto __231 12020 } 12021 goto __230 12022 __231: 12023 ; 12024 __232: 12025 __235: 12026 if !(have == uint32(0)) { 12027 goto __238 12028 } 12029 have = (*struct { 12030 f func(*libc.TLS, uintptr, uintptr) uint32 12031 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 12032 if !(have == uint32(0)) { 12033 goto __239 12034 } 12035 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 12036 ret = -5 12037 goto inf_leave 12038 __239: 12039 ; 12040 __238: 12041 ; 12042 goto __236 12043 __236: 12044 if 0 != 0 { 12045 goto __235 12046 } 12047 goto __237 12048 __237: 12049 ; 12050 have-- 12051 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 12052 bits = bits + uint32(8) 12053 goto __233 12054 __233: 12055 if 0 != 0 { 12056 goto __232 12057 } 12058 goto __234 12059 __234: 12060 ; 12061 goto __229 12062 __229: 12063 goto __228 12064 goto __230 12065 __230: 12066 ; 12067 __240: 12068 hold >>= int32(last.Fbits) 12069 bits = bits - uint32(last.Fbits) 12070 goto __241 12071 __241: 12072 if 0 != 0 { 12073 goto __240 12074 } 12075 goto __242 12076 __242: 12077 ; 12078 __227: 12079 ; 12080 __243: 12081 hold >>= int32(here.Fbits) 12082 bits = bits - uint32(here.Fbits) 12083 goto __244 12084 __244: 12085 if 0 != 0 { 12086 goto __243 12087 } 12088 goto __245 12089 __245: 12090 ; 12091 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval) 12092 12093 // process literal 12094 if !(int32(here.Fop) == 0) { 12095 goto __246 12096 } 12097 12098 __247: 12099 if !(left == uint32(0)) { 12100 goto __250 12101 } 12102 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 12103 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 12104 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 12105 if !((*struct { 12106 f func(*libc.TLS, uintptr, uintptr, uint32) int32 12107 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 12108 goto __251 12109 } 12110 ret = -5 12111 goto inf_leave 12112 __251: 12113 ; 12114 __250: 12115 ; 12116 goto __248 12117 __248: 12118 if 0 != 0 { 12119 goto __247 12120 } 12121 goto __249 12122 __249: 12123 ; 12124 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength) 12125 left-- 12126 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 12127 goto __5 12128 __246: 12129 ; 12130 12131 // process end of block 12132 if !(int32(here.Fop)&32 != 0) { 12133 goto __252 12134 } 12135 12136 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 12137 goto __5 12138 __252: 12139 ; 12140 12141 // invalid code 12142 if !(int32(here.Fop)&64 != 0) { 12143 goto __253 12144 } 12145 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 12146 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12147 goto __5 12148 __253: 12149 ; 12150 12151 // length code -- get extra bits, if any 12152 (*Inflate_state)(unsafe.Pointer(state)).Fextra = uint32(here.Fop) & uint32(15) 12153 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) { 12154 goto __254 12155 } 12156 __255: 12157 __258: 12158 if !(bits < (*Inflate_state)(unsafe.Pointer(state)).Fextra) { 12159 goto __259 12160 } 12161 __260: 12162 __263: 12163 if !(have == uint32(0)) { 12164 goto __266 12165 } 12166 have = (*struct { 12167 f func(*libc.TLS, uintptr, uintptr) uint32 12168 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 12169 if !(have == uint32(0)) { 12170 goto __267 12171 } 12172 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 12173 ret = -5 12174 goto inf_leave 12175 __267: 12176 ; 12177 __266: 12178 ; 12179 goto __264 12180 __264: 12181 if 0 != 0 { 12182 goto __263 12183 } 12184 goto __265 12185 __265: 12186 ; 12187 have-- 12188 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 12189 bits = bits + uint32(8) 12190 goto __261 12191 __261: 12192 if 0 != 0 { 12193 goto __260 12194 } 12195 goto __262 12196 __262: 12197 ; 12198 goto __258 12199 __259: 12200 ; 12201 goto __256 12202 __256: 12203 if 0 != 0 { 12204 goto __255 12205 } 12206 goto __257 12207 __257: 12208 ; 12209 *(*uint32)(unsafe.Pointer(state + 92)) += uint32(hold) & (uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Fextra - uint32(1)) 12210 __268: 12211 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 12212 bits = bits - (*Inflate_state)(unsafe.Pointer(state)).Fextra 12213 goto __269 12214 __269: 12215 if 0 != 0 { 12216 goto __268 12217 } 12218 goto __270 12219 __270: 12220 ; 12221 __254: 12222 ; 12223 12224 // get distance code 12225 __271: 12226 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr(uint32(hold)&(uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Fdistbits-uint32(1)))*4)) 12227 if !(uint32(here.Fbits) <= bits) { 12228 goto __274 12229 } 12230 goto __273 12231 __274: 12232 ; 12233 __275: 12234 __278: 12235 if !(have == uint32(0)) { 12236 goto __281 12237 } 12238 have = (*struct { 12239 f func(*libc.TLS, uintptr, uintptr) uint32 12240 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 12241 if !(have == uint32(0)) { 12242 goto __282 12243 } 12244 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 12245 ret = -5 12246 goto inf_leave 12247 __282: 12248 ; 12249 __281: 12250 ; 12251 goto __279 12252 __279: 12253 if 0 != 0 { 12254 goto __278 12255 } 12256 goto __280 12257 __280: 12258 ; 12259 have-- 12260 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 12261 bits = bits + uint32(8) 12262 goto __276 12263 __276: 12264 if 0 != 0 { 12265 goto __275 12266 } 12267 goto __277 12268 __277: 12269 ; 12270 goto __272 12271 __272: 12272 goto __271 12273 goto __273 12274 __273: 12275 ; 12276 if !(int32(here.Fop)&0xf0 == 0) { 12277 goto __283 12278 } 12279 last = here 12280 __284: 12281 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)) 12282 if !(uint32(int32(last.Fbits)+int32(here.Fbits)) <= bits) { 12283 goto __287 12284 } 12285 goto __286 12286 __287: 12287 ; 12288 __288: 12289 __291: 12290 if !(have == uint32(0)) { 12291 goto __294 12292 } 12293 have = (*struct { 12294 f func(*libc.TLS, uintptr, uintptr) uint32 12295 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 12296 if !(have == uint32(0)) { 12297 goto __295 12298 } 12299 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 12300 ret = -5 12301 goto inf_leave 12302 __295: 12303 ; 12304 __294: 12305 ; 12306 goto __292 12307 __292: 12308 if 0 != 0 { 12309 goto __291 12310 } 12311 goto __293 12312 __293: 12313 ; 12314 have-- 12315 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 12316 bits = bits + uint32(8) 12317 goto __289 12318 __289: 12319 if 0 != 0 { 12320 goto __288 12321 } 12322 goto __290 12323 __290: 12324 ; 12325 goto __285 12326 __285: 12327 goto __284 12328 goto __286 12329 __286: 12330 ; 12331 __296: 12332 hold >>= int32(last.Fbits) 12333 bits = bits - uint32(last.Fbits) 12334 goto __297 12335 __297: 12336 if 0 != 0 { 12337 goto __296 12338 } 12339 goto __298 12340 __298: 12341 ; 12342 __283: 12343 ; 12344 __299: 12345 hold >>= int32(here.Fbits) 12346 bits = bits - uint32(here.Fbits) 12347 goto __300 12348 __300: 12349 if 0 != 0 { 12350 goto __299 12351 } 12352 goto __301 12353 __301: 12354 ; 12355 if !(int32(here.Fop)&64 != 0) { 12356 goto __302 12357 } 12358 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 12359 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12360 goto __5 12361 __302: 12362 ; 12363 (*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval) 12364 12365 // get distance extra bits, if any 12366 (*Inflate_state)(unsafe.Pointer(state)).Fextra = uint32(here.Fop) & uint32(15) 12367 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) { 12368 goto __303 12369 } 12370 __304: 12371 __307: 12372 if !(bits < (*Inflate_state)(unsafe.Pointer(state)).Fextra) { 12373 goto __308 12374 } 12375 __309: 12376 __312: 12377 if !(have == uint32(0)) { 12378 goto __315 12379 } 12380 have = (*struct { 12381 f func(*libc.TLS, uintptr, uintptr) uint32 12382 })(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */) 12383 if !(have == uint32(0)) { 12384 goto __316 12385 } 12386 *(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL) 12387 ret = -5 12388 goto inf_leave 12389 __316: 12390 ; 12391 __315: 12392 ; 12393 goto __313 12394 __313: 12395 if 0 != 0 { 12396 goto __312 12397 } 12398 goto __314 12399 __314: 12400 ; 12401 have-- 12402 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))<<bits 12403 bits = bits + uint32(8) 12404 goto __310 12405 __310: 12406 if 0 != 0 { 12407 goto __309 12408 } 12409 goto __311 12410 __311: 12411 ; 12412 goto __307 12413 __308: 12414 ; 12415 goto __305 12416 __305: 12417 if 0 != 0 { 12418 goto __304 12419 } 12420 goto __306 12421 __306: 12422 ; 12423 *(*uint32)(unsafe.Pointer(state + 96)) += uint32(hold) & (uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Fextra - uint32(1)) 12424 __317: 12425 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 12426 bits = bits - (*Inflate_state)(unsafe.Pointer(state)).Fextra 12427 goto __318 12428 __318: 12429 if 0 != 0 { 12430 goto __317 12431 } 12432 goto __319 12433 __319: 12434 ; 12435 __303: 12436 ; 12437 if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > (*Inflate_state)(unsafe.Pointer(state)).Fwsize-func() uint32 { 12438 if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 12439 return left 12440 } 12441 return uint32(0) 12442 }()) { 12443 goto __320 12444 } 12445 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 12446 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12447 goto __5 12448 __320: 12449 ; 12450 12451 // copy match from window to output 12452 __321: 12453 __324: 12454 if !(left == uint32(0)) { 12455 goto __327 12456 } 12457 put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 12458 left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 12459 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = left 12460 if !((*struct { 12461 f func(*libc.TLS, uintptr, uintptr, uint32) int32 12462 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) { 12463 goto __328 12464 } 12465 ret = -5 12466 goto inf_leave 12467 __328: 12468 ; 12469 __327: 12470 ; 12471 goto __325 12472 __325: 12473 if 0 != 0 { 12474 goto __324 12475 } 12476 goto __326 12477 __326: 12478 ; 12479 copy = (*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Foffset 12480 if !(copy < left) { 12481 goto __329 12482 } 12483 from = put + uintptr(copy) 12484 copy = left - copy 12485 goto __330 12486 __329: 12487 from = put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset) 12488 copy = left 12489 __330: 12490 ; 12491 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) { 12492 goto __331 12493 } 12494 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 12495 __331: 12496 ; 12497 *(*uint32)(unsafe.Pointer(state + 92)) -= copy 12498 left = left - copy 12499 __332: 12500 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12501 goto __333 12502 __333: 12503 if libc.PreDecUint32(©, 1) != 0 { 12504 goto __332 12505 } 12506 goto __334 12507 __334: 12508 ; 12509 goto __322 12510 __322: 12511 if (*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0) { 12512 goto __321 12513 } 12514 goto __323 12515 __323: 12516 ; 12517 goto __5 12518 12519 __10: 12520 // inflate stream terminated properly -- write leftover output 12521 ret = Z_STREAM_END 12522 if !(left < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) { 12523 goto __335 12524 } 12525 if !((*struct { 12526 f func(*libc.TLS, uintptr, uintptr, uint32) int32 12527 })(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (*Inflate_state)(unsafe.Pointer(state)).Fwsize-left) != 0) { 12528 goto __336 12529 } 12530 ret = -5 12531 __336: 12532 ; 12533 __335: 12534 ; 12535 goto inf_leave 12536 12537 __11: 12538 ret = -3 12539 goto inf_leave 12540 12541 __12: // can't happen, but makes compilers happy 12542 ret = -2 12543 goto inf_leave 12544 __5: 12545 ; 12546 goto __3 12547 __3: 12548 goto __2 12549 goto __4 12550 __4: 12551 ; 12552 12553 // Return unused input 12554 inf_leave: 12555 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */)) 12556 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 12557 return ret 12558 } 12559 12560 var order = // permutation of code lengths 12561 [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 */ 12562 12563 func XinflateBackEnd(tls *libc.TLS, strm Z_streamp) int32 { /* infback.c:631:13: */ 12564 if strm == uintptr(Z_NULL) || (*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL) || (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 12565 return -2 12566 } 12567 (*struct { 12568 f func(*libc.TLS, Voidpf, Voidpf) 12569 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 12570 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 12571 12572 return Z_OK 12573 } 12574 12575 // 12576 // Decode literal, length, and distance codes and write out the resulting 12577 // literal and match bytes until either not enough input or output is 12578 // available, an end-of-block is encountered, or a data error is encountered. 12579 // When large enough input and output buffers are supplied to inflate(), for 12580 // example, a 16K input buffer and a 64K output buffer, more than 95% of the 12581 // inflate execution time is spent in this routine. 12582 // 12583 // Entry assumptions: 12584 // 12585 // state->mode == LEN 12586 // strm->avail_in >= 6 12587 // strm->avail_out >= 258 12588 // start >= strm->avail_out 12589 // state->bits < 8 12590 // 12591 // On return, state->mode is one of: 12592 // 12593 // LEN -- ran out of enough output space or enough available input 12594 // TYPE -- reached end of block code, inflate() to interpret next block 12595 // BAD -- error in block data 12596 // 12597 // Notes: 12598 // 12599 // - The maximum input bits used by a length/distance pair is 15 bits for the 12600 // length code, 5 bits for the length extra, 15 bits for the distance code, 12601 // and 13 bits for the distance extra. This totals 48 bits, or six bytes. 12602 // Therefore if strm->avail_in >= 6, then there is enough input to avoid 12603 // checking for available input while decoding. 12604 // 12605 // - The maximum bytes that a single length/distance pair can output is 258 12606 // bytes, which is the maximum length that can be coded. inflate_fast() 12607 // requires strm->avail_out >= 258 for each loop to avoid checking for 12608 // output space. 12609 // 12610 func Xinflate_fast(tls *libc.TLS, strm Z_streamp, start uint32) { /* inffast.c:50:20: */ 12611 var state uintptr 12612 var in uintptr // local strm->next_in 12613 var last uintptr // have enough input while in < last 12614 var out uintptr // local strm->next_out 12615 var beg uintptr // inflate()'s initial strm->next_out 12616 var end uintptr // while out < end, enough space available 12617 var wsize uint32 // window size or zero if not using window 12618 var whave uint32 // valid bytes in the window 12619 var wnext uint32 // window write index 12620 var window uintptr // allocated sliding window, if wsize != 0 12621 var hold uint64 // local strm->hold 12622 var bits uint32 // local strm->bits 12623 var lcode uintptr // local strm->lencode 12624 var dcode uintptr // local strm->distcode 12625 var lmask uint32 // mask for first level of length codes 12626 var dmask uint32 // mask for first level of distance codes 12627 var here Code // retrieved table entry 12628 var op uint32 // code bits, operation, extra bits, or 12629 // window position, window bytes to copy 12630 var len uint32 // match length, unused bytes 12631 var dist uint32 // match distance 12632 var from uintptr // where to copy match from 12633 12634 // copy state to local variables 12635 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12636 in = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 12637 last = in + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in-UInt(5)) 12638 out = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 12639 beg = out - uintptr(start-(*Z_stream)(unsafe.Pointer(strm)).Favail_out) 12640 end = out + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_out-UInt(257)) 12641 wsize = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 12642 whave = (*Inflate_state)(unsafe.Pointer(state)).Fwhave 12643 wnext = (*Inflate_state)(unsafe.Pointer(state)).Fwnext 12644 window = (*Inflate_state)(unsafe.Pointer(state)).Fwindow 12645 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 12646 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 12647 lcode = (*Inflate_state)(unsafe.Pointer(state)).Flencode 12648 dcode = (*Inflate_state)(unsafe.Pointer(state)).Fdistcode 12649 lmask = uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Flenbits - uint32(1) 12650 dmask = uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Fdistbits - uint32(1) 12651 12652 // decode literals and length/distances until end-of-block or not enough 12653 // input data or output space 12654 __1: 12655 if !(bits < uint32(15)) { 12656 goto __4 12657 } 12658 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))<<bits 12659 bits = bits + uint32(8) 12660 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))<<bits 12661 bits = bits + uint32(8) 12662 __4: 12663 ; 12664 here = *(*Code)(unsafe.Pointer(lcode + uintptr(hold&uint64(lmask))*4)) 12665 dolen: 12666 op = uint32(here.Fbits) 12667 hold >>= op 12668 bits = bits - op 12669 op = uint32(here.Fop) 12670 if !(op == uint32(0)) { 12671 goto __5 12672 } // literal 12673 12674 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = uint8(here.Fval) 12675 goto __6 12676 __5: 12677 if !(op&uint32(16) != 0) { 12678 goto __7 12679 } // length base 12680 len = uint32(here.Fval) 12681 op = op & uint32(15) // number of extra bits 12682 if !(op != 0) { 12683 goto __9 12684 } 12685 if !(bits < op) { 12686 goto __10 12687 } 12688 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))<<bits 12689 bits = bits + uint32(8) 12690 __10: 12691 ; 12692 len = len + uint32(hold)&(uint32(1)<<op-uint32(1)) 12693 hold >>= op 12694 bits = bits - op 12695 __9: 12696 ; 12697 12698 if !(bits < uint32(15)) { 12699 goto __11 12700 } 12701 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))<<bits 12702 bits = bits + uint32(8) 12703 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))<<bits 12704 bits = bits + uint32(8) 12705 __11: 12706 ; 12707 here = *(*Code)(unsafe.Pointer(dcode + uintptr(hold&uint64(dmask))*4)) 12708 dodist: 12709 op = uint32(here.Fbits) 12710 hold >>= op 12711 bits = bits - op 12712 op = uint32(here.Fop) 12713 if !(op&uint32(16) != 0) { 12714 goto __12 12715 } // distance base 12716 dist = uint32(here.Fval) 12717 op = op & uint32(15) // number of extra bits 12718 if !(bits < op) { 12719 goto __14 12720 } 12721 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))<<bits 12722 bits = bits + uint32(8) 12723 if !(bits < op) { 12724 goto __15 12725 } 12726 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))<<bits 12727 bits = bits + uint32(8) 12728 __15: 12729 ; 12730 __14: 12731 ; 12732 dist = dist + uint32(hold)&(uint32(1)<<op-uint32(1)) 12733 hold >>= op 12734 bits = bits - op 12735 12736 op = uint32((int64(out) - int64(beg)) / 1) // max distance in output 12737 if !(dist > op) { 12738 goto __16 12739 } // see if copy from window 12740 op = dist - op // distance back in window 12741 if !(op > whave) { 12742 goto __18 12743 } 12744 if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) { 12745 goto __19 12746 } 12747 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 12748 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12749 goto __3 12750 __19: 12751 ; 12752 __18: 12753 ; 12754 from = window 12755 if !(wnext == uint32(0)) { 12756 goto __20 12757 } // very common case 12758 from += uintptr(wsize - op) 12759 if !(op < len) { 12760 goto __22 12761 } // some from window 12762 len = len - op 12763 __23: 12764 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12765 goto __24 12766 __24: 12767 if libc.PreDecUint32(&op, 1) != 0 { 12768 goto __23 12769 } 12770 goto __25 12771 __25: 12772 ; 12773 from = out - uintptr(dist) // rest from output 12774 __22: 12775 ; 12776 goto __21 12777 __20: 12778 if !(wnext < op) { 12779 goto __26 12780 } // wrap around window 12781 from += uintptr(wsize + wnext - op) 12782 op = op - wnext 12783 if !(op < len) { 12784 goto __28 12785 } // some from end of window 12786 len = len - op 12787 __29: 12788 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12789 goto __30 12790 __30: 12791 if libc.PreDecUint32(&op, 1) != 0 { 12792 goto __29 12793 } 12794 goto __31 12795 __31: 12796 ; 12797 from = window 12798 if !(wnext < len) { 12799 goto __32 12800 } // some from start of window 12801 op = wnext 12802 len = len - op 12803 __33: 12804 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12805 goto __34 12806 __34: 12807 if libc.PreDecUint32(&op, 1) != 0 { 12808 goto __33 12809 } 12810 goto __35 12811 __35: 12812 ; 12813 from = out - uintptr(dist) // rest from output 12814 __32: 12815 ; 12816 __28: 12817 ; 12818 goto __27 12819 __26: // contiguous in window 12820 from += uintptr(wnext - op) 12821 if !(op < len) { 12822 goto __36 12823 } // some from window 12824 len = len - op 12825 __37: 12826 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12827 goto __38 12828 __38: 12829 if libc.PreDecUint32(&op, 1) != 0 { 12830 goto __37 12831 } 12832 goto __39 12833 __39: 12834 ; 12835 from = out - uintptr(dist) // rest from output 12836 __36: 12837 ; 12838 __27: 12839 ; 12840 __21: 12841 ; 12842 __40: 12843 if !(len > uint32(2)) { 12844 goto __41 12845 } 12846 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12847 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12848 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12849 len = len - uint32(3) 12850 goto __40 12851 __41: 12852 ; 12853 if !(len != 0) { 12854 goto __42 12855 } 12856 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12857 if !(len > uint32(1)) { 12858 goto __43 12859 } 12860 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12861 __43: 12862 ; 12863 __42: 12864 ; 12865 goto __17 12866 __16: 12867 from = out - uintptr(dist) // copy direct from output 12868 __44: // minimum length is three 12869 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12870 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12871 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12872 len = len - uint32(3) 12873 goto __45 12874 __45: 12875 if len > uint32(2) { 12876 goto __44 12877 } 12878 goto __46 12879 __46: 12880 ; 12881 if !(len != 0) { 12882 goto __47 12883 } 12884 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12885 if !(len > uint32(1)) { 12886 goto __48 12887 } 12888 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 12889 __48: 12890 ; 12891 __47: 12892 ; 12893 __17: 12894 ; 12895 goto __13 12896 __12: 12897 if !(op&uint32(64) == uint32(0)) { 12898 goto __49 12899 } // 2nd level distance code 12900 here = *(*Code)(unsafe.Pointer(dcode + uintptr(uint64(here.Fval)+hold&uint64(uint32(1)<<op-uint32(1)))*4)) 12901 goto dodist 12902 goto __50 12903 __49: 12904 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 12905 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12906 goto __3 12907 __50: 12908 ; 12909 __13: 12910 ; 12911 goto __8 12912 __7: 12913 if !(op&uint32(64) == uint32(0)) { 12914 goto __51 12915 } // 2nd level length code 12916 here = *(*Code)(unsafe.Pointer(lcode + uintptr(uint64(here.Fval)+hold&uint64(uint32(1)<<op-uint32(1)))*4)) 12917 goto dolen 12918 goto __52 12919 __51: 12920 if !(op&uint32(32) != 0) { 12921 goto __53 12922 } // end-of-block 12923 12924 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 12925 goto __3 12926 goto __54 12927 __53: 12928 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 12929 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 12930 goto __3 12931 __54: 12932 ; 12933 __52: 12934 ; 12935 __8: 12936 ; 12937 __6: 12938 ; 12939 goto __2 12940 __2: 12941 if in < last && out < end { 12942 goto __1 12943 } 12944 goto __3 12945 __3: 12946 ; 12947 12948 // return unused bytes (on entry, bits < 8, so in won't go too far back) 12949 len = bits >> 3 12950 in -= uintptr(len) 12951 bits = bits - len<<3 12952 hold = hold & uint64(uint32(1)<<bits-uint32(1)) 12953 12954 // update state and return 12955 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = in 12956 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = out 12957 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = func() uint32 { 12958 if in < last { 12959 return uint32(int64(5) + (int64(last)-int64(in))/1) 12960 } 12961 return uint32(int64(5) - (int64(in)-int64(last))/1) 12962 }() 12963 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = func() uint32 { 12964 if out < end { 12965 return uint32(int64(257) + (int64(end)-int64(out))/1) 12966 } 12967 return uint32(int64(257) - (int64(out)-int64(end))/1) 12968 }() 12969 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 12970 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 12971 return 12972 } 12973 12974 // 12975 // inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): 12976 // - Using bit fields for code structure 12977 // - Different op definition to avoid & for extra bits (do & for table bits) 12978 // - Three separate decoding do-loops for direct, window, and wnext == 0 12979 // - Special case for distance > 1 copies to do overlapped load and store copy 12980 // - Explicit branch predictions (based on measured branch probabilities) 12981 // - Deferring match copy and interspersed it with decoding subsequent codes 12982 // - Swapping literal/length else 12983 // - Swapping window/direct else 12984 // - Larger unrolled copy loops (three is about right) 12985 // - Moving len -= 3 statement into middle of loop 12986 // 12987 12988 func inflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:105:11: */ 12989 var state uintptr 12990 if strm == uintptr(Z_NULL) || (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) || (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 12991 return 1 12992 } 12993 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 12994 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 { 12995 return 1 12996 } 12997 return 0 12998 } 12999 13000 func XinflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:119:13: */ 13001 var state uintptr 13002 13003 if inflateStateCheck(tls, strm) != 0 { 13004 return -2 13005 } 13006 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13007 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint64(strm+40, libc.AssignPtrUint64(state+40, uint64(0))) 13008 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) 13009 if (*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0 { // to support ill-conceived Java test suite 13010 (*Z_stream)(unsafe.Pointer(strm)).Fadler = ULong((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1) 13011 } 13012 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD 13013 (*Inflate_state)(unsafe.Pointer(state)).Flast = 0 13014 (*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 0 13015 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768 13016 (*Inflate_state)(unsafe.Pointer(state)).Fhead = Gz_headerp(Z_NULL) 13017 (*Inflate_state)(unsafe.Pointer(state)).Fhold = uint64(0) 13018 (*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0) 13019 (*Inflate_state)(unsafe.Pointer(state)).Flencode = libc.AssignPtrUintptr(state+112, libc.AssignPtrUintptr(state+144, state+1368 /* &.codes */)) 13020 (*Inflate_state)(unsafe.Pointer(state)).Fsane = 1 13021 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 13022 13023 return Z_OK 13024 } 13025 13026 func XinflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:144:13: */ 13027 var state uintptr 13028 13029 if inflateStateCheck(tls, strm) != 0 { 13030 return -2 13031 } 13032 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13033 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = uint32(0) 13034 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 13035 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 13036 return XinflateResetKeep(tls, strm) 13037 } 13038 13039 func XinflateReset2(tls *libc.TLS, strm Z_streamp, windowBits int32) int32 { /* inflate.c:157:13: */ 13040 var wrap int32 13041 var state uintptr 13042 13043 // get the state 13044 if inflateStateCheck(tls, strm) != 0 { 13045 return -2 13046 } 13047 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13048 13049 // extract wrap request from windowBits parameter 13050 if windowBits < 0 { 13051 wrap = 0 13052 windowBits = -windowBits 13053 } else { 13054 wrap = windowBits>>4 + 5 13055 if windowBits < 48 { 13056 windowBits = windowBits & 15 13057 } 13058 } 13059 13060 // set number of window bits, free window if different 13061 if windowBits != 0 && (windowBits < 8 || windowBits > 15) { 13062 return -2 13063 } 13064 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) && (*Inflate_state)(unsafe.Pointer(state)).Fwbits != uint32(windowBits) { 13065 (*struct { 13066 f func(*libc.TLS, Voidpf, Voidpf) 13067 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow) 13068 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL) 13069 } 13070 13071 // update state and reset the rest of it 13072 (*Inflate_state)(unsafe.Pointer(state)).Fwrap = wrap 13073 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(windowBits) 13074 return XinflateReset(tls, strm) 13075 } 13076 13077 func XinflateInit2_(tls *libc.TLS, strm Z_streamp, windowBits int32, version uintptr, stream_size int32) int32 { /* inflate.c:195:13: */ 13078 var ret int32 13079 var state uintptr 13080 13081 if version == uintptr(Z_NULL) || int32(*(*uint8)(unsafe.Pointer(version))) != int32(*(*uint8)(unsafe.Pointer(ts))) || stream_size != int32(unsafe.Sizeof(Z_stream{})) { 13082 return -6 13083 } 13084 if strm == uintptr(Z_NULL) { 13085 return -2 13086 } 13087 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error 13088 if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) { 13089 (*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct { 13090 f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf 13091 }{Xzcalloc})) 13092 (*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0) 13093 } 13094 if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) { 13095 (*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct { 13096 f func(*libc.TLS, Voidpf, Voidpf) 13097 }{Xzcfree})) 13098 } 13099 state = (*struct { 13100 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 13101 })(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{}))) 13102 if state == uintptr(Z_NULL) { 13103 return -4 13104 } 13105 13106 (*Z_stream)(unsafe.Pointer(strm)).Fstate = state 13107 (*Inflate_state)(unsafe.Pointer(state)).Fstrm = strm 13108 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL) 13109 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD // to pass state test in inflateReset2() 13110 ret = XinflateReset2(tls, strm, windowBits) 13111 if ret != Z_OK { 13112 (*struct { 13113 f func(*libc.TLS, Voidpf, Voidpf) 13114 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, state) 13115 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 13116 } 13117 return ret 13118 } 13119 13120 func XinflateInit_(tls *libc.TLS, strm Z_streamp, version uintptr, stream_size int32) int32 { /* inflate.c:239:13: */ 13121 return XinflateInit2_(tls, strm, MAX_WBITS, version, stream_size) 13122 } 13123 13124 func XinflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* inflate.c:247:13: */ 13125 var state uintptr 13126 13127 if inflateStateCheck(tls, strm) != 0 { 13128 return -2 13129 } 13130 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13131 if bits < 0 { 13132 (*Inflate_state)(unsafe.Pointer(state)).Fhold = uint64(0) 13133 (*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0) 13134 return Z_OK 13135 } 13136 if bits > 16 || (*Inflate_state)(unsafe.Pointer(state)).Fbits+UInt(bits) > uint32(32) { 13137 return -2 13138 } 13139 value = int32(int64(value) & (int64(1)<<bits - int64(1))) 13140 *(*uint64)(unsafe.Pointer(state + 80)) += uint64(uint32(value) << (*Inflate_state)(unsafe.Pointer(state)).Fbits) 13141 *(*uint32)(unsafe.Pointer(state + 88)) += UInt(bits) 13142 return Z_OK 13143 } 13144 13145 // 13146 // Return state with length and distance decoding tables and index sizes set to 13147 // fixed code decoding. Normally this returns fixed tables from inffixed.h. 13148 // If BUILDFIXED is defined, then instead this routine builds the tables the 13149 // first time it's called, and returns those tables the first time and 13150 // thereafter. This reduces the size of the code by about 2K bytes, in 13151 // exchange for a little execution time. However, BUILDFIXED should not be 13152 // used for threaded applications, since the rewriting of the tables and virgin 13153 // may not be thread-safe. 13154 // 13155 func fixedtables1(tls *libc.TLS, state uintptr) { /* inflate.c:278:12: */ 13156 (*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix1)) 13157 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 13158 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix1)) 13159 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5) 13160 } 13161 13162 var lenfix1 = [512]Code{ 13163 {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)}, 13164 {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)}, 13165 {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)}, 13166 {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)}, 13167 {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)}, 13168 {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)}, 13169 {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)}, 13170 {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)}, 13171 {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)}, 13172 {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)}, 13173 {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)}, 13174 {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)}, 13175 {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)}, 13176 {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)}, 13177 {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)}, 13178 {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)}, 13179 {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)}, 13180 {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)}, 13181 {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)}, 13182 {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)}, 13183 {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)}, 13184 {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)}, 13185 {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)}, 13186 {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)}, 13187 {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)}, 13188 {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)}, 13189 {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)}, 13190 {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)}, 13191 {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)}, 13192 {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)}, 13193 {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)}, 13194 {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)}, 13195 {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)}, 13196 {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)}, 13197 {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)}, 13198 {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)}, 13199 {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)}, 13200 {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)}, 13201 {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)}, 13202 {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)}, 13203 {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)}, 13204 {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)}, 13205 {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)}, 13206 {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)}, 13207 {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)}, 13208 {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)}, 13209 {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)}, 13210 {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)}, 13211 {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)}, 13212 {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)}, 13213 {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)}, 13214 {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)}, 13215 {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)}, 13216 {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)}, 13217 {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)}, 13218 {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)}, 13219 {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)}, 13220 {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)}, 13221 {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)}, 13222 {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)}, 13223 {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)}, 13224 {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)}, 13225 {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)}, 13226 {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)}, 13227 {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)}, 13228 {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)}, 13229 {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)}, 13230 {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)}, 13231 {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)}, 13232 {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)}, 13233 {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)}, 13234 {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)}, 13235 {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)}, 13236 {Fbits: uint8(9), Fval: uint16(255)}, 13237 } /* inffixed.h:10:23 */ 13238 var distfix1 = [32]Code{ 13239 {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)}, 13240 {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)}, 13241 {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)}, 13242 {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)}, 13243 {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)}, 13244 {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)}, 13245 } /* inffixed.h:87:23 */ 13246 13247 // 13248 // Update the window with the last wsize (normally 32K) bytes written before 13249 // returning. If window does not exist yet, create it. This is only called 13250 // when a window is already in use, or when output has been written during this 13251 // inflate call, but the end of the deflate stream has not been reached yet. 13252 // It is also called to create a window for dictionary data when a dictionary 13253 // is loaded. 13254 // 13255 // Providing output buffers larger than 32K to inflate() should provide a speed 13256 // advantage, since only the last 32K of output is copied to the sliding window 13257 // upon return from inflate(), and since all distances after the first 32K of 13258 // output will fall in the output data, making match copies simpler and faster. 13259 // The advantage may be dependent on the size of the processor's data caches. 13260 // 13261 func updatewindow(tls *libc.TLS, strm Z_streamp, end uintptr, copy uint32) int32 { /* inflate.c:396:11: */ 13262 var state uintptr 13263 var dist uint32 13264 13265 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13266 13267 // if it hasn't been done already, allocate space for the window 13268 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) { 13269 (*Inflate_state)(unsafe.Pointer(state)).Fwindow = (*struct { 13270 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 13271 })(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)))) 13272 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) { 13273 return 1 13274 } 13275 } 13276 13277 // if window not in use yet, initialize 13278 if (*Inflate_state)(unsafe.Pointer(state)).Fwsize == uint32(0) { 13279 (*Inflate_state)(unsafe.Pointer(state)).Fwsize = uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits 13280 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 13281 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0) 13282 } 13283 13284 // copy state->wsize or less output bytes into the circular window 13285 if copy >= (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 13286 libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, end-uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwsize), uint64((*Inflate_state)(unsafe.Pointer(state)).Fwsize)) 13287 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 13288 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 13289 } else { 13290 dist = (*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Fwnext 13291 if dist > copy { 13292 dist = copy 13293 } 13294 libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow+uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext), end-uintptr(copy), uint64(dist)) 13295 copy = copy - dist 13296 if copy != 0 { 13297 libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, end-uintptr(copy), uint64(copy)) 13298 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = copy 13299 (*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize 13300 } else { 13301 *(*uint32)(unsafe.Pointer(state + 68)) += dist 13302 if (*Inflate_state)(unsafe.Pointer(state)).Fwnext == (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 13303 (*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0) 13304 } 13305 if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize { 13306 *(*uint32)(unsafe.Pointer(state + 64)) += dist 13307 } 13308 } 13309 } 13310 return 0 13311 } 13312 13313 // Macros for inflate(): 13314 13315 // check function to use adler32() for zlib or crc32() for gzip 13316 13317 // check macros for header crc 13318 13319 // Load registers with state in inflate() for speed 13320 13321 // Restore state from registers in inflate() 13322 13323 // Clear the input bit accumulator 13324 13325 // Get a byte of input into the bit accumulator, or return from inflate() 13326 // if there is no input available. 13327 13328 // Assure that there are at least n bits in the bit accumulator. If there is 13329 // not enough available input to do that, then return from inflate(). 13330 13331 // Return the low n bits of the bit accumulator (n < 16) 13332 13333 // Remove n bits from the bit accumulator 13334 13335 // Remove zero to seven bits as needed to go to a byte boundary 13336 13337 // 13338 // inflate() uses a state machine to process as much input data and generate as 13339 // much output data as possible before returning. The state machine is 13340 // structured roughly as follows: 13341 // 13342 // for (;;) switch (state) { 13343 // ... 13344 // case STATEn: 13345 // if (not enough input data or output space to make progress) 13346 // return; 13347 // ... make progress ... 13348 // state = STATEm; 13349 // break; 13350 // ... 13351 // } 13352 // 13353 // so when inflate() is called again, the same case is attempted again, and 13354 // if the appropriate resources are provided, the machine proceeds to the 13355 // next state. The NEEDBITS() macro is usually the way the state evaluates 13356 // whether it can proceed or should return. NEEDBITS() does the return if 13357 // the requested bits are not available. The typical use of the BITS macros 13358 // is: 13359 // 13360 // NEEDBITS(n); 13361 // ... do something with BITS(n) ... 13362 // DROPBITS(n); 13363 // 13364 // where NEEDBITS(n) either returns from inflate() if there isn't enough 13365 // input left to load n bits into the accumulator, or it continues. BITS(n) 13366 // gives the low n bits in the accumulator. When done, DROPBITS(n) drops 13367 // the low n bits off the accumulator. INITBITS() clears the accumulator 13368 // and sets the number of available bits to zero. BYTEBITS() discards just 13369 // enough bits to put the accumulator on a byte boundary. After BYTEBITS() 13370 // and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. 13371 // 13372 // NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return 13373 // if there is no input available. The decoding of variable length codes uses 13374 // PULLBYTE() directly in order to pull just enough bytes to decode the next 13375 // code, and no more. 13376 // 13377 // Some states loop until they get enough input, making sure that enough 13378 // state information is maintained to continue the loop where it left off 13379 // if NEEDBITS() returns in the loop. For example, want, need, and keep 13380 // would all have to actually be part of the saved state in case NEEDBITS() 13381 // returns: 13382 // 13383 // case STATEw: 13384 // while (want < need) { 13385 // NEEDBITS(n); 13386 // keep[want++] = BITS(n); 13387 // DROPBITS(n); 13388 // } 13389 // state = STATEx; 13390 // case STATEx: 13391 // 13392 // As shown above, if the next state is also the next case, then the break 13393 // is omitted. 13394 // 13395 // A state may also return if there is not enough output space available to 13396 // complete that state. Those states are copying stored data, writing a 13397 // literal byte, and copying a matching string. 13398 // 13399 // When returning, a "goto inf_leave" is used to update the total counters, 13400 // update the check value, and determine whether any progress has been made 13401 // during that inflate() call in order to return the proper return code. 13402 // Progress is defined as a change in either strm->avail_in or strm->avail_out. 13403 // When there is a window, goto inf_leave will update the window with the last 13404 // output written. If a goto inf_leave occurs in the middle of decompression 13405 // and there is no window currently, goto inf_leave will create one and copy 13406 // output to the window for the next call of inflate(). 13407 // 13408 // In this implementation, the flush parameter of inflate() only affects the 13409 // return code (per zlib.h). inflate() always writes as much as possible to 13410 // strm->next_out, given the space available and the provided input--the effect 13411 // documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers 13412 // the allocation of and copying into a sliding window until necessary, which 13413 // provides the effect documented in zlib.h for Z_FINISH when the entire input 13414 // stream available. So the only thing the flush parameter actually does is: 13415 // when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it 13416 // will return Z_BUF_ERROR if it has not reached the end of the stream. 13417 // 13418 13419 func Xinflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* inflate.c:622:13: */ 13420 bp := tls.Alloc(4) 13421 defer tls.Free(4) 13422 13423 var state uintptr 13424 var next uintptr // next input 13425 var put uintptr // next output 13426 var have uint32 13427 var left uint32 // available input and output 13428 var hold uint64 // bit buffer 13429 var bits uint32 // bits in bit buffer 13430 var in uint32 13431 var out uint32 // save starting available input and output 13432 var copy uint32 // number of stored or match bytes to copy 13433 var from uintptr // where to copy match bytes from 13434 var here Code // current decoding table entry 13435 var last Code // parent table entry 13436 var len uint32 // length to copy for repeats, bits to drop 13437 var ret int32 // return code 13438 // var hbuf [4]uint8 at bp, 4 13439 13440 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)) { 13441 goto __1 13442 } 13443 return -2 13444 __1: 13445 ; 13446 13447 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 13448 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) { 13449 goto __2 13450 } 13451 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO 13452 __2: 13453 ; // skip check 13454 __3: 13455 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 13456 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 13457 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 13458 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 13459 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 13460 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 13461 goto __4 13462 __4: 13463 if 0 != 0 { 13464 goto __3 13465 } 13466 goto __5 13467 __5: 13468 ; 13469 in = have 13470 out = left 13471 ret = Z_OK 13472 __6: 13473 switch (*Inflate_state)(unsafe.Pointer(state)).Fmode { 13474 case HEAD: 13475 goto __10 13476 case FLAGS: 13477 goto __11 13478 case TIME: 13479 goto __12 13480 case OS: 13481 goto __13 13482 case EXLEN: 13483 goto __14 13484 case EXTRA: 13485 goto __15 13486 case NAME: 13487 goto __16 13488 case COMMENT: 13489 goto __17 13490 case HCRC: 13491 goto __18 13492 case DICTID: 13493 goto __19 13494 case DICT: 13495 goto __20 13496 case TYPE: 13497 goto __21 13498 case TYPEDO: 13499 goto __22 13500 case STORED: 13501 goto __23 13502 case COPY_: 13503 goto __24 13504 case COPY: 13505 goto __25 13506 case TABLE: 13507 goto __26 13508 case LENLENS: 13509 goto __27 13510 case CODELENS: 13511 goto __28 13512 case LEN_: 13513 goto __29 13514 case LEN: 13515 goto __30 13516 case LENEXT: 13517 goto __31 13518 case DIST: 13519 goto __32 13520 case DISTEXT: 13521 goto __33 13522 case MATCH: 13523 goto __34 13524 case LIT: 13525 goto __35 13526 case CHECK: 13527 goto __36 13528 case LENGTH: 13529 goto __37 13530 case DONE: 13531 goto __38 13532 case BAD: 13533 goto __39 13534 case MEM: 13535 goto __40 13536 case SYNC: 13537 goto __41 13538 default: 13539 goto __42 13540 } 13541 goto __9 13542 __10: 13543 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap == 0) { 13544 goto __43 13545 } 13546 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO 13547 goto __9 13548 __43: 13549 ; 13550 __44: 13551 __47: 13552 if !(bits < uint32(16)) { 13553 goto __48 13554 } 13555 __49: 13556 if !(have == uint32(0)) { 13557 goto __52 13558 } 13559 goto inf_leave 13560 __52: 13561 ; 13562 have-- 13563 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 13564 bits = bits + uint32(8) 13565 goto __50 13566 __50: 13567 if 0 != 0 { 13568 goto __49 13569 } 13570 goto __51 13571 __51: 13572 ; 13573 goto __47 13574 __48: 13575 ; 13576 goto __45 13577 __45: 13578 if 0 != 0 { 13579 goto __44 13580 } 13581 goto __46 13582 __46: 13583 ; 13584 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap&2 != 0 && hold == uint64(0x8b1f)) { 13585 goto __53 13586 } // gzip header 13587 if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) { 13588 goto __54 13589 } 13590 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(15) 13591 __54: 13592 ; 13593 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 13594 __55: 13595 *(*uint8)(unsafe.Pointer(bp)) = uint8(hold) 13596 *(*uint8)(unsafe.Pointer(bp + 1)) = uint8(hold >> 8) 13597 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp, uint32(2)) 13598 goto __56 13599 __56: 13600 if 0 != 0 { 13601 goto __55 13602 } 13603 goto __57 13604 __57: 13605 ; 13606 __58: 13607 hold = uint64(0) 13608 bits = uint32(0) 13609 goto __59 13610 __59: 13611 if 0 != 0 { 13612 goto __58 13613 } 13614 goto __60 13615 __60: 13616 ; 13617 (*Inflate_state)(unsafe.Pointer(state)).Fmode = FLAGS 13618 goto __9 13619 __53: 13620 ; 13621 (*Inflate_state)(unsafe.Pointer(state)).Fflags = 0 // expect zlib header 13622 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13623 goto __61 13624 } 13625 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = -1 13626 __61: 13627 ; 13628 if !(!((*Inflate_state)(unsafe.Pointer(state)).Fwrap&1 != 0) || (uint64(uint32(hold)&(uint32(1)<<8-uint32(1))<<8)+hold>>8)%uint64(31) != 0) { 13629 goto __62 13630 } 13631 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 669 /* "incorrect header..." */ 13632 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13633 goto __9 13634 __62: 13635 ; 13636 if !(uint32(hold)&(uint32(1)<<4-uint32(1)) != uint32(Z_DEFLATED)) { 13637 goto __63 13638 } 13639 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */ 13640 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13641 goto __9 13642 __63: 13643 ; 13644 __64: 13645 hold >>= 4 13646 bits = bits - uint32(4) 13647 goto __65 13648 __65: 13649 if 0 != 0 { 13650 goto __64 13651 } 13652 goto __66 13653 __66: 13654 ; 13655 len = uint32(hold)&(uint32(1)<<4-uint32(1)) + uint32(8) 13656 if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) { 13657 goto __67 13658 } 13659 (*Inflate_state)(unsafe.Pointer(state)).Fwbits = len 13660 __67: 13661 ; 13662 if !(len > uint32(15) || len > (*Inflate_state)(unsafe.Pointer(state)).Fwbits) { 13663 goto __68 13664 } 13665 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 719 /* "invalid window s..." */ 13666 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13667 goto __9 13668 __68: 13669 ; 13670 (*Inflate_state)(unsafe.Pointer(state)).Fdmax = uint32(1) << len 13671 13672 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32, Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0))) 13673 (*Inflate_state)(unsafe.Pointer(state)).Fmode = func() uint32 { 13674 if hold&uint64(0x200) != 0 { 13675 return DICTID 13676 } 13677 return TYPE 13678 }() 13679 __69: 13680 hold = uint64(0) 13681 bits = uint32(0) 13682 goto __70 13683 __70: 13684 if 0 != 0 { 13685 goto __69 13686 } 13687 goto __71 13688 __71: 13689 ; 13690 goto __9 13691 __11: 13692 __72: 13693 __75: 13694 if !(bits < uint32(16)) { 13695 goto __76 13696 } 13697 __77: 13698 if !(have == uint32(0)) { 13699 goto __80 13700 } 13701 goto inf_leave 13702 __80: 13703 ; 13704 have-- 13705 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 13706 bits = bits + uint32(8) 13707 goto __78 13708 __78: 13709 if 0 != 0 { 13710 goto __77 13711 } 13712 goto __79 13713 __79: 13714 ; 13715 goto __75 13716 __76: 13717 ; 13718 goto __73 13719 __73: 13720 if 0 != 0 { 13721 goto __72 13722 } 13723 goto __74 13724 __74: 13725 ; 13726 (*Inflate_state)(unsafe.Pointer(state)).Fflags = int32(hold) 13727 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0xff != Z_DEFLATED) { 13728 goto __81 13729 } 13730 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */ 13731 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13732 goto __9 13733 __81: 13734 ; 13735 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0xe000 != 0) { 13736 goto __82 13737 } 13738 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 739 /* "unknown header f..." */ 13739 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 13740 goto __9 13741 __82: 13742 ; 13743 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13744 goto __83 13745 } 13746 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftext = int32(hold >> 8 & uint64(1)) 13747 __83: 13748 ; 13749 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0) { 13750 goto __84 13751 } 13752 __85: 13753 *(*uint8)(unsafe.Pointer(bp)) = uint8(hold) 13754 *(*uint8)(unsafe.Pointer(bp + 1)) = uint8(hold >> 8) 13755 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp, uint32(2)) 13756 goto __86 13757 __86: 13758 if 0 != 0 { 13759 goto __85 13760 } 13761 goto __87 13762 __87: 13763 ; 13764 __84: 13765 ; 13766 __88: 13767 hold = uint64(0) 13768 bits = uint32(0) 13769 goto __89 13770 __89: 13771 if 0 != 0 { 13772 goto __88 13773 } 13774 goto __90 13775 __90: 13776 ; 13777 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TIME 13778 __12: 13779 __91: 13780 __94: 13781 if !(bits < uint32(32)) { 13782 goto __95 13783 } 13784 __96: 13785 if !(have == uint32(0)) { 13786 goto __99 13787 } 13788 goto inf_leave 13789 __99: 13790 ; 13791 have-- 13792 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 13793 bits = bits + uint32(8) 13794 goto __97 13795 __97: 13796 if 0 != 0 { 13797 goto __96 13798 } 13799 goto __98 13800 __98: 13801 ; 13802 goto __94 13803 __95: 13804 ; 13805 goto __92 13806 __92: 13807 if 0 != 0 { 13808 goto __91 13809 } 13810 goto __93 13811 __93: 13812 ; 13813 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13814 goto __100 13815 } 13816 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftime = hold 13817 __100: 13818 ; 13819 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0) { 13820 goto __101 13821 } 13822 __102: 13823 *(*uint8)(unsafe.Pointer(bp)) = uint8(hold) 13824 *(*uint8)(unsafe.Pointer(bp + 1)) = uint8(hold >> 8) 13825 *(*uint8)(unsafe.Pointer(bp + 2)) = uint8(hold >> 16) 13826 *(*uint8)(unsafe.Pointer(bp + 3)) = uint8(hold >> 24) 13827 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp, uint32(4)) 13828 goto __103 13829 __103: 13830 if 0 != 0 { 13831 goto __102 13832 } 13833 goto __104 13834 __104: 13835 ; 13836 __101: 13837 ; 13838 __105: 13839 hold = uint64(0) 13840 bits = uint32(0) 13841 goto __106 13842 __106: 13843 if 0 != 0 { 13844 goto __105 13845 } 13846 goto __107 13847 __107: 13848 ; 13849 (*Inflate_state)(unsafe.Pointer(state)).Fmode = OS 13850 __13: 13851 __108: 13852 __111: 13853 if !(bits < uint32(16)) { 13854 goto __112 13855 } 13856 __113: 13857 if !(have == uint32(0)) { 13858 goto __116 13859 } 13860 goto inf_leave 13861 __116: 13862 ; 13863 have-- 13864 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 13865 bits = bits + uint32(8) 13866 goto __114 13867 __114: 13868 if 0 != 0 { 13869 goto __113 13870 } 13871 goto __115 13872 __115: 13873 ; 13874 goto __111 13875 __112: 13876 ; 13877 goto __109 13878 __109: 13879 if 0 != 0 { 13880 goto __108 13881 } 13882 goto __110 13883 __110: 13884 ; 13885 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13886 goto __117 13887 } 13888 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fxflags = int32(hold & uint64(0xff)) 13889 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fos = int32(hold >> 8) 13890 __117: 13891 ; 13892 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0) { 13893 goto __118 13894 } 13895 __119: 13896 *(*uint8)(unsafe.Pointer(bp)) = uint8(hold) 13897 *(*uint8)(unsafe.Pointer(bp + 1)) = uint8(hold >> 8) 13898 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp, uint32(2)) 13899 goto __120 13900 __120: 13901 if 0 != 0 { 13902 goto __119 13903 } 13904 goto __121 13905 __121: 13906 ; 13907 __118: 13908 ; 13909 __122: 13910 hold = uint64(0) 13911 bits = uint32(0) 13912 goto __123 13913 __123: 13914 if 0 != 0 { 13915 goto __122 13916 } 13917 goto __124 13918 __124: 13919 ; 13920 (*Inflate_state)(unsafe.Pointer(state)).Fmode = EXLEN 13921 __14: 13922 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0400 != 0) { 13923 goto __125 13924 } 13925 __127: 13926 __130: 13927 if !(bits < uint32(16)) { 13928 goto __131 13929 } 13930 __132: 13931 if !(have == uint32(0)) { 13932 goto __135 13933 } 13934 goto inf_leave 13935 __135: 13936 ; 13937 have-- 13938 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 13939 bits = bits + uint32(8) 13940 goto __133 13941 __133: 13942 if 0 != 0 { 13943 goto __132 13944 } 13945 goto __134 13946 __134: 13947 ; 13948 goto __130 13949 __131: 13950 ; 13951 goto __128 13952 __128: 13953 if 0 != 0 { 13954 goto __127 13955 } 13956 goto __129 13957 __129: 13958 ; 13959 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(hold) 13960 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13961 goto __136 13962 } 13963 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len = uint32(hold) 13964 __136: 13965 ; 13966 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0) { 13967 goto __137 13968 } 13969 __138: 13970 *(*uint8)(unsafe.Pointer(bp)) = uint8(hold) 13971 *(*uint8)(unsafe.Pointer(bp + 1)) = uint8(hold >> 8) 13972 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp, uint32(2)) 13973 goto __139 13974 __139: 13975 if 0 != 0 { 13976 goto __138 13977 } 13978 goto __140 13979 __140: 13980 ; 13981 __137: 13982 ; 13983 __141: 13984 hold = uint64(0) 13985 bits = uint32(0) 13986 goto __142 13987 __142: 13988 if 0 != 0 { 13989 goto __141 13990 } 13991 goto __143 13992 __143: 13993 ; 13994 goto __126 13995 __125: 13996 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 13997 goto __144 13998 } 13999 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra = uintptr(Z_NULL) 14000 __144: 14001 ; 14002 __126: 14003 ; 14004 (*Inflate_state)(unsafe.Pointer(state)).Fmode = EXTRA 14005 __15: 14006 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0400 != 0) { 14007 goto __145 14008 } 14009 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 14010 if !(copy > have) { 14011 goto __146 14012 } 14013 copy = have 14014 __146: 14015 ; 14016 if !(copy != 0) { 14017 goto __147 14018 } 14019 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL) && (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra != uintptr(Z_NULL)) { 14020 goto __148 14021 } 14022 len = (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len - (*Inflate_state)(unsafe.Pointer(state)).Flength 14023 libc.Xmemcpy(tls, (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra+uintptr(len), next, 14024 func() uint64 { 14025 if len+copy > (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max { 14026 return uint64((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max - len) 14027 } 14028 return uint64(copy) 14029 }()) 14030 __148: 14031 ; 14032 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0) { 14033 goto __149 14034 } 14035 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 14036 __149: 14037 ; 14038 have = have - copy 14039 next += uintptr(copy) 14040 *(*uint32)(unsafe.Pointer(state + 92)) -= copy 14041 __147: 14042 ; 14043 if !((*Inflate_state)(unsafe.Pointer(state)).Flength != 0) { 14044 goto __150 14045 } 14046 goto inf_leave 14047 __150: 14048 ; 14049 __145: 14050 ; 14051 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0) 14052 (*Inflate_state)(unsafe.Pointer(state)).Fmode = NAME 14053 __16: 14054 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0800 != 0) { 14055 goto __151 14056 } 14057 if !(have == uint32(0)) { 14058 goto __153 14059 } 14060 goto inf_leave 14061 __153: 14062 ; 14063 copy = uint32(0) 14064 __154: 14065 len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(©, 1))))) 14066 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) { 14067 goto __157 14068 } 14069 *(*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) 14070 __157: 14071 ; 14072 goto __155 14073 __155: 14074 if len != 0 && copy < have { 14075 goto __154 14076 } 14077 goto __156 14078 __156: 14079 ; 14080 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0) { 14081 goto __158 14082 } 14083 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 14084 __158: 14085 ; 14086 have = have - copy 14087 next += uintptr(copy) 14088 if !(len != 0) { 14089 goto __159 14090 } 14091 goto inf_leave 14092 __159: 14093 ; 14094 goto __152 14095 __151: 14096 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 14097 goto __160 14098 } 14099 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname = uintptr(Z_NULL) 14100 __160: 14101 ; 14102 __152: 14103 ; 14104 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0) 14105 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COMMENT 14106 __17: 14107 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x1000 != 0) { 14108 goto __161 14109 } 14110 if !(have == uint32(0)) { 14111 goto __163 14112 } 14113 goto inf_leave 14114 __163: 14115 ; 14116 copy = uint32(0) 14117 __164: 14118 len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(©, 1))))) 14119 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) { 14120 goto __167 14121 } 14122 *(*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) 14123 __167: 14124 ; 14125 goto __165 14126 __165: 14127 if len != 0 && copy < have { 14128 goto __164 14129 } 14130 goto __166 14131 __166: 14132 ; 14133 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0) { 14134 goto __168 14135 } 14136 (*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy) 14137 __168: 14138 ; 14139 have = have - copy 14140 next += uintptr(copy) 14141 if !(len != 0) { 14142 goto __169 14143 } 14144 goto inf_leave 14145 __169: 14146 ; 14147 goto __162 14148 __161: 14149 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 14150 goto __170 14151 } 14152 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment = uintptr(Z_NULL) 14153 __170: 14154 ; 14155 __162: 14156 ; 14157 (*Inflate_state)(unsafe.Pointer(state)).Fmode = HCRC 14158 __18: 14159 if !((*Inflate_state)(unsafe.Pointer(state)).Fflags&0x0200 != 0) { 14160 goto __171 14161 } 14162 __172: 14163 __175: 14164 if !(bits < uint32(16)) { 14165 goto __176 14166 } 14167 __177: 14168 if !(have == uint32(0)) { 14169 goto __180 14170 } 14171 goto inf_leave 14172 __180: 14173 ; 14174 have-- 14175 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14176 bits = bits + uint32(8) 14177 goto __178 14178 __178: 14179 if 0 != 0 { 14180 goto __177 14181 } 14182 goto __179 14183 __179: 14184 ; 14185 goto __175 14186 __176: 14187 ; 14188 goto __173 14189 __173: 14190 if 0 != 0 { 14191 goto __172 14192 } 14193 goto __174 14194 __174: 14195 ; 14196 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0 && hold != (*Inflate_state)(unsafe.Pointer(state)).Fcheck&uint64(0xffff)) { 14197 goto __181 14198 } 14199 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 764 /* "header crc misma..." */ 14200 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14201 goto __9 14202 __181: 14203 ; 14204 __182: 14205 hold = uint64(0) 14206 bits = uint32(0) 14207 goto __183 14208 __183: 14209 if 0 != 0 { 14210 goto __182 14211 } 14212 goto __184 14213 __184: 14214 ; 14215 __171: 14216 ; 14217 if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) { 14218 goto __185 14219 } 14220 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fhcrc = (*Inflate_state)(unsafe.Pointer(state)).Fflags >> 9 & 1 14221 (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = 1 14222 __185: 14223 ; 14224 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32, Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0))) 14225 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 14226 goto __9 14227 __19: 14228 __186: 14229 __189: 14230 if !(bits < uint32(32)) { 14231 goto __190 14232 } 14233 __191: 14234 if !(have == uint32(0)) { 14235 goto __194 14236 } 14237 goto inf_leave 14238 __194: 14239 ; 14240 have-- 14241 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14242 bits = bits + uint32(8) 14243 goto __192 14244 __192: 14245 if 0 != 0 { 14246 goto __191 14247 } 14248 goto __193 14249 __193: 14250 ; 14251 goto __189 14252 __190: 14253 ; 14254 goto __187 14255 __187: 14256 if 0 != 0 { 14257 goto __186 14258 } 14259 goto __188 14260 __188: 14261 ; 14262 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32, hold>>24&uint64(0xff)+hold>>8&uint64(0xff00)+hold&uint64(0xff00)<<8+hold&uint64(0xff)<<24) 14263 __195: 14264 hold = uint64(0) 14265 bits = uint32(0) 14266 goto __196 14267 __196: 14268 if 0 != 0 { 14269 goto __195 14270 } 14271 goto __197 14272 __197: 14273 ; 14274 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DICT 14275 __20: 14276 if !((*Inflate_state)(unsafe.Pointer(state)).Fhavedict == 0) { 14277 goto __198 14278 } 14279 __199: 14280 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 14281 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 14282 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 14283 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 14284 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 14285 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 14286 goto __200 14287 __200: 14288 if 0 != 0 { 14289 goto __199 14290 } 14291 goto __201 14292 __201: 14293 ; 14294 return Z_NEED_DICT 14295 __198: 14296 ; 14297 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32, Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0))) 14298 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 14299 __21: 14300 if !(flush == Z_BLOCK || flush == Z_TREES) { 14301 goto __202 14302 } 14303 goto inf_leave 14304 __202: 14305 ; 14306 __22: 14307 if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) { 14308 goto __203 14309 } 14310 __204: 14311 hold >>= bits & uint32(7) 14312 bits = bits - bits&uint32(7) 14313 goto __205 14314 __205: 14315 if 0 != 0 { 14316 goto __204 14317 } 14318 goto __206 14319 __206: 14320 ; 14321 (*Inflate_state)(unsafe.Pointer(state)).Fmode = CHECK 14322 goto __9 14323 __203: 14324 ; 14325 __207: 14326 __210: 14327 if !(bits < uint32(3)) { 14328 goto __211 14329 } 14330 __212: 14331 if !(have == uint32(0)) { 14332 goto __215 14333 } 14334 goto inf_leave 14335 __215: 14336 ; 14337 have-- 14338 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14339 bits = bits + uint32(8) 14340 goto __213 14341 __213: 14342 if 0 != 0 { 14343 goto __212 14344 } 14345 goto __214 14346 __214: 14347 ; 14348 goto __210 14349 __211: 14350 ; 14351 goto __208 14352 __208: 14353 if 0 != 0 { 14354 goto __207 14355 } 14356 goto __209 14357 __209: 14358 ; 14359 (*Inflate_state)(unsafe.Pointer(state)).Flast = int32(uint32(hold) & (uint32(1)<<1 - uint32(1))) 14360 __216: 14361 hold >>= 1 14362 bits = bits - uint32(1) 14363 goto __217 14364 __217: 14365 if 0 != 0 { 14366 goto __216 14367 } 14368 goto __218 14369 __218: 14370 ; 14371 switch uint32(hold) & (uint32(1)<<2 - uint32(1)) { 14372 case uint32(0): 14373 goto __220 14374 case uint32(1): 14375 goto __221 14376 case uint32(2): 14377 goto __222 14378 case uint32(3): 14379 goto __223 14380 } 14381 goto __219 14382 __220: // stored block 14383 ; 14384 (*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED 14385 goto __219 14386 __221: // fixed block 14387 fixedtables1(tls, state) 14388 14389 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ // decode codes 14390 if !(flush == Z_TREES) { 14391 goto __224 14392 } 14393 __225: 14394 hold >>= 2 14395 bits = bits - uint32(2) 14396 goto __226 14397 __226: 14398 if 0 != 0 { 14399 goto __225 14400 } 14401 goto __227 14402 __227: 14403 ; 14404 goto inf_leave 14405 __224: 14406 ; 14407 goto __219 14408 __222: // dynamic block 14409 ; 14410 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE 14411 goto __219 14412 __223: 14413 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */ 14414 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14415 __219: 14416 ; 14417 __228: 14418 hold >>= 2 14419 bits = bits - uint32(2) 14420 goto __229 14421 __229: 14422 if 0 != 0 { 14423 goto __228 14424 } 14425 goto __230 14426 __230: 14427 ; 14428 goto __9 14429 __23: 14430 __231: 14431 hold >>= bits & uint32(7) 14432 bits = bits - bits&uint32(7) 14433 goto __232 14434 __232: 14435 if 0 != 0 { 14436 goto __231 14437 } 14438 goto __233 14439 __233: 14440 ; // go to byte boundary 14441 __234: 14442 __237: 14443 if !(bits < uint32(32)) { 14444 goto __238 14445 } 14446 __239: 14447 if !(have == uint32(0)) { 14448 goto __242 14449 } 14450 goto inf_leave 14451 __242: 14452 ; 14453 have-- 14454 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14455 bits = bits + uint32(8) 14456 goto __240 14457 __240: 14458 if 0 != 0 { 14459 goto __239 14460 } 14461 goto __241 14462 __241: 14463 ; 14464 goto __237 14465 __238: 14466 ; 14467 goto __235 14468 __235: 14469 if 0 != 0 { 14470 goto __234 14471 } 14472 goto __236 14473 __236: 14474 ; 14475 if !(hold&uint64(0xffff) != hold>>16^uint64(0xffff)) { 14476 goto __243 14477 } 14478 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */ 14479 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14480 goto __9 14481 __243: 14482 ; 14483 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(hold) & uint32(0xffff) 14484 14485 __244: 14486 hold = uint64(0) 14487 bits = uint32(0) 14488 goto __245 14489 __245: 14490 if 0 != 0 { 14491 goto __244 14492 } 14493 goto __246 14494 __246: 14495 ; 14496 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY_ 14497 if !(flush == Z_TREES) { 14498 goto __247 14499 } 14500 goto inf_leave 14501 __247: 14502 ; 14503 __24: 14504 (*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY 14505 __25: 14506 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 14507 if !(copy != 0) { 14508 goto __248 14509 } 14510 if !(copy > have) { 14511 goto __249 14512 } 14513 copy = have 14514 __249: 14515 ; 14516 if !(copy > left) { 14517 goto __250 14518 } 14519 copy = left 14520 __250: 14521 ; 14522 if !(copy == uint32(0)) { 14523 goto __251 14524 } 14525 goto inf_leave 14526 __251: 14527 ; 14528 libc.Xmemcpy(tls, put, next, uint64(copy)) 14529 have = have - copy 14530 next += uintptr(copy) 14531 left = left - copy 14532 put += uintptr(copy) 14533 *(*uint32)(unsafe.Pointer(state + 92)) -= copy 14534 goto __9 14535 __248: 14536 ; 14537 14538 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 14539 goto __9 14540 __26: 14541 __252: 14542 __255: 14543 if !(bits < uint32(14)) { 14544 goto __256 14545 } 14546 __257: 14547 if !(have == uint32(0)) { 14548 goto __260 14549 } 14550 goto inf_leave 14551 __260: 14552 ; 14553 have-- 14554 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14555 bits = bits + uint32(8) 14556 goto __258 14557 __258: 14558 if 0 != 0 { 14559 goto __257 14560 } 14561 goto __259 14562 __259: 14563 ; 14564 goto __255 14565 __256: 14566 ; 14567 goto __253 14568 __253: 14569 if 0 != 0 { 14570 goto __252 14571 } 14572 goto __254 14573 __254: 14574 ; 14575 (*Inflate_state)(unsafe.Pointer(state)).Fnlen = uint32(hold)&(uint32(1)<<5-uint32(1)) + uint32(257) 14576 __261: 14577 hold >>= 5 14578 bits = bits - uint32(5) 14579 goto __262 14580 __262: 14581 if 0 != 0 { 14582 goto __261 14583 } 14584 goto __263 14585 __263: 14586 ; 14587 (*Inflate_state)(unsafe.Pointer(state)).Fndist = uint32(hold)&(uint32(1)<<5-uint32(1)) + uint32(1) 14588 __264: 14589 hold >>= 5 14590 bits = bits - uint32(5) 14591 goto __265 14592 __265: 14593 if 0 != 0 { 14594 goto __264 14595 } 14596 goto __266 14597 __266: 14598 ; 14599 (*Inflate_state)(unsafe.Pointer(state)).Fncode = uint32(hold)&(uint32(1)<<4-uint32(1)) + uint32(4) 14600 __267: 14601 hold >>= 4 14602 bits = bits - uint32(4) 14603 goto __268 14604 __268: 14605 if 0 != 0 { 14606 goto __267 14607 } 14608 goto __269 14609 __269: 14610 ; 14611 if !((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286) || (*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30)) { 14612 goto __270 14613 } 14614 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */ 14615 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14616 goto __9 14617 __270: 14618 ; 14619 14620 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 14621 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENLENS 14622 __27: 14623 __271: 14624 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) { 14625 goto __272 14626 } 14627 __273: 14628 __276: 14629 if !(bits < uint32(3)) { 14630 goto __277 14631 } 14632 __278: 14633 if !(have == uint32(0)) { 14634 goto __281 14635 } 14636 goto inf_leave 14637 __281: 14638 ; 14639 have-- 14640 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14641 bits = bits + uint32(8) 14642 goto __279 14643 __279: 14644 if 0 != 0 { 14645 goto __278 14646 } 14647 goto __280 14648 __280: 14649 ; 14650 goto __276 14651 __277: 14652 ; 14653 goto __274 14654 __274: 14655 if 0 != 0 { 14656 goto __273 14657 } 14658 goto __275 14659 __275: 14660 ; 14661 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(uint32(hold) & (uint32(1)<<3 - uint32(1))) 14662 __282: 14663 hold >>= 3 14664 bits = bits - uint32(3) 14665 goto __283 14666 __283: 14667 if 0 != 0 { 14668 goto __282 14669 } 14670 goto __284 14671 __284: 14672 ; 14673 goto __271 14674 __272: 14675 ; 14676 __285: 14677 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) { 14678 goto __286 14679 } 14680 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0) 14681 goto __285 14682 __286: 14683 ; 14684 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 14685 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 14686 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7) 14687 ret = Xinflate_table(tls, CODES, state+152, uint32(19), state+144, 14688 state+120, state+792) 14689 if !(ret != 0) { 14690 goto __287 14691 } 14692 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */ 14693 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14694 goto __9 14695 __287: 14696 ; 14697 14698 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 14699 (*Inflate_state)(unsafe.Pointer(state)).Fmode = CODELENS 14700 __28: 14701 __288: 14702 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fnlen+(*Inflate_state)(unsafe.Pointer(state)).Fndist) { 14703 goto __289 14704 } 14705 __290: 14706 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr(uint32(hold)&(uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Flenbits-uint32(1)))*4)) 14707 if !(uint32(here.Fbits) <= bits) { 14708 goto __293 14709 } 14710 goto __292 14711 __293: 14712 ; 14713 __294: 14714 if !(have == uint32(0)) { 14715 goto __297 14716 } 14717 goto inf_leave 14718 __297: 14719 ; 14720 have-- 14721 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14722 bits = bits + uint32(8) 14723 goto __295 14724 __295: 14725 if 0 != 0 { 14726 goto __294 14727 } 14728 goto __296 14729 __296: 14730 ; 14731 goto __291 14732 __291: 14733 goto __290 14734 goto __292 14735 __292: 14736 ; 14737 if !(int32(here.Fval) < 16) { 14738 goto __298 14739 } 14740 __300: 14741 hold >>= int32(here.Fbits) 14742 bits = bits - uint32(here.Fbits) 14743 goto __301 14744 __301: 14745 if 0 != 0 { 14746 goto __300 14747 } 14748 goto __302 14749 __302: 14750 ; 14751 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval 14752 goto __299 14753 __298: 14754 if !(int32(here.Fval) == 16) { 14755 goto __303 14756 } 14757 __305: 14758 __308: 14759 if !(bits < uint32(int32(here.Fbits)+2)) { 14760 goto __309 14761 } 14762 __310: 14763 if !(have == uint32(0)) { 14764 goto __313 14765 } 14766 goto inf_leave 14767 __313: 14768 ; 14769 have-- 14770 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14771 bits = bits + uint32(8) 14772 goto __311 14773 __311: 14774 if 0 != 0 { 14775 goto __310 14776 } 14777 goto __312 14778 __312: 14779 ; 14780 goto __308 14781 __309: 14782 ; 14783 goto __306 14784 __306: 14785 if 0 != 0 { 14786 goto __305 14787 } 14788 goto __307 14789 __307: 14790 ; 14791 __314: 14792 hold >>= int32(here.Fbits) 14793 bits = bits - uint32(here.Fbits) 14794 goto __315 14795 __315: 14796 if 0 != 0 { 14797 goto __314 14798 } 14799 goto __316 14800 __316: 14801 ; 14802 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) { 14803 goto __317 14804 } 14805 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 14806 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14807 goto __289 14808 __317: 14809 ; 14810 len = uint32(*(*uint16)(unsafe.Pointer(state + 152 + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1))*2))) 14811 copy = uint32(3) + uint32(hold)&(uint32(1)<<2-uint32(1)) 14812 __318: 14813 hold >>= 2 14814 bits = bits - uint32(2) 14815 goto __319 14816 __319: 14817 if 0 != 0 { 14818 goto __318 14819 } 14820 goto __320 14821 __320: 14822 ; 14823 goto __304 14824 __303: 14825 if !(int32(here.Fval) == 17) { 14826 goto __321 14827 } 14828 __323: 14829 __326: 14830 if !(bits < uint32(int32(here.Fbits)+3)) { 14831 goto __327 14832 } 14833 __328: 14834 if !(have == uint32(0)) { 14835 goto __331 14836 } 14837 goto inf_leave 14838 __331: 14839 ; 14840 have-- 14841 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14842 bits = bits + uint32(8) 14843 goto __329 14844 __329: 14845 if 0 != 0 { 14846 goto __328 14847 } 14848 goto __330 14849 __330: 14850 ; 14851 goto __326 14852 __327: 14853 ; 14854 goto __324 14855 __324: 14856 if 0 != 0 { 14857 goto __323 14858 } 14859 goto __325 14860 __325: 14861 ; 14862 __332: 14863 hold >>= int32(here.Fbits) 14864 bits = bits - uint32(here.Fbits) 14865 goto __333 14866 __333: 14867 if 0 != 0 { 14868 goto __332 14869 } 14870 goto __334 14871 __334: 14872 ; 14873 len = uint32(0) 14874 copy = uint32(3) + uint32(hold)&(uint32(1)<<3-uint32(1)) 14875 __335: 14876 hold >>= 3 14877 bits = bits - uint32(3) 14878 goto __336 14879 __336: 14880 if 0 != 0 { 14881 goto __335 14882 } 14883 goto __337 14884 __337: 14885 ; 14886 goto __322 14887 __321: 14888 __338: 14889 __341: 14890 if !(bits < uint32(int32(here.Fbits)+7)) { 14891 goto __342 14892 } 14893 __343: 14894 if !(have == uint32(0)) { 14895 goto __346 14896 } 14897 goto inf_leave 14898 __346: 14899 ; 14900 have-- 14901 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 14902 bits = bits + uint32(8) 14903 goto __344 14904 __344: 14905 if 0 != 0 { 14906 goto __343 14907 } 14908 goto __345 14909 __345: 14910 ; 14911 goto __341 14912 __342: 14913 ; 14914 goto __339 14915 __339: 14916 if 0 != 0 { 14917 goto __338 14918 } 14919 goto __340 14920 __340: 14921 ; 14922 __347: 14923 hold >>= int32(here.Fbits) 14924 bits = bits - uint32(here.Fbits) 14925 goto __348 14926 __348: 14927 if 0 != 0 { 14928 goto __347 14929 } 14930 goto __349 14931 __349: 14932 ; 14933 len = uint32(0) 14934 copy = uint32(11) + uint32(hold)&(uint32(1)<<7-uint32(1)) 14935 __350: 14936 hold >>= 7 14937 bits = bits - uint32(7) 14938 goto __351 14939 __351: 14940 if 0 != 0 { 14941 goto __350 14942 } 14943 goto __352 14944 __352: 14945 ; 14946 __322: 14947 ; 14948 __304: 14949 ; 14950 if !((*Inflate_state)(unsafe.Pointer(state)).Fhave+copy > (*Inflate_state)(unsafe.Pointer(state)).Fnlen+(*Inflate_state)(unsafe.Pointer(state)).Fndist) { 14951 goto __353 14952 } 14953 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */ 14954 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14955 goto __289 14956 __353: 14957 ; 14958 __354: 14959 if !(libc.PostDecUint32(©, 1) != 0) { 14960 goto __355 14961 } 14962 *(*uint16)(unsafe.Pointer(state + 152 + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len) 14963 goto __354 14964 __355: 14965 ; 14966 __299: 14967 ; 14968 goto __288 14969 __289: 14970 ; 14971 14972 // handle error breaks in while 14973 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) { 14974 goto __356 14975 } 14976 goto __9 14977 __356: 14978 ; 14979 14980 // check for end-of-block code (better have one) 14981 if !(int32(*(*uint16)(unsafe.Pointer(state + 152 + 256*2))) == 0) { 14982 goto __357 14983 } 14984 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */ 14985 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 14986 goto __9 14987 __357: 14988 ; 14989 14990 // build code tables -- note: do not change the lenbits or distbits 14991 // values here (9 and 6) without reading the comments in inftrees.h 14992 // concerning the ENOUGH constants, which depend on those values 14993 (*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */ 14994 (*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 14995 (*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9) 14996 ret = Xinflate_table(tls, LENS, state+152, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, state+144, 14997 state+120, state+792) 14998 if !(ret != 0) { 14999 goto __358 15000 } 15001 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */ 15002 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15003 goto __9 15004 __358: 15005 ; 15006 (*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext 15007 (*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6) 15008 ret = Xinflate_table(tls, DISTS, state+152+uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2, (*Inflate_state)(unsafe.Pointer(state)).Fndist, 15009 state+144, state+124, state+792) 15010 if !(ret != 0) { 15011 goto __359 15012 } 15013 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */ 15014 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15015 goto __9 15016 __359: 15017 ; 15018 15019 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ 15020 if !(flush == Z_TREES) { 15021 goto __360 15022 } 15023 goto inf_leave 15024 __360: 15025 ; 15026 __29: 15027 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 15028 __30: 15029 if !(have >= uint32(6) && left >= uint32(258)) { 15030 goto __361 15031 } 15032 __362: 15033 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 15034 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 15035 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 15036 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 15037 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 15038 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 15039 goto __363 15040 __363: 15041 if 0 != 0 { 15042 goto __362 15043 } 15044 goto __364 15045 __364: 15046 ; 15047 Xinflate_fast(tls, strm, out) 15048 __365: 15049 put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out 15050 left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out 15051 next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in 15052 have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in 15053 hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold 15054 bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits 15055 goto __366 15056 __366: 15057 if 0 != 0 { 15058 goto __365 15059 } 15060 goto __367 15061 __367: 15062 ; 15063 if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) { 15064 goto __368 15065 } 15066 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 15067 __368: 15068 ; 15069 goto __9 15070 __361: 15071 ; 15072 (*Inflate_state)(unsafe.Pointer(state)).Fback = 0 15073 __369: 15074 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr(uint32(hold)&(uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Flenbits-uint32(1)))*4)) 15075 if !(uint32(here.Fbits) <= bits) { 15076 goto __372 15077 } 15078 goto __371 15079 __372: 15080 ; 15081 __373: 15082 if !(have == uint32(0)) { 15083 goto __376 15084 } 15085 goto inf_leave 15086 __376: 15087 ; 15088 have-- 15089 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15090 bits = bits + uint32(8) 15091 goto __374 15092 __374: 15093 if 0 != 0 { 15094 goto __373 15095 } 15096 goto __375 15097 __375: 15098 ; 15099 goto __370 15100 __370: 15101 goto __369 15102 goto __371 15103 __371: 15104 ; 15105 if !(here.Fop != 0 && int32(here.Fop)&0xf0 == 0) { 15106 goto __377 15107 } 15108 last = here 15109 __378: 15110 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)) 15111 if !(uint32(int32(last.Fbits)+int32(here.Fbits)) <= bits) { 15112 goto __381 15113 } 15114 goto __380 15115 __381: 15116 ; 15117 __382: 15118 if !(have == uint32(0)) { 15119 goto __385 15120 } 15121 goto inf_leave 15122 __385: 15123 ; 15124 have-- 15125 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15126 bits = bits + uint32(8) 15127 goto __383 15128 __383: 15129 if 0 != 0 { 15130 goto __382 15131 } 15132 goto __384 15133 __384: 15134 ; 15135 goto __379 15136 __379: 15137 goto __378 15138 goto __380 15139 __380: 15140 ; 15141 __386: 15142 hold >>= int32(last.Fbits) 15143 bits = bits - uint32(last.Fbits) 15144 goto __387 15145 __387: 15146 if 0 != 0 { 15147 goto __386 15148 } 15149 goto __388 15150 __388: 15151 ; 15152 *(*int32)(unsafe.Pointer(state + 7148)) += int32(last.Fbits) 15153 __377: 15154 ; 15155 __389: 15156 hold >>= int32(here.Fbits) 15157 bits = bits - uint32(here.Fbits) 15158 goto __390 15159 __390: 15160 if 0 != 0 { 15161 goto __389 15162 } 15163 goto __391 15164 __391: 15165 ; 15166 *(*int32)(unsafe.Pointer(state + 7148)) += int32(here.Fbits) 15167 (*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval) 15168 if !(int32(here.Fop) == 0) { 15169 goto __392 15170 } 15171 15172 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LIT 15173 goto __9 15174 __392: 15175 ; 15176 if !(int32(here.Fop)&32 != 0) { 15177 goto __393 15178 } 15179 15180 (*Inflate_state)(unsafe.Pointer(state)).Fback = -1 15181 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 15182 goto __9 15183 __393: 15184 ; 15185 if !(int32(here.Fop)&64 != 0) { 15186 goto __394 15187 } 15188 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */ 15189 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15190 goto __9 15191 __394: 15192 ; 15193 (*Inflate_state)(unsafe.Pointer(state)).Fextra = uint32(here.Fop) & uint32(15) 15194 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENEXT 15195 __31: 15196 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) { 15197 goto __395 15198 } 15199 __396: 15200 __399: 15201 if !(bits < (*Inflate_state)(unsafe.Pointer(state)).Fextra) { 15202 goto __400 15203 } 15204 __401: 15205 if !(have == uint32(0)) { 15206 goto __404 15207 } 15208 goto inf_leave 15209 __404: 15210 ; 15211 have-- 15212 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15213 bits = bits + uint32(8) 15214 goto __402 15215 __402: 15216 if 0 != 0 { 15217 goto __401 15218 } 15219 goto __403 15220 __403: 15221 ; 15222 goto __399 15223 __400: 15224 ; 15225 goto __397 15226 __397: 15227 if 0 != 0 { 15228 goto __396 15229 } 15230 goto __398 15231 __398: 15232 ; 15233 *(*uint32)(unsafe.Pointer(state + 92)) += uint32(hold) & (uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Fextra - uint32(1)) 15234 __405: 15235 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 15236 bits = bits - (*Inflate_state)(unsafe.Pointer(state)).Fextra 15237 goto __406 15238 __406: 15239 if 0 != 0 { 15240 goto __405 15241 } 15242 goto __407 15243 __407: 15244 ; 15245 *(*int32)(unsafe.Pointer(state + 7148)) += int32((*Inflate_state)(unsafe.Pointer(state)).Fextra) 15246 __395: 15247 ; 15248 15249 (*Inflate_state)(unsafe.Pointer(state)).Fwas = (*Inflate_state)(unsafe.Pointer(state)).Flength 15250 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DIST 15251 __32: 15252 __408: 15253 here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr(uint32(hold)&(uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Fdistbits-uint32(1)))*4)) 15254 if !(uint32(here.Fbits) <= bits) { 15255 goto __411 15256 } 15257 goto __410 15258 __411: 15259 ; 15260 __412: 15261 if !(have == uint32(0)) { 15262 goto __415 15263 } 15264 goto inf_leave 15265 __415: 15266 ; 15267 have-- 15268 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15269 bits = bits + uint32(8) 15270 goto __413 15271 __413: 15272 if 0 != 0 { 15273 goto __412 15274 } 15275 goto __414 15276 __414: 15277 ; 15278 goto __409 15279 __409: 15280 goto __408 15281 goto __410 15282 __410: 15283 ; 15284 if !(int32(here.Fop)&0xf0 == 0) { 15285 goto __416 15286 } 15287 last = here 15288 __417: 15289 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)) 15290 if !(uint32(int32(last.Fbits)+int32(here.Fbits)) <= bits) { 15291 goto __420 15292 } 15293 goto __419 15294 __420: 15295 ; 15296 __421: 15297 if !(have == uint32(0)) { 15298 goto __424 15299 } 15300 goto inf_leave 15301 __424: 15302 ; 15303 have-- 15304 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15305 bits = bits + uint32(8) 15306 goto __422 15307 __422: 15308 if 0 != 0 { 15309 goto __421 15310 } 15311 goto __423 15312 __423: 15313 ; 15314 goto __418 15315 __418: 15316 goto __417 15317 goto __419 15318 __419: 15319 ; 15320 __425: 15321 hold >>= int32(last.Fbits) 15322 bits = bits - uint32(last.Fbits) 15323 goto __426 15324 __426: 15325 if 0 != 0 { 15326 goto __425 15327 } 15328 goto __427 15329 __427: 15330 ; 15331 *(*int32)(unsafe.Pointer(state + 7148)) += int32(last.Fbits) 15332 __416: 15333 ; 15334 __428: 15335 hold >>= int32(here.Fbits) 15336 bits = bits - uint32(here.Fbits) 15337 goto __429 15338 __429: 15339 if 0 != 0 { 15340 goto __428 15341 } 15342 goto __430 15343 __430: 15344 ; 15345 *(*int32)(unsafe.Pointer(state + 7148)) += int32(here.Fbits) 15346 if !(int32(here.Fop)&64 != 0) { 15347 goto __431 15348 } 15349 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */ 15350 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15351 goto __9 15352 __431: 15353 ; 15354 (*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval) 15355 (*Inflate_state)(unsafe.Pointer(state)).Fextra = uint32(here.Fop) & uint32(15) 15356 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DISTEXT 15357 __33: 15358 if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) { 15359 goto __432 15360 } 15361 __433: 15362 __436: 15363 if !(bits < (*Inflate_state)(unsafe.Pointer(state)).Fextra) { 15364 goto __437 15365 } 15366 __438: 15367 if !(have == uint32(0)) { 15368 goto __441 15369 } 15370 goto inf_leave 15371 __441: 15372 ; 15373 have-- 15374 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15375 bits = bits + uint32(8) 15376 goto __439 15377 __439: 15378 if 0 != 0 { 15379 goto __438 15380 } 15381 goto __440 15382 __440: 15383 ; 15384 goto __436 15385 __437: 15386 ; 15387 goto __434 15388 __434: 15389 if 0 != 0 { 15390 goto __433 15391 } 15392 goto __435 15393 __435: 15394 ; 15395 *(*uint32)(unsafe.Pointer(state + 96)) += uint32(hold) & (uint32(1)<<(*Inflate_state)(unsafe.Pointer(state)).Fextra - uint32(1)) 15396 __442: 15397 hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra 15398 bits = bits - (*Inflate_state)(unsafe.Pointer(state)).Fextra 15399 goto __443 15400 __443: 15401 if 0 != 0 { 15402 goto __442 15403 } 15404 goto __444 15405 __444: 15406 ; 15407 *(*int32)(unsafe.Pointer(state + 7148)) += int32((*Inflate_state)(unsafe.Pointer(state)).Fextra) 15408 __432: 15409 ; 15410 15411 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MATCH 15412 __34: 15413 if !(left == uint32(0)) { 15414 goto __445 15415 } 15416 goto inf_leave 15417 __445: 15418 ; 15419 copy = out - left 15420 if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > copy) { 15421 goto __446 15422 } // copy from window 15423 copy = (*Inflate_state)(unsafe.Pointer(state)).Foffset - copy 15424 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwhave) { 15425 goto __448 15426 } 15427 if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) { 15428 goto __449 15429 } 15430 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */ 15431 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15432 goto __9 15433 __449: 15434 ; 15435 __448: 15436 ; 15437 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwnext) { 15438 goto __450 15439 } 15440 copy = copy - (*Inflate_state)(unsafe.Pointer(state)).Fwnext 15441 from = (*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwsize-copy) 15442 goto __451 15443 __450: 15444 from = (*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext-copy) 15445 __451: 15446 ; 15447 if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) { 15448 goto __452 15449 } 15450 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 15451 __452: 15452 ; 15453 goto __447 15454 __446: // copy from output 15455 from = put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset) 15456 copy = (*Inflate_state)(unsafe.Pointer(state)).Flength 15457 __447: 15458 ; 15459 if !(copy > left) { 15460 goto __453 15461 } 15462 copy = left 15463 __453: 15464 ; 15465 left = left - copy 15466 *(*uint32)(unsafe.Pointer(state + 92)) -= copy 15467 __454: 15468 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1))) 15469 goto __455 15470 __455: 15471 if libc.PreDecUint32(©, 1) != 0 { 15472 goto __454 15473 } 15474 goto __456 15475 __456: 15476 ; 15477 if !((*Inflate_state)(unsafe.Pointer(state)).Flength == uint32(0)) { 15478 goto __457 15479 } 15480 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 15481 __457: 15482 ; 15483 goto __9 15484 __35: 15485 if !(left == uint32(0)) { 15486 goto __458 15487 } 15488 goto inf_leave 15489 __458: 15490 ; 15491 *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength) 15492 left-- 15493 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN 15494 goto __9 15495 __36: 15496 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) { 15497 goto __459 15498 } 15499 __460: 15500 __463: 15501 if !(bits < uint32(32)) { 15502 goto __464 15503 } 15504 __465: 15505 if !(have == uint32(0)) { 15506 goto __468 15507 } 15508 goto inf_leave 15509 __468: 15510 ; 15511 have-- 15512 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15513 bits = bits + uint32(8) 15514 goto __466 15515 __466: 15516 if 0 != 0 { 15517 goto __465 15518 } 15519 goto __467 15520 __467: 15521 ; 15522 goto __463 15523 __464: 15524 ; 15525 goto __461 15526 __461: 15527 if 0 != 0 { 15528 goto __460 15529 } 15530 goto __462 15531 __462: 15532 ; 15533 out = out - left 15534 *(*ULong)(unsafe.Pointer(strm + 40)) += ULong(out) 15535 *(*uint64)(unsafe.Pointer(state + 40)) += uint64(out) 15536 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0 && out != 0) { 15537 goto __469 15538 } 15539 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32, func() uint64 { 15540 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 15541 return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, put-uintptr(out), out) 15542 } 15543 return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, put-uintptr(out), out) 15544 }()) 15545 __469: 15546 ; 15547 out = left 15548 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0 && func() uint64 { 15549 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 15550 return hold 15551 } 15552 return hold>>24&uint64(0xff) + hold>>8&uint64(0xff00) + hold&uint64(0xff00)<<8 + hold&uint64(0xff)<<24 15553 }() != (*Inflate_state)(unsafe.Pointer(state)).Fcheck) { 15554 goto __470 15555 } 15556 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 784 /* "incorrect data c..." */ 15557 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15558 goto __9 15559 __470: 15560 ; 15561 __471: 15562 hold = uint64(0) 15563 bits = uint32(0) 15564 goto __472 15565 __472: 15566 if 0 != 0 { 15567 goto __471 15568 } 15569 goto __473 15570 __473: 15571 ; 15572 15573 __459: 15574 ; 15575 (*Inflate_state)(unsafe.Pointer(state)).Fmode = LENGTH 15576 __37: 15577 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0) { 15578 goto __474 15579 } 15580 __475: 15581 __478: 15582 if !(bits < uint32(32)) { 15583 goto __479 15584 } 15585 __480: 15586 if !(have == uint32(0)) { 15587 goto __483 15588 } 15589 goto inf_leave 15590 __483: 15591 ; 15592 have-- 15593 hold = hold + uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))<<bits 15594 bits = bits + uint32(8) 15595 goto __481 15596 __481: 15597 if 0 != 0 { 15598 goto __480 15599 } 15600 goto __482 15601 __482: 15602 ; 15603 goto __478 15604 __479: 15605 ; 15606 goto __476 15607 __476: 15608 if 0 != 0 { 15609 goto __475 15610 } 15611 goto __477 15612 __477: 15613 ; 15614 if !(hold != (*Inflate_state)(unsafe.Pointer(state)).Ftotal&0xffffffff) { 15615 goto __484 15616 } 15617 (*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 805 /* "incorrect length..." */ 15618 (*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD 15619 goto __9 15620 __484: 15621 ; 15622 __485: 15623 hold = uint64(0) 15624 bits = uint32(0) 15625 goto __486 15626 __486: 15627 if 0 != 0 { 15628 goto __485 15629 } 15630 goto __487 15631 __487: 15632 ; 15633 15634 __474: 15635 ; 15636 (*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE 15637 __38: 15638 ret = Z_STREAM_END 15639 goto inf_leave 15640 __39: 15641 ret = -3 15642 goto inf_leave 15643 __40: 15644 return -4 15645 __41: 15646 __42: 15647 return -2 15648 __9: 15649 ; 15650 goto __7 15651 __7: 15652 goto __6 15653 goto __8 15654 __8: 15655 ; 15656 15657 // 15658 // Return from inflate(), updating the total counts and the check value. 15659 // If there was no progress during the inflate() call, return a buffer 15660 // error. Call updatewindow() to create and/or update the window state. 15661 // Note: a memory error from inflate() is non-recoverable. 15662 // 15663 inf_leave: 15664 __488: 15665 (*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put 15666 (*Z_stream)(unsafe.Pointer(strm)).Favail_out = left 15667 (*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next 15668 (*Z_stream)(unsafe.Pointer(strm)).Favail_in = have 15669 (*Inflate_state)(unsafe.Pointer(state)).Fhold = hold 15670 (*Inflate_state)(unsafe.Pointer(state)).Fbits = bits 15671 goto __489 15672 __489: 15673 if 0 != 0 { 15674 goto __488 15675 } 15676 goto __490 15677 __490: 15678 ; 15679 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)) { 15680 goto __491 15681 } 15682 if !(updatewindow(tls, strm, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, out-(*Z_stream)(unsafe.Pointer(strm)).Favail_out) != 0) { 15683 goto __492 15684 } 15685 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM 15686 return -4 15687 __492: 15688 ; 15689 __491: 15690 ; 15691 in = in - (*Z_stream)(unsafe.Pointer(strm)).Favail_in 15692 out = out - (*Z_stream)(unsafe.Pointer(strm)).Favail_out 15693 *(*ULong)(unsafe.Pointer(strm + 16)) += ULong(in) 15694 *(*ULong)(unsafe.Pointer(strm + 40)) += ULong(out) 15695 *(*uint64)(unsafe.Pointer(state + 40)) += uint64(out) 15696 if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap&4 != 0 && out != 0) { 15697 goto __493 15698 } 15699 (*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32, func() uint64 { 15700 if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 { 15701 return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out-uintptr(out), out) 15702 } 15703 return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out-uintptr(out), out) 15704 }()) 15705 __493: 15706 ; 15707 (*Z_stream)(unsafe.Pointer(strm)).Fdata_type = int32((*Inflate_state)(unsafe.Pointer(state)).Fbits) + func() int32 { 15708 if (*Inflate_state)(unsafe.Pointer(state)).Flast != 0 { 15709 return 64 15710 } 15711 return 0 15712 }() + func() int32 { 15713 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE { 15714 return 128 15715 } 15716 return 0 15717 }() + func() int32 { 15718 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == LEN_ || (*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY_ { 15719 return 256 15720 } 15721 return 0 15722 }() 15723 if !((in == uint32(0) && out == uint32(0) || flush == Z_FINISH) && ret == Z_OK) { 15724 goto __494 15725 } 15726 ret = -5 15727 __494: 15728 ; 15729 return ret 15730 } 15731 15732 var order1 = // permutation of code lengths 15733 [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 */ 15734 15735 func XinflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1277:13: */ 15736 var state uintptr 15737 if inflateStateCheck(tls, strm) != 0 { 15738 return -2 15739 } 15740 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15741 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) { 15742 (*struct { 15743 f func(*libc.TLS, Voidpf, Voidpf) 15744 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow) 15745 } 15746 (*struct { 15747 f func(*libc.TLS, Voidpf, Voidpf) 15748 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(strm)).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate) 15749 (*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL) 15750 15751 return Z_OK 15752 } 15753 15754 func XinflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* inflate.c:1291:13: */ 15755 var state uintptr 15756 15757 // check state 15758 if inflateStateCheck(tls, strm) != 0 { 15759 return -2 15760 } 15761 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15762 15763 // copy dictionary 15764 if (*Inflate_state)(unsafe.Pointer(state)).Fwhave != 0 && dictionary != uintptr(Z_NULL) { 15765 libc.Xmemcpy(tls, dictionary, (*Inflate_state)(unsafe.Pointer(state)).Fwindow+uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext), 15766 uint64((*Inflate_state)(unsafe.Pointer(state)).Fwhave-(*Inflate_state)(unsafe.Pointer(state)).Fwnext)) 15767 libc.Xmemcpy(tls, dictionary+uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwhave)-uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext), 15768 (*Inflate_state)(unsafe.Pointer(state)).Fwindow, uint64((*Inflate_state)(unsafe.Pointer(state)).Fwnext)) 15769 } 15770 if dictLength != uintptr(Z_NULL) { 15771 *(*UInt)(unsafe.Pointer(dictLength)) = (*Inflate_state)(unsafe.Pointer(state)).Fwhave 15772 } 15773 return Z_OK 15774 } 15775 15776 func XinflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* inflate.c:1314:13: */ 15777 var state uintptr 15778 var dictid uint64 15779 var ret int32 15780 15781 // check state 15782 if inflateStateCheck(tls, strm) != 0 { 15783 return -2 15784 } 15785 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15786 if (*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0 && (*Inflate_state)(unsafe.Pointer(state)).Fmode != DICT { 15787 return -2 15788 } 15789 15790 // check for correct dictionary identifier 15791 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == DICT { 15792 dictid = Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)) 15793 dictid = Xadler32(tls, dictid, dictionary, dictLength) 15794 if dictid != (*Inflate_state)(unsafe.Pointer(state)).Fcheck { 15795 return -3 15796 } 15797 } 15798 15799 // copy dictionary to window using updatewindow(), which will amend the 15800 // existing dictionary if appropriate 15801 ret = updatewindow(tls, strm, dictionary+uintptr(dictLength), dictLength) 15802 if ret != 0 { 15803 (*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM 15804 return -4 15805 } 15806 (*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 1 15807 15808 return Z_OK 15809 } 15810 15811 func XinflateGetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* inflate.c:1349:13: */ 15812 var state uintptr 15813 15814 // check state 15815 if inflateStateCheck(tls, strm) != 0 { 15816 return -2 15817 } 15818 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15819 if (*Inflate_state)(unsafe.Pointer(state)).Fwrap&2 == 0 { 15820 return -2 15821 } 15822 15823 // save header structure 15824 (*Inflate_state)(unsafe.Pointer(state)).Fhead = head 15825 (*Gz_header)(unsafe.Pointer(head)).Fdone = 0 15826 return Z_OK 15827 } 15828 15829 // 15830 // Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found 15831 // or when out of input. When called, *have is the number of pattern bytes 15832 // found in order so far, in 0..3. On return *have is updated to the new 15833 // state. If on return *have equals four, then the pattern was found and the 15834 // return value is how many bytes were read including the last byte of the 15835 // pattern. If *have is less than four, then the pattern has not been found 15836 // yet and the return value is len. In the latter case, syncsearch() can be 15837 // called again with more data and the *have state. *have is initialized to 15838 // zero for the first call. 15839 // 15840 func syncsearch(tls *libc.TLS, have uintptr, buf uintptr, len uint32) uint32 { /* inflate.c:1377:16: */ 15841 var got uint32 15842 var next uint32 15843 15844 got = *(*uint32)(unsafe.Pointer(have)) 15845 next = uint32(0) 15846 for next < len && got < uint32(4) { 15847 if int32(*(*uint8)(unsafe.Pointer(buf + uintptr(next)))) == func() int32 { 15848 if got < uint32(2) { 15849 return 0 15850 } 15851 return 0xff 15852 }() { 15853 got++ 15854 } else if *(*uint8)(unsafe.Pointer(buf + uintptr(next))) != 0 { 15855 got = uint32(0) 15856 } else { 15857 got = uint32(4) - got 15858 } 15859 next++ 15860 } 15861 *(*uint32)(unsafe.Pointer(have)) = got 15862 return next 15863 } 15864 15865 func XinflateSync(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1400:13: */ 15866 bp := tls.Alloc(4) 15867 defer tls.Free(4) 15868 15869 var len uint32 // number of bytes to look at or looked at 15870 var in uint64 15871 var out uint64 // temporary to save total_in and total_out 15872 // var buf [4]uint8 at bp, 4 15873 // to restore bit buffer to byte string 15874 var state uintptr 15875 15876 // check parameters 15877 if inflateStateCheck(tls, strm) != 0 { 15878 return -2 15879 } 15880 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15881 if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) && (*Inflate_state)(unsafe.Pointer(state)).Fbits < uint32(8) { 15882 return -5 15883 } 15884 15885 // if first time, start search in bit buffer 15886 if (*Inflate_state)(unsafe.Pointer(state)).Fmode != SYNC { 15887 (*Inflate_state)(unsafe.Pointer(state)).Fmode = SYNC 15888 libc.AssignShlPtrUint64(state+80, int((*Inflate_state)(unsafe.Pointer(state)).Fbits&uint32(7))) 15889 *(*uint32)(unsafe.Pointer(state + 88)) -= (*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7) 15890 len = uint32(0) 15891 for (*Inflate_state)(unsafe.Pointer(state)).Fbits >= uint32(8) { 15892 *(*uint8)(unsafe.Pointer(bp + uintptr(libc.PostIncUint32(&len, 1)))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Fhold) 15893 libc.AssignShrPtrUint64(state+80, int(8)) 15894 *(*uint32)(unsafe.Pointer(state + 88)) -= uint32(8) 15895 } 15896 (*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0) 15897 syncsearch(tls, state+140, bp, len) 15898 } 15899 15900 // search available input 15901 len = syncsearch(tls, state+140, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, (*Z_stream)(unsafe.Pointer(strm)).Favail_in) 15902 *(*UInt)(unsafe.Pointer(strm + 8)) -= len 15903 *(*uintptr)(unsafe.Pointer(strm)) += uintptr(len) 15904 *(*ULong)(unsafe.Pointer(strm + 16)) += ULong(len) 15905 15906 // return no joy or set up to restart inflate() on a new block 15907 if (*Inflate_state)(unsafe.Pointer(state)).Fhave != uint32(4) { 15908 return -3 15909 } 15910 in = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in 15911 out = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out 15912 XinflateReset(tls, strm) 15913 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = in 15914 (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out = out 15915 (*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE 15916 return Z_OK 15917 } 15918 15919 // 15920 // Returns true if inflate is currently at the end of a block generated by 15921 // Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP 15922 // implementation to provide an additional safety check. PPP uses 15923 // Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored 15924 // block. When decompressing, PPP checks that at the end of input packet, 15925 // inflate is waiting for these length bytes. 15926 // 15927 func XinflateSyncPoint(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1451:13: */ 15928 var state uintptr 15929 15930 if inflateStateCheck(tls, strm) != 0 { 15931 return -2 15932 } 15933 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15934 return libc.Bool32((*Inflate_state)(unsafe.Pointer(state)).Fmode == STORED && (*Inflate_state)(unsafe.Pointer(state)).Fbits == uint32(0)) 15935 } 15936 15937 func XinflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* inflate.c:1461:13: */ 15938 var state uintptr 15939 var copy uintptr 15940 var window uintptr 15941 var wsize uint32 15942 15943 // check input 15944 if inflateStateCheck(tls, source) != 0 || dest == uintptr(Z_NULL) { 15945 return -2 15946 } 15947 state = (*Z_stream)(unsafe.Pointer(source)).Fstate 15948 15949 // allocate space 15950 copy = (*struct { 15951 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 15952 })(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{}))) 15953 if copy == uintptr(Z_NULL) { 15954 return -4 15955 } 15956 window = uintptr(Z_NULL) 15957 if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) { 15958 window = (*struct { 15959 f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf 15960 })(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)))) 15961 if window == uintptr(Z_NULL) { 15962 (*struct { 15963 f func(*libc.TLS, Voidpf, Voidpf) 15964 })(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer(source)).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, copy) 15965 return -4 15966 } 15967 } 15968 15969 // copy state 15970 libc.Xmemcpy(tls, dest, source, uint64(unsafe.Sizeof(Z_stream{}))) 15971 libc.Xmemcpy(tls, copy, state, uint64(unsafe.Sizeof(Inflate_state{}))) 15972 (*Inflate_state)(unsafe.Pointer(copy)).Fstrm = dest 15973 if (*Inflate_state)(unsafe.Pointer(state)).Flencode >= state+1368 && (*Inflate_state)(unsafe.Pointer(state)).Flencode <= state+1368+uintptr(ENOUGH_LENS+ENOUGH_DISTS)*4-uintptr(1)*4 { 15974 (*Inflate_state)(unsafe.Pointer(copy)).Flencode = copy + 1368 + uintptr(int64(((*Inflate_state)(unsafe.Pointer(state)).Flencode-(state+1368))/4))*4 15975 (*Inflate_state)(unsafe.Pointer(copy)).Fdistcode = copy + 1368 + uintptr(int64(((*Inflate_state)(unsafe.Pointer(state)).Fdistcode-(state+1368))/4))*4 15976 } 15977 (*Inflate_state)(unsafe.Pointer(copy)).Fnext = copy + 1368 + uintptr(int64(((*Inflate_state)(unsafe.Pointer(state)).Fnext-(state+1368))/4))*4 15978 if window != uintptr(Z_NULL) { 15979 wsize = uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits 15980 libc.Xmemcpy(tls, window, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, uint64(wsize)) 15981 } 15982 (*Inflate_state)(unsafe.Pointer(copy)).Fwindow = window 15983 (*Z_stream)(unsafe.Pointer(dest)).Fstate = copy 15984 return Z_OK 15985 } 15986 15987 func XinflateUndermine(tls *libc.TLS, strm Z_streamp, subvert int32) int32 { /* inflate.c:1508:13: */ 15988 var state uintptr 15989 15990 if inflateStateCheck(tls, strm) != 0 { 15991 return -2 15992 } 15993 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 15994 _ = subvert 15995 (*Inflate_state)(unsafe.Pointer(state)).Fsane = 1 15996 return -3 15997 } 15998 15999 func XinflateValidate(tls *libc.TLS, strm Z_streamp, check int32) int32 { /* inflate.c:1526:13: */ 16000 var state uintptr 16001 16002 if inflateStateCheck(tls, strm) != 0 { 16003 return -2 16004 } 16005 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 16006 if check != 0 { 16007 *(*int32)(unsafe.Pointer(state + 16)) |= 4 16008 } else { 16009 *(*int32)(unsafe.Pointer(state + 16)) &= libc.CplInt32(4) 16010 } 16011 return Z_OK 16012 } 16013 16014 func XinflateMark(tls *libc.TLS, strm Z_streamp) int64 { /* inflate.c:1541:14: */ 16015 var state uintptr 16016 16017 if inflateStateCheck(tls, strm) != 0 { 16018 return -(int64(1) << 16) 16019 } 16020 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 16021 return int64(uint64(int64((*Inflate_state)(unsafe.Pointer(state)).Fback))<<16) + func() int64 { 16022 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY { 16023 return int64((*Inflate_state)(unsafe.Pointer(state)).Flength) 16024 } 16025 return func() int64 { 16026 if (*Inflate_state)(unsafe.Pointer(state)).Fmode == MATCH { 16027 return int64((*Inflate_state)(unsafe.Pointer(state)).Fwas - (*Inflate_state)(unsafe.Pointer(state)).Flength) 16028 } 16029 return int64(0) 16030 }() 16031 }() 16032 } 16033 16034 func XinflateCodesUsed(tls *libc.TLS, strm Z_streamp) uint64 { /* inflate.c:1554:23: */ 16035 var state uintptr 16036 if inflateStateCheck(tls, strm) != 0 { 16037 return libc.Uint64(libc.Uint64FromInt32(-1)) 16038 } 16039 state = (*Z_stream)(unsafe.Pointer(strm)).Fstate 16040 return uint64(int64(((*Inflate_state)(unsafe.Pointer(state)).Fnext - (state + 1368)) / 4)) 16041 } 16042 16043 var Xinflate_copyright = *(*[48]uint8)(unsafe.Pointer(ts + 828)) /* inftrees.c:11:12 */ 16044 16045 // 16046 // If you use the zlib library in a product, an acknowledgment is welcome 16047 // in the documentation of your product. If for some reason you cannot 16048 // include such an acknowledgment, I would appreciate that you keep this 16049 // copyright string in the executable of your product. 16050 // 16051 16052 // 16053 // Build a set of tables to decode the provided canonical Huffman code. 16054 // The code lengths are lens[0..codes-1]. The result starts at *table, 16055 // whose indices are 0..2^bits-1. work is a writable array of at least 16056 // lens shorts, which is used as a work area. type is the type of code 16057 // to be generated, CODES, LENS, or DISTS. On return, zero is success, 16058 // -1 is an invalid code, and +1 means that ENOUGH isn't enough. table 16059 // on return points to the next available entry's address. bits is the 16060 // requested root table index bits, and on return it is the actual root 16061 // table index bits. It will differ if the request is greater than the 16062 // longest code or if it is less than the shortest code. 16063 // 16064 func Xinflate_table(tls *libc.TLS, type1 Codetype, lens uintptr, codes uint32, table uintptr, bits uintptr, work uintptr) int32 { /* inftrees.c:32:19: */ 16065 bp := tls.Alloc(64) 16066 defer tls.Free(64) 16067 16068 var len uint32 // a code's length in bits 16069 var sym uint32 // index of code symbols 16070 var min uint32 16071 var max uint32 // minimum and maximum code lengths 16072 var root uint32 // number of index bits for root table 16073 var curr uint32 // number of index bits for current table 16074 var drop uint32 // code bits to drop for sub-table 16075 var left int32 // number of prefix codes available 16076 var used uint32 // code entries in table used 16077 var huff uint32 // Huffman code 16078 var incr uint32 // for incrementing code, index 16079 var fill uint32 // index for replicating entries 16080 var low uint32 // low bits for current root entry 16081 var mask uint32 // mask for low root bits 16082 var here Code // table entry for duplication 16083 var next uintptr // next available space in table 16084 var base uintptr // base value table to use 16085 var extra uintptr // extra bits table to use 16086 var match uint32 // use base and extra for symbol >= match 16087 // var count [16]uint16 at bp, 32 16088 // number of codes of each length 16089 // var offs [16]uint16 at bp+32, 32 16090 16091 // 16092 // Process a set of code lengths to create a canonical Huffman code. The 16093 // code lengths are lens[0..codes-1]. Each length corresponds to the 16094 // symbols 0..codes-1. The Huffman code is generated by first sorting the 16095 // symbols by length from short to long, and retaining the symbol order 16096 // for codes with equal lengths. Then the code starts with all zero bits 16097 // for the first code of the shortest length, and the codes are integer 16098 // increments for the same length, and zeros are appended as the length 16099 // increases. For the deflate format, these bits are stored backwards 16100 // from their more natural integer increment ordering, and so when the 16101 // decoding tables are built in the large loop below, the integer codes 16102 // are incremented backwards. 16103 // 16104 // This routine assumes, but does not check, that all of the entries in 16105 // lens[] are in the range 0..MAXBITS. The caller must assure this. 16106 // 1..MAXBITS is interpreted as that code length. zero means that that 16107 // symbol does not occur in this code. 16108 // 16109 // The codes are sorted by computing a count of codes for each length, 16110 // creating from that a table of starting indices for each length in the 16111 // sorted table, and then entering the symbols in order in the sorted 16112 // table. The sorted table is work[], with that space being provided by 16113 // the caller. 16114 // 16115 // The length counts are used for other purposes as well, i.e. finding 16116 // the minimum and maximum length codes, determining if there are any 16117 // codes at all, checking for a valid set of lengths, and looking ahead 16118 // at length counts to determine sub-table sizes when building the 16119 // decoding tables. 16120 // 16121 16122 // accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) 16123 for len = uint32(0); len <= uint32(MAXBITS); len++ { 16124 *(*uint16)(unsafe.Pointer(bp + uintptr(len)*2)) = uint16(0) 16125 } 16126 for sym = uint32(0); sym < codes; sym++ { 16127 *(*uint16)(unsafe.Pointer(bp + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2))++ 16128 } 16129 16130 // bound code lengths, force root to be within code lengths 16131 root = *(*uint32)(unsafe.Pointer(bits)) 16132 for max = uint32(MAXBITS); max >= uint32(1); max-- { 16133 if int32(*(*uint16)(unsafe.Pointer(bp + uintptr(max)*2))) != 0 { 16134 break 16135 } 16136 } 16137 if root > max { 16138 root = max 16139 } 16140 if max == uint32(0) { // no symbols to code at all 16141 here.Fop = uint8(64) // invalid code marker 16142 here.Fbits = uint8(1) 16143 here.Fval = uint16(0) 16144 *(*Code)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(table)), 4))) = here // make a table to force an error 16145 *(*Code)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(table)), 4))) = here 16146 *(*uint32)(unsafe.Pointer(bits)) = uint32(1) 16147 return 0 // no symbols, but wait for decoding to report error 16148 } 16149 for min = uint32(1); min < max; min++ { 16150 if int32(*(*uint16)(unsafe.Pointer(bp + uintptr(min)*2))) != 0 { 16151 break 16152 } 16153 } 16154 if root < min { 16155 root = min 16156 } 16157 16158 // check for an over-subscribed or incomplete set of lengths 16159 left = 1 16160 for len = uint32(1); len <= uint32(MAXBITS); len++ { 16161 left <<= 1 16162 left = left - int32(*(*uint16)(unsafe.Pointer(bp + uintptr(len)*2))) 16163 if left < 0 { 16164 return -1 16165 } // over-subscribed 16166 } 16167 if left > 0 && (type1 == CODES || max != uint32(1)) { 16168 return -1 16169 } // incomplete set 16170 16171 // generate offsets into symbol table for each length for sorting 16172 *(*uint16)(unsafe.Pointer(bp + 32 + 1*2)) = uint16(0) 16173 for len = uint32(1); len < uint32(MAXBITS); len++ { 16174 *(*uint16)(unsafe.Pointer(bp + 32 + uintptr(len+uint32(1))*2)) = uint16(int32(*(*uint16)(unsafe.Pointer(bp + 32 + uintptr(len)*2))) + int32(*(*uint16)(unsafe.Pointer(bp + uintptr(len)*2)))) 16175 } 16176 16177 // sort symbols by length, by symbol order within each length 16178 for sym = uint32(0); sym < codes; sym++ { 16179 if int32(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2))) != 0 { 16180 *(*uint16)(unsafe.Pointer(work + uintptr(libc.PostIncUint16(&*(*uint16)(unsafe.Pointer(bp + 32 + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2)), 1))*2)) = uint16(sym) 16181 } 16182 } 16183 16184 // 16185 // Create and fill in decoding tables. In this loop, the table being 16186 // filled is at next and has curr index bits. The code being used is huff 16187 // with length len. That code is converted to an index by dropping drop 16188 // bits off of the bottom. For codes where len is less than drop + curr, 16189 // those top drop + curr - len bits are incremented through all values to 16190 // fill the table with replicated entries. 16191 // 16192 // root is the number of index bits for the root table. When len exceeds 16193 // root, sub-tables are created pointed to by the root entry with an index 16194 // of the low root bits of huff. This is saved in low to check for when a 16195 // new sub-table should be started. drop is zero when the root table is 16196 // being filled, and drop is root when sub-tables are being filled. 16197 // 16198 // When a new sub-table is needed, it is necessary to look ahead in the 16199 // code lengths to determine what size sub-table is needed. The length 16200 // counts are used for this, and so count[] is decremented as codes are 16201 // entered in the tables. 16202 // 16203 // used keeps track of how many table entries have been allocated from the 16204 // provided *table space. It is checked for LENS and DIST tables against 16205 // the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in 16206 // the initial root table size constants. See the comments in inftrees.h 16207 // for more information. 16208 // 16209 // sym increments through all symbols, and the loop terminates when 16210 // all codes of length max, i.e. all codes, have been processed. This 16211 // routine permits incomplete codes, so another loop after this one fills 16212 // in the rest of the decoding tables with invalid code markers. 16213 // 16214 16215 // set up for code type 16216 switch type1 { 16217 case CODES: 16218 base = libc.AssignUintptr(&extra, work) // dummy value--not used 16219 match = uint32(20) 16220 break 16221 case LENS: 16222 base = uintptr(unsafe.Pointer(&lbase)) 16223 extra = uintptr(unsafe.Pointer(&lext)) 16224 match = uint32(257) 16225 break 16226 default: // DISTS 16227 base = uintptr(unsafe.Pointer(&dbase)) 16228 extra = uintptr(unsafe.Pointer(&dext)) 16229 match = uint32(0) 16230 } 16231 16232 // initialize state for loop 16233 huff = uint32(0) // starting code 16234 sym = uint32(0) // starting code symbol 16235 len = min // starting code length 16236 next = *(*uintptr)(unsafe.Pointer(table)) // current table to fill in 16237 curr = root // current table index bits 16238 drop = uint32(0) // current bits to drop from code for index 16239 low = libc.Uint32(libc.Uint32FromInt32(-1)) // trigger new sub-table when len > root 16240 used = uint32(1) << root // use root table entries 16241 mask = used - uint32(1) // mask for comparing low 16242 16243 // check available table space 16244 if type1 == LENS && used > uint32(ENOUGH_LENS) || type1 == DISTS && used > uint32(ENOUGH_DISTS) { 16245 return 1 16246 } 16247 16248 // process all codes and make table entries 16249 for { 16250 // create table entry 16251 here.Fbits = uint8(len - drop) 16252 if uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))+1 < match { 16253 here.Fop = uint8(0) 16254 here.Fval = *(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)) 16255 } else if uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) >= match { 16256 here.Fop = uint8(*(*uint16)(unsafe.Pointer(extra + uintptr(uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match)*2))) 16257 here.Fval = *(*uint16)(unsafe.Pointer(base + uintptr(uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match)*2)) 16258 } else { 16259 here.Fop = uint8(32 + 64) // end of block 16260 here.Fval = uint16(0) 16261 } 16262 16263 // replicate for those indices with low len bits equal to huff 16264 incr = uint32(1) << (len - drop) 16265 fill = uint32(1) << curr 16266 min = fill // save offset to next table 16267 for __ccgo := true; __ccgo; __ccgo = fill != uint32(0) { 16268 fill = fill - incr 16269 *(*Code)(unsafe.Pointer(next + uintptr(huff>>drop+fill)*4)) = here 16270 } 16271 16272 // backwards increment the len-bit code huff 16273 incr = uint32(1) << (len - uint32(1)) 16274 for huff&incr != 0 { 16275 incr >>= 1 16276 } 16277 if incr != uint32(0) { 16278 huff = huff & (incr - uint32(1)) 16279 huff = huff + incr 16280 } else { 16281 huff = uint32(0) 16282 } 16283 16284 // go to next symbol, update count, len 16285 sym++ 16286 if int32(libc.PreDecUint16(&*(*uint16)(unsafe.Pointer(bp + uintptr(len)*2)), 1)) == 0 { 16287 if len == max { 16288 break 16289 } 16290 len = uint32(*(*uint16)(unsafe.Pointer(lens + uintptr(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))*2))) 16291 } 16292 16293 // create new sub-table if needed 16294 if len > root && huff&mask != low { 16295 // if first time, transition to sub-tables 16296 if drop == uint32(0) { 16297 drop = root 16298 } 16299 16300 // increment past last table 16301 next += 4 * uintptr(min) // here min is 1 << curr 16302 16303 // determine length of next table 16304 curr = len - drop 16305 left = int32(1) << curr 16306 for curr+drop < max { 16307 left = left - int32(*(*uint16)(unsafe.Pointer(bp + uintptr(curr+drop)*2))) 16308 if left <= 0 { 16309 break 16310 } 16311 curr++ 16312 left <<= 1 16313 } 16314 16315 // check for enough space 16316 used = used + uint32(1)<<curr 16317 if type1 == LENS && used > uint32(ENOUGH_LENS) || type1 == DISTS && used > uint32(ENOUGH_DISTS) { 16318 return 1 16319 } 16320 16321 // point entry in root table to sub-table 16322 low = huff & mask 16323 (*Code)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(table)) + uintptr(low)*4)).Fop = uint8(curr) 16324 (*Code)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(table)) + uintptr(low)*4)).Fbits = uint8(root) 16325 (*Code)(unsafe.Pointer(*(*uintptr)(unsafe.Pointer(table)) + uintptr(low)*4)).Fval = uint16((int64(next) - int64(*(*uintptr)(unsafe.Pointer(table)))) / 4) 16326 } 16327 } 16328 16329 // fill in remaining table entry if code is incomplete (guaranteed to have 16330 // at most one remaining entry, since if the code is incomplete, the 16331 // maximum code length that was allowed to get this far is one bit) 16332 if huff != uint32(0) { 16333 here.Fop = uint8(64) // invalid code marker 16334 here.Fbits = uint8(len - drop) 16335 here.Fval = uint16(0) 16336 *(*Code)(unsafe.Pointer(next + uintptr(huff)*4)) = here 16337 } 16338 16339 // set return parameters 16340 *(*uintptr)(unsafe.Pointer(table)) += uintptr(used) * 4 16341 *(*uint32)(unsafe.Pointer(bits)) = root 16342 return 0 16343 } 16344 16345 var lbase = [31]uint16{ // Length codes 257..285 base 16346 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), 16347 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 */ 16348 var lext = [31]uint16{ // Length codes 257..285 extra 16349 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), 16350 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 */ 16351 var dbase = [32]uint16{ // Distance codes 0..29 base 16352 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), 16353 uint16(257), uint16(385), uint16(513), uint16(769), uint16(1025), uint16(1537), uint16(2049), uint16(3073), uint16(4097), uint16(6145), 16354 uint16(8193), uint16(12289), uint16(16385), uint16(24577), uint16(0), uint16(0)} /* inftrees.c:66:33 */ 16355 var dext = [32]uint16{ // Distance codes 0..29 extra 16356 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), 16357 uint16(23), uint16(23), uint16(24), uint16(24), uint16(25), uint16(25), uint16(26), uint16(26), uint16(27), uint16(27), 16358 uint16(28), uint16(28), uint16(29), uint16(29), uint16(64), uint16(64)} /* inftrees.c:70:33 */ 16359 16360 type Static_tree_desc = Static_tree_desc_s /* deflate.h:84:36 */ 16361 16362 // =========================================================================== 16363 // Constants 16364 16365 // Bit length codes must not exceed MAX_BL_BITS bits 16366 16367 // end of block literal code 16368 16369 // repeat previous bit length 3-6 times (2 bits of repeat count) 16370 16371 // repeat a zero length 3-10 times (3 bits of repeat count) 16372 16373 // repeat a zero length 11-138 times (7 bits of repeat count) 16374 16375 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 */ 16376 16377 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 */ 16378 16379 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 */ 16380 16381 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 */ 16382 // The lengths of the bit length codes are sent in order of decreasing 16383 // probability, to avoid transmitting the lengths for unused bit length codes. 16384 16385 // =========================================================================== 16386 // Local data. These are initialized only once. 16387 16388 // header created automatically with -DGEN_TREES_H 16389 16390 var static_ltree = [288]Ct_data{{Ffc: func() (r struct{ Ffreq Ush }) { 16391 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12) 16392 return r 16393 }(), Fdl: func() (r struct{ Fdad Ush }) { 16394 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16395 return r 16396 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16397 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(140) 16398 return r 16399 }(), Fdl: func() (r struct{ Fdad Ush }) { 16400 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16401 return r 16402 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16403 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(76) 16404 return r 16405 }(), Fdl: func() (r struct{ Fdad Ush }) { 16406 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16407 return r 16408 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16409 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(204) 16410 return r 16411 }(), Fdl: func() (r struct{ Fdad Ush }) { 16412 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16413 return r 16414 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16415 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(44) 16416 return r 16417 }(), Fdl: func() (r struct{ Fdad Ush }) { 16418 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16419 return r 16420 }()}, 16421 {Ffc: func() (r struct{ Ffreq Ush }) { 16422 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(172) 16423 return r 16424 }(), Fdl: func() (r struct{ Fdad Ush }) { 16425 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16426 return r 16427 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16428 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(108) 16429 return r 16430 }(), Fdl: func() (r struct{ Fdad Ush }) { 16431 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16432 return r 16433 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16434 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(236) 16435 return r 16436 }(), Fdl: func() (r struct{ Fdad Ush }) { 16437 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16438 return r 16439 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16440 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28) 16441 return r 16442 }(), Fdl: func() (r struct{ Fdad Ush }) { 16443 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16444 return r 16445 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16446 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(156) 16447 return r 16448 }(), Fdl: func() (r struct{ Fdad Ush }) { 16449 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16450 return r 16451 }()}, 16452 {Ffc: func() (r struct{ Ffreq Ush }) { 16453 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(92) 16454 return r 16455 }(), Fdl: func() (r struct{ Fdad Ush }) { 16456 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16457 return r 16458 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16459 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(220) 16460 return r 16461 }(), Fdl: func() (r struct{ Fdad Ush }) { 16462 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16463 return r 16464 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16465 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(60) 16466 return r 16467 }(), Fdl: func() (r struct{ Fdad Ush }) { 16468 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16469 return r 16470 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16471 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(188) 16472 return r 16473 }(), Fdl: func() (r struct{ Fdad Ush }) { 16474 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16475 return r 16476 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16477 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(124) 16478 return r 16479 }(), Fdl: func() (r struct{ Fdad Ush }) { 16480 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16481 return r 16482 }()}, 16483 {Ffc: func() (r struct{ Ffreq Ush }) { 16484 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(252) 16485 return r 16486 }(), Fdl: func() (r struct{ Fdad Ush }) { 16487 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16488 return r 16489 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16490 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2) 16491 return r 16492 }(), Fdl: func() (r struct{ Fdad Ush }) { 16493 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16494 return r 16495 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16496 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(130) 16497 return r 16498 }(), Fdl: func() (r struct{ Fdad Ush }) { 16499 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16500 return r 16501 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16502 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(66) 16503 return r 16504 }(), Fdl: func() (r struct{ Fdad Ush }) { 16505 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16506 return r 16507 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16508 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(194) 16509 return r 16510 }(), Fdl: func() (r struct{ Fdad Ush }) { 16511 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16512 return r 16513 }()}, 16514 {Ffc: func() (r struct{ Ffreq Ush }) { 16515 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(34) 16516 return r 16517 }(), Fdl: func() (r struct{ Fdad Ush }) { 16518 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16519 return r 16520 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16521 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(162) 16522 return r 16523 }(), Fdl: func() (r struct{ Fdad Ush }) { 16524 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16525 return r 16526 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16527 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(98) 16528 return r 16529 }(), Fdl: func() (r struct{ Fdad Ush }) { 16530 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16531 return r 16532 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16533 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(226) 16534 return r 16535 }(), Fdl: func() (r struct{ Fdad Ush }) { 16536 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16537 return r 16538 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16539 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18) 16540 return r 16541 }(), Fdl: func() (r struct{ Fdad Ush }) { 16542 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16543 return r 16544 }()}, 16545 {Ffc: func() (r struct{ Ffreq Ush }) { 16546 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(146) 16547 return r 16548 }(), Fdl: func() (r struct{ Fdad Ush }) { 16549 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16550 return r 16551 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16552 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(82) 16553 return r 16554 }(), Fdl: func() (r struct{ Fdad Ush }) { 16555 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16556 return r 16557 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16558 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(210) 16559 return r 16560 }(), Fdl: func() (r struct{ Fdad Ush }) { 16561 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16562 return r 16563 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16564 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(50) 16565 return r 16566 }(), Fdl: func() (r struct{ Fdad Ush }) { 16567 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16568 return r 16569 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16570 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(178) 16571 return r 16572 }(), Fdl: func() (r struct{ Fdad Ush }) { 16573 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16574 return r 16575 }()}, 16576 {Ffc: func() (r struct{ Ffreq Ush }) { 16577 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(114) 16578 return r 16579 }(), Fdl: func() (r struct{ Fdad Ush }) { 16580 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16581 return r 16582 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16583 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(242) 16584 return r 16585 }(), Fdl: func() (r struct{ Fdad Ush }) { 16586 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16587 return r 16588 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16589 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10) 16590 return r 16591 }(), Fdl: func() (r struct{ Fdad Ush }) { 16592 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16593 return r 16594 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16595 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(138) 16596 return r 16597 }(), Fdl: func() (r struct{ Fdad Ush }) { 16598 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16599 return r 16600 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16601 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(74) 16602 return r 16603 }(), Fdl: func() (r struct{ Fdad Ush }) { 16604 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16605 return r 16606 }()}, 16607 {Ffc: func() (r struct{ Ffreq Ush }) { 16608 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(202) 16609 return r 16610 }(), Fdl: func() (r struct{ Fdad Ush }) { 16611 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16612 return r 16613 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16614 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(42) 16615 return r 16616 }(), Fdl: func() (r struct{ Fdad Ush }) { 16617 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16618 return r 16619 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16620 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(170) 16621 return r 16622 }(), Fdl: func() (r struct{ Fdad Ush }) { 16623 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16624 return r 16625 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16626 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(106) 16627 return r 16628 }(), Fdl: func() (r struct{ Fdad Ush }) { 16629 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16630 return r 16631 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16632 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(234) 16633 return r 16634 }(), Fdl: func() (r struct{ Fdad Ush }) { 16635 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16636 return r 16637 }()}, 16638 {Ffc: func() (r struct{ Ffreq Ush }) { 16639 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26) 16640 return r 16641 }(), Fdl: func() (r struct{ Fdad Ush }) { 16642 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16643 return r 16644 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16645 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(154) 16646 return r 16647 }(), Fdl: func() (r struct{ Fdad Ush }) { 16648 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16649 return r 16650 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16651 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(90) 16652 return r 16653 }(), Fdl: func() (r struct{ Fdad Ush }) { 16654 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16655 return r 16656 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16657 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(218) 16658 return r 16659 }(), Fdl: func() (r struct{ Fdad Ush }) { 16660 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16661 return r 16662 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16663 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(58) 16664 return r 16665 }(), Fdl: func() (r struct{ Fdad Ush }) { 16666 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16667 return r 16668 }()}, 16669 {Ffc: func() (r struct{ Ffreq Ush }) { 16670 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(186) 16671 return r 16672 }(), Fdl: func() (r struct{ Fdad Ush }) { 16673 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16674 return r 16675 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16676 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(122) 16677 return r 16678 }(), Fdl: func() (r struct{ Fdad Ush }) { 16679 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16680 return r 16681 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16682 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(250) 16683 return r 16684 }(), Fdl: func() (r struct{ Fdad Ush }) { 16685 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16686 return r 16687 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16688 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6) 16689 return r 16690 }(), Fdl: func() (r struct{ Fdad Ush }) { 16691 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16692 return r 16693 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16694 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(134) 16695 return r 16696 }(), Fdl: func() (r struct{ Fdad Ush }) { 16697 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16698 return r 16699 }()}, 16700 {Ffc: func() (r struct{ Ffreq Ush }) { 16701 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(70) 16702 return r 16703 }(), Fdl: func() (r struct{ Fdad Ush }) { 16704 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16705 return r 16706 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16707 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(198) 16708 return r 16709 }(), Fdl: func() (r struct{ Fdad Ush }) { 16710 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16711 return r 16712 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16713 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(38) 16714 return r 16715 }(), Fdl: func() (r struct{ Fdad Ush }) { 16716 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16717 return r 16718 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16719 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(166) 16720 return r 16721 }(), Fdl: func() (r struct{ Fdad Ush }) { 16722 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16723 return r 16724 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16725 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(102) 16726 return r 16727 }(), Fdl: func() (r struct{ Fdad Ush }) { 16728 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16729 return r 16730 }()}, 16731 {Ffc: func() (r struct{ Ffreq Ush }) { 16732 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(230) 16733 return r 16734 }(), Fdl: func() (r struct{ Fdad Ush }) { 16735 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16736 return r 16737 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16738 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22) 16739 return r 16740 }(), Fdl: func() (r struct{ Fdad Ush }) { 16741 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16742 return r 16743 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16744 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(150) 16745 return r 16746 }(), Fdl: func() (r struct{ Fdad Ush }) { 16747 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16748 return r 16749 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16750 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(86) 16751 return r 16752 }(), Fdl: func() (r struct{ Fdad Ush }) { 16753 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16754 return r 16755 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16756 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(214) 16757 return r 16758 }(), Fdl: func() (r struct{ Fdad Ush }) { 16759 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16760 return r 16761 }()}, 16762 {Ffc: func() (r struct{ Ffreq Ush }) { 16763 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(54) 16764 return r 16765 }(), Fdl: func() (r struct{ Fdad Ush }) { 16766 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16767 return r 16768 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16769 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(182) 16770 return r 16771 }(), Fdl: func() (r struct{ Fdad Ush }) { 16772 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16773 return r 16774 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16775 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(118) 16776 return r 16777 }(), Fdl: func() (r struct{ Fdad Ush }) { 16778 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16779 return r 16780 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16781 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(246) 16782 return r 16783 }(), Fdl: func() (r struct{ Fdad Ush }) { 16784 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16785 return r 16786 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16787 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14) 16788 return r 16789 }(), Fdl: func() (r struct{ Fdad Ush }) { 16790 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16791 return r 16792 }()}, 16793 {Ffc: func() (r struct{ Ffreq Ush }) { 16794 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(142) 16795 return r 16796 }(), Fdl: func() (r struct{ Fdad Ush }) { 16797 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16798 return r 16799 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16800 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(78) 16801 return r 16802 }(), Fdl: func() (r struct{ Fdad Ush }) { 16803 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16804 return r 16805 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16806 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(206) 16807 return r 16808 }(), Fdl: func() (r struct{ Fdad Ush }) { 16809 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16810 return r 16811 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16812 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(46) 16813 return r 16814 }(), Fdl: func() (r struct{ Fdad Ush }) { 16815 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16816 return r 16817 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16818 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(174) 16819 return r 16820 }(), Fdl: func() (r struct{ Fdad Ush }) { 16821 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16822 return r 16823 }()}, 16824 {Ffc: func() (r struct{ Ffreq Ush }) { 16825 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(110) 16826 return r 16827 }(), Fdl: func() (r struct{ Fdad Ush }) { 16828 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16829 return r 16830 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16831 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(238) 16832 return r 16833 }(), Fdl: func() (r struct{ Fdad Ush }) { 16834 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16835 return r 16836 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16837 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30) 16838 return r 16839 }(), Fdl: func() (r struct{ Fdad Ush }) { 16840 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16841 return r 16842 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16843 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(158) 16844 return r 16845 }(), Fdl: func() (r struct{ Fdad Ush }) { 16846 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16847 return r 16848 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16849 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(94) 16850 return r 16851 }(), Fdl: func() (r struct{ Fdad Ush }) { 16852 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16853 return r 16854 }()}, 16855 {Ffc: func() (r struct{ Ffreq Ush }) { 16856 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(222) 16857 return r 16858 }(), Fdl: func() (r struct{ Fdad Ush }) { 16859 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16860 return r 16861 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16862 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(62) 16863 return r 16864 }(), Fdl: func() (r struct{ Fdad Ush }) { 16865 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16866 return r 16867 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16868 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(190) 16869 return r 16870 }(), Fdl: func() (r struct{ Fdad Ush }) { 16871 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16872 return r 16873 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16874 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(126) 16875 return r 16876 }(), Fdl: func() (r struct{ Fdad Ush }) { 16877 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16878 return r 16879 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16880 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(254) 16881 return r 16882 }(), Fdl: func() (r struct{ Fdad Ush }) { 16883 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16884 return r 16885 }()}, 16886 {Ffc: func() (r struct{ Ffreq Ush }) { 16887 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1) 16888 return r 16889 }(), Fdl: func() (r struct{ Fdad Ush }) { 16890 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16891 return r 16892 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16893 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(129) 16894 return r 16895 }(), Fdl: func() (r struct{ Fdad Ush }) { 16896 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16897 return r 16898 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16899 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(65) 16900 return r 16901 }(), Fdl: func() (r struct{ Fdad Ush }) { 16902 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16903 return r 16904 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16905 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(193) 16906 return r 16907 }(), Fdl: func() (r struct{ Fdad Ush }) { 16908 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16909 return r 16910 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16911 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(33) 16912 return r 16913 }(), Fdl: func() (r struct{ Fdad Ush }) { 16914 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16915 return r 16916 }()}, 16917 {Ffc: func() (r struct{ Ffreq Ush }) { 16918 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(161) 16919 return r 16920 }(), Fdl: func() (r struct{ Fdad Ush }) { 16921 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16922 return r 16923 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16924 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(97) 16925 return r 16926 }(), Fdl: func() (r struct{ Fdad Ush }) { 16927 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16928 return r 16929 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16930 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(225) 16931 return r 16932 }(), Fdl: func() (r struct{ Fdad Ush }) { 16933 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16934 return r 16935 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16936 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17) 16937 return r 16938 }(), Fdl: func() (r struct{ Fdad Ush }) { 16939 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16940 return r 16941 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16942 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(145) 16943 return r 16944 }(), Fdl: func() (r struct{ Fdad Ush }) { 16945 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16946 return r 16947 }()}, 16948 {Ffc: func() (r struct{ Ffreq Ush }) { 16949 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(81) 16950 return r 16951 }(), Fdl: func() (r struct{ Fdad Ush }) { 16952 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16953 return r 16954 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16955 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(209) 16956 return r 16957 }(), Fdl: func() (r struct{ Fdad Ush }) { 16958 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16959 return r 16960 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16961 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(49) 16962 return r 16963 }(), Fdl: func() (r struct{ Fdad Ush }) { 16964 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16965 return r 16966 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16967 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(177) 16968 return r 16969 }(), Fdl: func() (r struct{ Fdad Ush }) { 16970 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16971 return r 16972 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16973 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(113) 16974 return r 16975 }(), Fdl: func() (r struct{ Fdad Ush }) { 16976 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16977 return r 16978 }()}, 16979 {Ffc: func() (r struct{ Ffreq Ush }) { 16980 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(241) 16981 return r 16982 }(), Fdl: func() (r struct{ Fdad Ush }) { 16983 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16984 return r 16985 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16986 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 16987 return r 16988 }(), Fdl: func() (r struct{ Fdad Ush }) { 16989 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16990 return r 16991 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16992 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(137) 16993 return r 16994 }(), Fdl: func() (r struct{ Fdad Ush }) { 16995 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 16996 return r 16997 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 16998 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(73) 16999 return r 17000 }(), Fdl: func() (r struct{ Fdad Ush }) { 17001 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17002 return r 17003 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17004 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(201) 17005 return r 17006 }(), Fdl: func() (r struct{ Fdad Ush }) { 17007 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17008 return r 17009 }()}, 17010 {Ffc: func() (r struct{ Ffreq Ush }) { 17011 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(41) 17012 return r 17013 }(), Fdl: func() (r struct{ Fdad Ush }) { 17014 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17015 return r 17016 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17017 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(169) 17018 return r 17019 }(), Fdl: func() (r struct{ Fdad Ush }) { 17020 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17021 return r 17022 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17023 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(105) 17024 return r 17025 }(), Fdl: func() (r struct{ Fdad Ush }) { 17026 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17027 return r 17028 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17029 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(233) 17030 return r 17031 }(), Fdl: func() (r struct{ Fdad Ush }) { 17032 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17033 return r 17034 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17035 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25) 17036 return r 17037 }(), Fdl: func() (r struct{ Fdad Ush }) { 17038 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17039 return r 17040 }()}, 17041 {Ffc: func() (r struct{ Ffreq Ush }) { 17042 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(153) 17043 return r 17044 }(), Fdl: func() (r struct{ Fdad Ush }) { 17045 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17046 return r 17047 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17048 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(89) 17049 return r 17050 }(), Fdl: func() (r struct{ Fdad Ush }) { 17051 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17052 return r 17053 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17054 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(217) 17055 return r 17056 }(), Fdl: func() (r struct{ Fdad Ush }) { 17057 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17058 return r 17059 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17060 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(57) 17061 return r 17062 }(), Fdl: func() (r struct{ Fdad Ush }) { 17063 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17064 return r 17065 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17066 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(185) 17067 return r 17068 }(), Fdl: func() (r struct{ Fdad Ush }) { 17069 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17070 return r 17071 }()}, 17072 {Ffc: func() (r struct{ Ffreq Ush }) { 17073 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(121) 17074 return r 17075 }(), Fdl: func() (r struct{ Fdad Ush }) { 17076 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17077 return r 17078 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17079 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(249) 17080 return r 17081 }(), Fdl: func() (r struct{ Fdad Ush }) { 17082 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17083 return r 17084 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17085 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 17086 return r 17087 }(), Fdl: func() (r struct{ Fdad Ush }) { 17088 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17089 return r 17090 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17091 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(133) 17092 return r 17093 }(), Fdl: func() (r struct{ Fdad Ush }) { 17094 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17095 return r 17096 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17097 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(69) 17098 return r 17099 }(), Fdl: func() (r struct{ Fdad Ush }) { 17100 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17101 return r 17102 }()}, 17103 {Ffc: func() (r struct{ Ffreq Ush }) { 17104 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(197) 17105 return r 17106 }(), Fdl: func() (r struct{ Fdad Ush }) { 17107 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17108 return r 17109 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17110 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(37) 17111 return r 17112 }(), Fdl: func() (r struct{ Fdad Ush }) { 17113 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17114 return r 17115 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17116 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(165) 17117 return r 17118 }(), Fdl: func() (r struct{ Fdad Ush }) { 17119 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17120 return r 17121 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17122 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(101) 17123 return r 17124 }(), Fdl: func() (r struct{ Fdad Ush }) { 17125 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17126 return r 17127 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17128 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(229) 17129 return r 17130 }(), Fdl: func() (r struct{ Fdad Ush }) { 17131 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17132 return r 17133 }()}, 17134 {Ffc: func() (r struct{ Ffreq Ush }) { 17135 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21) 17136 return r 17137 }(), Fdl: func() (r struct{ Fdad Ush }) { 17138 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17139 return r 17140 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17141 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(149) 17142 return r 17143 }(), Fdl: func() (r struct{ Fdad Ush }) { 17144 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17145 return r 17146 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17147 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(85) 17148 return r 17149 }(), Fdl: func() (r struct{ Fdad Ush }) { 17150 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17151 return r 17152 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17153 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(213) 17154 return r 17155 }(), Fdl: func() (r struct{ Fdad Ush }) { 17156 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17157 return r 17158 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17159 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(53) 17160 return r 17161 }(), Fdl: func() (r struct{ Fdad Ush }) { 17162 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17163 return r 17164 }()}, 17165 {Ffc: func() (r struct{ Ffreq Ush }) { 17166 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(181) 17167 return r 17168 }(), Fdl: func() (r struct{ Fdad Ush }) { 17169 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17170 return r 17171 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17172 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(117) 17173 return r 17174 }(), Fdl: func() (r struct{ Fdad Ush }) { 17175 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17176 return r 17177 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17178 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(245) 17179 return r 17180 }(), Fdl: func() (r struct{ Fdad Ush }) { 17181 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17182 return r 17183 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17184 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13) 17185 return r 17186 }(), Fdl: func() (r struct{ Fdad Ush }) { 17187 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17188 return r 17189 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17190 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(141) 17191 return r 17192 }(), Fdl: func() (r struct{ Fdad Ush }) { 17193 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17194 return r 17195 }()}, 17196 {Ffc: func() (r struct{ Ffreq Ush }) { 17197 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(77) 17198 return r 17199 }(), Fdl: func() (r struct{ Fdad Ush }) { 17200 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17201 return r 17202 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17203 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(205) 17204 return r 17205 }(), Fdl: func() (r struct{ Fdad Ush }) { 17206 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17207 return r 17208 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17209 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(45) 17210 return r 17211 }(), Fdl: func() (r struct{ Fdad Ush }) { 17212 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17213 return r 17214 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17215 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(173) 17216 return r 17217 }(), Fdl: func() (r struct{ Fdad Ush }) { 17218 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17219 return r 17220 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17221 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(109) 17222 return r 17223 }(), Fdl: func() (r struct{ Fdad Ush }) { 17224 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17225 return r 17226 }()}, 17227 {Ffc: func() (r struct{ Ffreq Ush }) { 17228 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(237) 17229 return r 17230 }(), Fdl: func() (r struct{ Fdad Ush }) { 17231 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17232 return r 17233 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17234 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29) 17235 return r 17236 }(), Fdl: func() (r struct{ Fdad Ush }) { 17237 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17238 return r 17239 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17240 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(157) 17241 return r 17242 }(), Fdl: func() (r struct{ Fdad Ush }) { 17243 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17244 return r 17245 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17246 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(93) 17247 return r 17248 }(), Fdl: func() (r struct{ Fdad Ush }) { 17249 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17250 return r 17251 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17252 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(221) 17253 return r 17254 }(), Fdl: func() (r struct{ Fdad Ush }) { 17255 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17256 return r 17257 }()}, 17258 {Ffc: func() (r struct{ Ffreq Ush }) { 17259 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(61) 17260 return r 17261 }(), Fdl: func() (r struct{ Fdad Ush }) { 17262 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17263 return r 17264 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17265 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(189) 17266 return r 17267 }(), Fdl: func() (r struct{ Fdad Ush }) { 17268 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17269 return r 17270 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17271 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(125) 17272 return r 17273 }(), Fdl: func() (r struct{ Fdad Ush }) { 17274 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17275 return r 17276 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17277 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(253) 17278 return r 17279 }(), Fdl: func() (r struct{ Fdad Ush }) { 17280 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 17281 return r 17282 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17283 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19) 17284 return r 17285 }(), Fdl: func() (r struct{ Fdad Ush }) { 17286 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17287 return r 17288 }()}, 17289 {Ffc: func() (r struct{ Ffreq Ush }) { 17290 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(275) 17291 return r 17292 }(), Fdl: func() (r struct{ Fdad Ush }) { 17293 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17294 return r 17295 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17296 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(147) 17297 return r 17298 }(), Fdl: func() (r struct{ Fdad Ush }) { 17299 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17300 return r 17301 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17302 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(403) 17303 return r 17304 }(), Fdl: func() (r struct{ Fdad Ush }) { 17305 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17306 return r 17307 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17308 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(83) 17309 return r 17310 }(), Fdl: func() (r struct{ Fdad Ush }) { 17311 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17312 return r 17313 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17314 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(339) 17315 return r 17316 }(), Fdl: func() (r struct{ Fdad Ush }) { 17317 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17318 return r 17319 }()}, 17320 {Ffc: func() (r struct{ Ffreq Ush }) { 17321 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(211) 17322 return r 17323 }(), Fdl: func() (r struct{ Fdad Ush }) { 17324 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17325 return r 17326 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17327 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(467) 17328 return r 17329 }(), Fdl: func() (r struct{ Fdad Ush }) { 17330 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17331 return r 17332 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17333 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(51) 17334 return r 17335 }(), Fdl: func() (r struct{ Fdad Ush }) { 17336 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17337 return r 17338 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17339 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(307) 17340 return r 17341 }(), Fdl: func() (r struct{ Fdad Ush }) { 17342 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17343 return r 17344 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17345 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(179) 17346 return r 17347 }(), Fdl: func() (r struct{ Fdad Ush }) { 17348 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17349 return r 17350 }()}, 17351 {Ffc: func() (r struct{ Ffreq Ush }) { 17352 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(435) 17353 return r 17354 }(), Fdl: func() (r struct{ Fdad Ush }) { 17355 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17356 return r 17357 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17358 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(115) 17359 return r 17360 }(), Fdl: func() (r struct{ Fdad Ush }) { 17361 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17362 return r 17363 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17364 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(371) 17365 return r 17366 }(), Fdl: func() (r struct{ Fdad Ush }) { 17367 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17368 return r 17369 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17370 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(243) 17371 return r 17372 }(), Fdl: func() (r struct{ Fdad Ush }) { 17373 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17374 return r 17375 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17376 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(499) 17377 return r 17378 }(), Fdl: func() (r struct{ Fdad Ush }) { 17379 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17380 return r 17381 }()}, 17382 {Ffc: func() (r struct{ Ffreq Ush }) { 17383 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11) 17384 return r 17385 }(), Fdl: func() (r struct{ Fdad Ush }) { 17386 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17387 return r 17388 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17389 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(267) 17390 return r 17391 }(), Fdl: func() (r struct{ Fdad Ush }) { 17392 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17393 return r 17394 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17395 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(139) 17396 return r 17397 }(), Fdl: func() (r struct{ Fdad Ush }) { 17398 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17399 return r 17400 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17401 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(395) 17402 return r 17403 }(), Fdl: func() (r struct{ Fdad Ush }) { 17404 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17405 return r 17406 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17407 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(75) 17408 return r 17409 }(), Fdl: func() (r struct{ Fdad Ush }) { 17410 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17411 return r 17412 }()}, 17413 {Ffc: func() (r struct{ Ffreq Ush }) { 17414 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(331) 17415 return r 17416 }(), Fdl: func() (r struct{ Fdad Ush }) { 17417 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17418 return r 17419 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17420 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(203) 17421 return r 17422 }(), Fdl: func() (r struct{ Fdad Ush }) { 17423 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17424 return r 17425 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17426 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(459) 17427 return r 17428 }(), Fdl: func() (r struct{ Fdad Ush }) { 17429 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17430 return r 17431 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17432 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(43) 17433 return r 17434 }(), Fdl: func() (r struct{ Fdad Ush }) { 17435 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17436 return r 17437 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17438 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(299) 17439 return r 17440 }(), Fdl: func() (r struct{ Fdad Ush }) { 17441 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17442 return r 17443 }()}, 17444 {Ffc: func() (r struct{ Ffreq Ush }) { 17445 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(171) 17446 return r 17447 }(), Fdl: func() (r struct{ Fdad Ush }) { 17448 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17449 return r 17450 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17451 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(427) 17452 return r 17453 }(), Fdl: func() (r struct{ Fdad Ush }) { 17454 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17455 return r 17456 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17457 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(107) 17458 return r 17459 }(), Fdl: func() (r struct{ Fdad Ush }) { 17460 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17461 return r 17462 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17463 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(363) 17464 return r 17465 }(), Fdl: func() (r struct{ Fdad Ush }) { 17466 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17467 return r 17468 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17469 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(235) 17470 return r 17471 }(), Fdl: func() (r struct{ Fdad Ush }) { 17472 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17473 return r 17474 }()}, 17475 {Ffc: func() (r struct{ Ffreq Ush }) { 17476 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(491) 17477 return r 17478 }(), Fdl: func() (r struct{ Fdad Ush }) { 17479 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17480 return r 17481 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17482 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27) 17483 return r 17484 }(), Fdl: func() (r struct{ Fdad Ush }) { 17485 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17486 return r 17487 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17488 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(283) 17489 return r 17490 }(), Fdl: func() (r struct{ Fdad Ush }) { 17491 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17492 return r 17493 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17494 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(155) 17495 return r 17496 }(), Fdl: func() (r struct{ Fdad Ush }) { 17497 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17498 return r 17499 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17500 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(411) 17501 return r 17502 }(), Fdl: func() (r struct{ Fdad Ush }) { 17503 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17504 return r 17505 }()}, 17506 {Ffc: func() (r struct{ Ffreq Ush }) { 17507 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(91) 17508 return r 17509 }(), Fdl: func() (r struct{ Fdad Ush }) { 17510 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17511 return r 17512 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17513 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(347) 17514 return r 17515 }(), Fdl: func() (r struct{ Fdad Ush }) { 17516 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17517 return r 17518 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17519 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(219) 17520 return r 17521 }(), Fdl: func() (r struct{ Fdad Ush }) { 17522 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17523 return r 17524 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17525 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(475) 17526 return r 17527 }(), Fdl: func() (r struct{ Fdad Ush }) { 17528 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17529 return r 17530 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17531 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(59) 17532 return r 17533 }(), Fdl: func() (r struct{ Fdad Ush }) { 17534 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17535 return r 17536 }()}, 17537 {Ffc: func() (r struct{ Ffreq Ush }) { 17538 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(315) 17539 return r 17540 }(), Fdl: func() (r struct{ Fdad Ush }) { 17541 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17542 return r 17543 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17544 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(187) 17545 return r 17546 }(), Fdl: func() (r struct{ Fdad Ush }) { 17547 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17548 return r 17549 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17550 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(443) 17551 return r 17552 }(), Fdl: func() (r struct{ Fdad Ush }) { 17553 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17554 return r 17555 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17556 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(123) 17557 return r 17558 }(), Fdl: func() (r struct{ Fdad Ush }) { 17559 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17560 return r 17561 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17562 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(379) 17563 return r 17564 }(), Fdl: func() (r struct{ Fdad Ush }) { 17565 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17566 return r 17567 }()}, 17568 {Ffc: func() (r struct{ Ffreq Ush }) { 17569 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(251) 17570 return r 17571 }(), Fdl: func() (r struct{ Fdad Ush }) { 17572 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17573 return r 17574 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17575 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(507) 17576 return r 17577 }(), Fdl: func() (r struct{ Fdad Ush }) { 17578 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17579 return r 17580 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17581 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17582 return r 17583 }(), Fdl: func() (r struct{ Fdad Ush }) { 17584 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17585 return r 17586 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17587 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(263) 17588 return r 17589 }(), Fdl: func() (r struct{ Fdad Ush }) { 17590 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17591 return r 17592 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17593 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(135) 17594 return r 17595 }(), Fdl: func() (r struct{ Fdad Ush }) { 17596 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17597 return r 17598 }()}, 17599 {Ffc: func() (r struct{ Ffreq Ush }) { 17600 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(391) 17601 return r 17602 }(), Fdl: func() (r struct{ Fdad Ush }) { 17603 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17604 return r 17605 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17606 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(71) 17607 return r 17608 }(), Fdl: func() (r struct{ Fdad Ush }) { 17609 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17610 return r 17611 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17612 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(327) 17613 return r 17614 }(), Fdl: func() (r struct{ Fdad Ush }) { 17615 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17616 return r 17617 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17618 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(199) 17619 return r 17620 }(), Fdl: func() (r struct{ Fdad Ush }) { 17621 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17622 return r 17623 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17624 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(455) 17625 return r 17626 }(), Fdl: func() (r struct{ Fdad Ush }) { 17627 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17628 return r 17629 }()}, 17630 {Ffc: func() (r struct{ Ffreq Ush }) { 17631 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(39) 17632 return r 17633 }(), Fdl: func() (r struct{ Fdad Ush }) { 17634 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17635 return r 17636 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17637 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(295) 17638 return r 17639 }(), Fdl: func() (r struct{ Fdad Ush }) { 17640 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17641 return r 17642 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17643 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(167) 17644 return r 17645 }(), Fdl: func() (r struct{ Fdad Ush }) { 17646 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17647 return r 17648 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17649 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(423) 17650 return r 17651 }(), Fdl: func() (r struct{ Fdad Ush }) { 17652 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17653 return r 17654 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17655 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(103) 17656 return r 17657 }(), Fdl: func() (r struct{ Fdad Ush }) { 17658 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17659 return r 17660 }()}, 17661 {Ffc: func() (r struct{ Ffreq Ush }) { 17662 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(359) 17663 return r 17664 }(), Fdl: func() (r struct{ Fdad Ush }) { 17665 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17666 return r 17667 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17668 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(231) 17669 return r 17670 }(), Fdl: func() (r struct{ Fdad Ush }) { 17671 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17672 return r 17673 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17674 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(487) 17675 return r 17676 }(), Fdl: func() (r struct{ Fdad Ush }) { 17677 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17678 return r 17679 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17680 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23) 17681 return r 17682 }(), Fdl: func() (r struct{ Fdad Ush }) { 17683 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17684 return r 17685 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17686 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(279) 17687 return r 17688 }(), Fdl: func() (r struct{ Fdad Ush }) { 17689 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17690 return r 17691 }()}, 17692 {Ffc: func() (r struct{ Ffreq Ush }) { 17693 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(151) 17694 return r 17695 }(), Fdl: func() (r struct{ Fdad Ush }) { 17696 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17697 return r 17698 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17699 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(407) 17700 return r 17701 }(), Fdl: func() (r struct{ Fdad Ush }) { 17702 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17703 return r 17704 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17705 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(87) 17706 return r 17707 }(), Fdl: func() (r struct{ Fdad Ush }) { 17708 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17709 return r 17710 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17711 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(343) 17712 return r 17713 }(), Fdl: func() (r struct{ Fdad Ush }) { 17714 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17715 return r 17716 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17717 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(215) 17718 return r 17719 }(), Fdl: func() (r struct{ Fdad Ush }) { 17720 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17721 return r 17722 }()}, 17723 {Ffc: func() (r struct{ Ffreq Ush }) { 17724 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(471) 17725 return r 17726 }(), Fdl: func() (r struct{ Fdad Ush }) { 17727 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17728 return r 17729 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17730 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(55) 17731 return r 17732 }(), Fdl: func() (r struct{ Fdad Ush }) { 17733 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17734 return r 17735 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17736 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(311) 17737 return r 17738 }(), Fdl: func() (r struct{ Fdad Ush }) { 17739 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17740 return r 17741 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17742 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(183) 17743 return r 17744 }(), Fdl: func() (r struct{ Fdad Ush }) { 17745 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17746 return r 17747 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17748 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(439) 17749 return r 17750 }(), Fdl: func() (r struct{ Fdad Ush }) { 17751 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17752 return r 17753 }()}, 17754 {Ffc: func() (r struct{ Ffreq Ush }) { 17755 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(119) 17756 return r 17757 }(), Fdl: func() (r struct{ Fdad Ush }) { 17758 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17759 return r 17760 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17761 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(375) 17762 return r 17763 }(), Fdl: func() (r struct{ Fdad Ush }) { 17764 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17765 return r 17766 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17767 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(247) 17768 return r 17769 }(), Fdl: func() (r struct{ Fdad Ush }) { 17770 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17771 return r 17772 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17773 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(503) 17774 return r 17775 }(), Fdl: func() (r struct{ Fdad Ush }) { 17776 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17777 return r 17778 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17779 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(15) 17780 return r 17781 }(), Fdl: func() (r struct{ Fdad Ush }) { 17782 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17783 return r 17784 }()}, 17785 {Ffc: func() (r struct{ Ffreq Ush }) { 17786 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(271) 17787 return r 17788 }(), Fdl: func() (r struct{ Fdad Ush }) { 17789 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17790 return r 17791 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17792 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(143) 17793 return r 17794 }(), Fdl: func() (r struct{ Fdad Ush }) { 17795 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17796 return r 17797 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17798 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(399) 17799 return r 17800 }(), Fdl: func() (r struct{ Fdad Ush }) { 17801 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17802 return r 17803 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17804 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(79) 17805 return r 17806 }(), Fdl: func() (r struct{ Fdad Ush }) { 17807 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17808 return r 17809 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17810 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(335) 17811 return r 17812 }(), Fdl: func() (r struct{ Fdad Ush }) { 17813 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17814 return r 17815 }()}, 17816 {Ffc: func() (r struct{ Ffreq Ush }) { 17817 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(207) 17818 return r 17819 }(), Fdl: func() (r struct{ Fdad Ush }) { 17820 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17821 return r 17822 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17823 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(463) 17824 return r 17825 }(), Fdl: func() (r struct{ Fdad Ush }) { 17826 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17827 return r 17828 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17829 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(47) 17830 return r 17831 }(), Fdl: func() (r struct{ Fdad Ush }) { 17832 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17833 return r 17834 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17835 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(303) 17836 return r 17837 }(), Fdl: func() (r struct{ Fdad Ush }) { 17838 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17839 return r 17840 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17841 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(175) 17842 return r 17843 }(), Fdl: func() (r struct{ Fdad Ush }) { 17844 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17845 return r 17846 }()}, 17847 {Ffc: func() (r struct{ Ffreq Ush }) { 17848 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(431) 17849 return r 17850 }(), Fdl: func() (r struct{ Fdad Ush }) { 17851 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17852 return r 17853 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17854 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(111) 17855 return r 17856 }(), Fdl: func() (r struct{ Fdad Ush }) { 17857 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17858 return r 17859 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17860 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(367) 17861 return r 17862 }(), Fdl: func() (r struct{ Fdad Ush }) { 17863 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17864 return r 17865 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17866 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(239) 17867 return r 17868 }(), Fdl: func() (r struct{ Fdad Ush }) { 17869 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17870 return r 17871 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17872 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(495) 17873 return r 17874 }(), Fdl: func() (r struct{ Fdad Ush }) { 17875 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17876 return r 17877 }()}, 17878 {Ffc: func() (r struct{ Ffreq Ush }) { 17879 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(31) 17880 return r 17881 }(), Fdl: func() (r struct{ Fdad Ush }) { 17882 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17883 return r 17884 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17885 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(287) 17886 return r 17887 }(), Fdl: func() (r struct{ Fdad Ush }) { 17888 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17889 return r 17890 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17891 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(159) 17892 return r 17893 }(), Fdl: func() (r struct{ Fdad Ush }) { 17894 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17895 return r 17896 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17897 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(415) 17898 return r 17899 }(), Fdl: func() (r struct{ Fdad Ush }) { 17900 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17901 return r 17902 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17903 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(95) 17904 return r 17905 }(), Fdl: func() (r struct{ Fdad Ush }) { 17906 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17907 return r 17908 }()}, 17909 {Ffc: func() (r struct{ Ffreq Ush }) { 17910 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(351) 17911 return r 17912 }(), Fdl: func() (r struct{ Fdad Ush }) { 17913 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17914 return r 17915 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17916 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(223) 17917 return r 17918 }(), Fdl: func() (r struct{ Fdad Ush }) { 17919 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17920 return r 17921 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17922 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(479) 17923 return r 17924 }(), Fdl: func() (r struct{ Fdad Ush }) { 17925 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17926 return r 17927 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17928 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(63) 17929 return r 17930 }(), Fdl: func() (r struct{ Fdad Ush }) { 17931 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17932 return r 17933 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17934 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(319) 17935 return r 17936 }(), Fdl: func() (r struct{ Fdad Ush }) { 17937 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17938 return r 17939 }()}, 17940 {Ffc: func() (r struct{ Ffreq Ush }) { 17941 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(191) 17942 return r 17943 }(), Fdl: func() (r struct{ Fdad Ush }) { 17944 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17945 return r 17946 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17947 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(447) 17948 return r 17949 }(), Fdl: func() (r struct{ Fdad Ush }) { 17950 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17951 return r 17952 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17953 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(127) 17954 return r 17955 }(), Fdl: func() (r struct{ Fdad Ush }) { 17956 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17957 return r 17958 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17959 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(383) 17960 return r 17961 }(), Fdl: func() (r struct{ Fdad Ush }) { 17962 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17963 return r 17964 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17965 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(255) 17966 return r 17967 }(), Fdl: func() (r struct{ Fdad Ush }) { 17968 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17969 return r 17970 }()}, 17971 {Ffc: func() (r struct{ Ffreq Ush }) { 17972 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(511) 17973 return r 17974 }(), Fdl: func() (r struct{ Fdad Ush }) { 17975 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 17976 return r 17977 }()}, {Fdl: func() (r struct{ Fdad Ush }) { 17978 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17979 return r 17980 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17981 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(64) 17982 return r 17983 }(), Fdl: func() (r struct{ Fdad Ush }) { 17984 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17985 return r 17986 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17987 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(32) 17988 return r 17989 }(), Fdl: func() (r struct{ Fdad Ush }) { 17990 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17991 return r 17992 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 17993 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(96) 17994 return r 17995 }(), Fdl: func() (r struct{ Fdad Ush }) { 17996 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 17997 return r 17998 }()}, 17999 {Ffc: func() (r struct{ Ffreq Ush }) { 18000 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16) 18001 return r 18002 }(), Fdl: func() (r struct{ Fdad Ush }) { 18003 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18004 return r 18005 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18006 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(80) 18007 return r 18008 }(), Fdl: func() (r struct{ Fdad Ush }) { 18009 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18010 return r 18011 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18012 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(48) 18013 return r 18014 }(), Fdl: func() (r struct{ Fdad Ush }) { 18015 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18016 return r 18017 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18018 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(112) 18019 return r 18020 }(), Fdl: func() (r struct{ Fdad Ush }) { 18021 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18022 return r 18023 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18024 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18025 return r 18026 }(), Fdl: func() (r struct{ Fdad Ush }) { 18027 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18028 return r 18029 }()}, 18030 {Ffc: func() (r struct{ Ffreq Ush }) { 18031 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(72) 18032 return r 18033 }(), Fdl: func() (r struct{ Fdad Ush }) { 18034 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18035 return r 18036 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18037 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(40) 18038 return r 18039 }(), Fdl: func() (r struct{ Fdad Ush }) { 18040 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18041 return r 18042 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18043 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(104) 18044 return r 18045 }(), Fdl: func() (r struct{ Fdad Ush }) { 18046 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18047 return r 18048 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18049 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24) 18050 return r 18051 }(), Fdl: func() (r struct{ Fdad Ush }) { 18052 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18053 return r 18054 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18055 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(88) 18056 return r 18057 }(), Fdl: func() (r struct{ Fdad Ush }) { 18058 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18059 return r 18060 }()}, 18061 {Ffc: func() (r struct{ Ffreq Ush }) { 18062 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(56) 18063 return r 18064 }(), Fdl: func() (r struct{ Fdad Ush }) { 18065 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18066 return r 18067 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18068 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(120) 18069 return r 18070 }(), Fdl: func() (r struct{ Fdad Ush }) { 18071 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18072 return r 18073 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18074 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4) 18075 return r 18076 }(), Fdl: func() (r struct{ Fdad Ush }) { 18077 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18078 return r 18079 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18080 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(68) 18081 return r 18082 }(), Fdl: func() (r struct{ Fdad Ush }) { 18083 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18084 return r 18085 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18086 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(36) 18087 return r 18088 }(), Fdl: func() (r struct{ Fdad Ush }) { 18089 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18090 return r 18091 }()}, 18092 {Ffc: func() (r struct{ Ffreq Ush }) { 18093 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(100) 18094 return r 18095 }(), Fdl: func() (r struct{ Fdad Ush }) { 18096 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18097 return r 18098 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18099 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20) 18100 return r 18101 }(), Fdl: func() (r struct{ Fdad Ush }) { 18102 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18103 return r 18104 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18105 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(84) 18106 return r 18107 }(), Fdl: func() (r struct{ Fdad Ush }) { 18108 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18109 return r 18110 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18111 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(52) 18112 return r 18113 }(), Fdl: func() (r struct{ Fdad Ush }) { 18114 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18115 return r 18116 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18117 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(116) 18118 return r 18119 }(), Fdl: func() (r struct{ Fdad Ush }) { 18120 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18121 return r 18122 }()}, 18123 {Ffc: func() (r struct{ Ffreq Ush }) { 18124 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3) 18125 return r 18126 }(), Fdl: func() (r struct{ Fdad Ush }) { 18127 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18128 return r 18129 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18130 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(131) 18131 return r 18132 }(), Fdl: func() (r struct{ Fdad Ush }) { 18133 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18134 return r 18135 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18136 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(67) 18137 return r 18138 }(), Fdl: func() (r struct{ Fdad Ush }) { 18139 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18140 return r 18141 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18142 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(195) 18143 return r 18144 }(), Fdl: func() (r struct{ Fdad Ush }) { 18145 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18146 return r 18147 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18148 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(35) 18149 return r 18150 }(), Fdl: func() (r struct{ Fdad Ush }) { 18151 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18152 return r 18153 }()}, 18154 {Ffc: func() (r struct{ Ffreq Ush }) { 18155 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(163) 18156 return r 18157 }(), Fdl: func() (r struct{ Fdad Ush }) { 18158 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18159 return r 18160 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18161 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(99) 18162 return r 18163 }(), Fdl: func() (r struct{ Fdad Ush }) { 18164 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18165 return r 18166 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18167 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(227) 18168 return r 18169 }(), Fdl: func() (r struct{ Fdad Ush }) { 18170 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18171 return r 18172 }()}} /* trees.h:3:21 */ 18173 18174 var static_dtree = [30]Ct_data{{Fdl: func() (r struct{ Fdad Ush }) { 18175 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18176 return r 18177 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18178 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16) 18179 return r 18180 }(), Fdl: func() (r struct{ Fdad Ush }) { 18181 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18182 return r 18183 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18184 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8) 18185 return r 18186 }(), Fdl: func() (r struct{ Fdad Ush }) { 18187 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18188 return r 18189 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18190 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24) 18191 return r 18192 }(), Fdl: func() (r struct{ Fdad Ush }) { 18193 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18194 return r 18195 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18196 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4) 18197 return r 18198 }(), Fdl: func() (r struct{ Fdad Ush }) { 18199 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18200 return r 18201 }()}, 18202 {Ffc: func() (r struct{ Ffreq Ush }) { 18203 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20) 18204 return r 18205 }(), Fdl: func() (r struct{ Fdad Ush }) { 18206 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18207 return r 18208 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18209 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12) 18210 return r 18211 }(), Fdl: func() (r struct{ Fdad Ush }) { 18212 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18213 return r 18214 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18215 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28) 18216 return r 18217 }(), Fdl: func() (r struct{ Fdad Ush }) { 18218 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18219 return r 18220 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18221 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2) 18222 return r 18223 }(), Fdl: func() (r struct{ Fdad Ush }) { 18224 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18225 return r 18226 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18227 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18) 18228 return r 18229 }(), Fdl: func() (r struct{ Fdad Ush }) { 18230 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18231 return r 18232 }()}, 18233 {Ffc: func() (r struct{ Ffreq Ush }) { 18234 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10) 18235 return r 18236 }(), Fdl: func() (r struct{ Fdad Ush }) { 18237 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18238 return r 18239 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18240 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26) 18241 return r 18242 }(), Fdl: func() (r struct{ Fdad Ush }) { 18243 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18244 return r 18245 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18246 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6) 18247 return r 18248 }(), Fdl: func() (r struct{ Fdad Ush }) { 18249 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18250 return r 18251 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18252 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22) 18253 return r 18254 }(), Fdl: func() (r struct{ Fdad Ush }) { 18255 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18256 return r 18257 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18258 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14) 18259 return r 18260 }(), Fdl: func() (r struct{ Fdad Ush }) { 18261 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18262 return r 18263 }()}, 18264 {Ffc: func() (r struct{ Ffreq Ush }) { 18265 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30) 18266 return r 18267 }(), Fdl: func() (r struct{ Fdad Ush }) { 18268 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18269 return r 18270 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18271 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1) 18272 return r 18273 }(), Fdl: func() (r struct{ Fdad Ush }) { 18274 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18275 return r 18276 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18277 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17) 18278 return r 18279 }(), Fdl: func() (r struct{ Fdad Ush }) { 18280 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18281 return r 18282 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18283 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9) 18284 return r 18285 }(), Fdl: func() (r struct{ Fdad Ush }) { 18286 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18287 return r 18288 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18289 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25) 18290 return r 18291 }(), Fdl: func() (r struct{ Fdad Ush }) { 18292 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18293 return r 18294 }()}, 18295 {Ffc: func() (r struct{ Ffreq Ush }) { 18296 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18297 return r 18298 }(), Fdl: func() (r struct{ Fdad Ush }) { 18299 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18300 return r 18301 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18302 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21) 18303 return r 18304 }(), Fdl: func() (r struct{ Fdad Ush }) { 18305 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18306 return r 18307 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18308 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13) 18309 return r 18310 }(), Fdl: func() (r struct{ Fdad Ush }) { 18311 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18312 return r 18313 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18314 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29) 18315 return r 18316 }(), Fdl: func() (r struct{ Fdad Ush }) { 18317 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18318 return r 18319 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18320 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3) 18321 return r 18322 }(), Fdl: func() (r struct{ Fdad Ush }) { 18323 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18324 return r 18325 }()}, 18326 {Ffc: func() (r struct{ Ffreq Ush }) { 18327 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19) 18328 return r 18329 }(), Fdl: func() (r struct{ Fdad Ush }) { 18330 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18331 return r 18332 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18333 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11) 18334 return r 18335 }(), Fdl: func() (r struct{ Fdad Ush }) { 18336 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18337 return r 18338 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18339 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27) 18340 return r 18341 }(), Fdl: func() (r struct{ Fdad Ush }) { 18342 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18343 return r 18344 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18345 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7) 18346 return r 18347 }(), Fdl: func() (r struct{ Fdad Ush }) { 18348 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18349 return r 18350 }()}, {Ffc: func() (r struct{ Ffreq Ush }) { 18351 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23) 18352 return r 18353 }(), Fdl: func() (r struct{ Fdad Ush }) { 18354 *(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5) 18355 return r 18356 }()}} /* trees.h:64:21 */ 18357 18358 var X_dist_code = [512]Uch{ 18359 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), 18360 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), 18361 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), 18362 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), 18363 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), 18364 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), 18365 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), 18366 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), 18367 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), 18368 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), 18369 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), 18370 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), 18371 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), 18372 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), 18373 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), 18374 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), 18375 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), 18376 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), 18377 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), 18378 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), 18379 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), 18380 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), 18381 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), 18382 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), 18383 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), 18384 Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), 18385 } /* trees.h:73:25 */ 18386 18387 var X_length_code = [256]Uch{ 18388 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), 18389 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), 18390 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), 18391 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), 18392 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), 18393 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), 18394 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), 18395 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), 18396 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), 18397 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), 18398 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), 18399 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), 18400 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), 18401 } /* trees.h:102:25 */ 18402 18403 var base_length = [29]int32{ 18404 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 18405 64, 80, 96, 112, 128, 160, 192, 224, 0, 18406 } /* trees.h:118:17 */ 18407 18408 var base_dist = [30]int32{ 18409 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 18410 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 18411 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576, 18412 } /* trees.h:123:17 */ 18413 18414 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 */ 18415 18416 var static_d_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Felems: D_CODES, Fmax_length: MAX_BITS} /* trees.c:128:31 */ 18417 18418 var static_bl_desc = Static_tree_desc{Fextra_bits: 0, Felems: BL_CODES, Fmax_length: MAX_BL_BITS} /* trees.c:131:31 */ 18419 18420 // Send a code of the given tree. c and tree must not have side effects 18421 18422 // =========================================================================== 18423 // Output a short LSB first on the stream. 18424 // IN assertion: there is enough room in pendingBuf. 18425 18426 // =========================================================================== 18427 // Send a value on a given number of bits. 18428 // IN assertion: length <= 16 and value fits in length bits. 18429 18430 // the arguments must not have side effects 18431 18432 // =========================================================================== 18433 // Initialize the various 'constant' tables. 18434 func tr_static_init(tls *libc.TLS) { /* trees.c:232:12: */ 18435 } 18436 18437 // =========================================================================== 18438 // Genererate the file trees.h describing the static trees. 18439 18440 // =========================================================================== 18441 // Initialize the tree data structures for a new zlib stream. 18442 func X_tr_init(tls *libc.TLS, s uintptr) { /* trees.c:379:20: */ 18443 tr_static_init(tls) 18444 18445 (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fdyn_tree = s + 212 /* &.dyn_ltree */ 18446 (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_l_desc)) 18447 18448 (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fdyn_tree = s + 2504 /* &.dyn_dtree */ 18449 (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_d_desc)) 18450 18451 (*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fdyn_tree = s + 2748 /* &.bl_tree */ 18452 (*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_bl_desc)) 18453 18454 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 18455 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 18456 18457 // Initialize the first block of the first file: 18458 init_block(tls, s) 18459 } 18460 18461 // =========================================================================== 18462 // Initialize a new block. 18463 func init_block(tls *libc.TLS, s uintptr) { /* trees.c:407:12: */ 18464 var n int32 // iterates over tree elements 18465 18466 // Initialize the trees. 18467 for n = 0; n < LITERALS+1+LENGTH_CODES; n++ { 18468 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(n)*4)) = Ush(0) 18469 } 18470 for n = 0; n < D_CODES; n++ { 18471 *(*Ush)(unsafe.Pointer(s + 2504 + uintptr(n)*4)) = Ush(0) 18472 } 18473 for n = 0; n < BL_CODES; n++ { 18474 *(*Ush)(unsafe.Pointer(s + 2748 + uintptr(n)*4)) = Ush(0) 18475 } 18476 18477 *(*Ush)(unsafe.Pointer(s + 212 + 256*4)) = Ush(1) 18478 (*Deflate_state)(unsafe.Pointer(s)).Fopt_len = libc.AssignPtrUint64(s+5920, uint64(0)) 18479 (*Deflate_state)(unsafe.Pointer(s)).Flast_lit = libc.AssignPtrUint32(s+5928, UInt(0)) 18480 } 18481 18482 // Index within the heap array of least frequent node in the Huffman tree 18483 18484 // =========================================================================== 18485 // Remove the smallest element from the heap and recreate the heap with 18486 // one less element. Updates heap and heap_len. 18487 18488 // =========================================================================== 18489 // Compares to subtrees, using the tree depth as tie breaker when 18490 // the subtrees have equal frequency. This minimizes the worst case length. 18491 18492 // =========================================================================== 18493 // Restore the heap property by moving down the tree starting at node k, 18494 // exchanging a node with the smallest of its two sons if necessary, stopping 18495 // when the heap property is re-established (each father smaller than its 18496 // two sons). 18497 func pqdownheap(tls *libc.TLS, s uintptr, tree uintptr, k int32) { /* trees.c:451:12: */ 18498 var v int32 = *(*int32)(unsafe.Pointer(s + 3008 + uintptr(k)*4)) 18499 var j int32 = k << 1 // left son of k 18500 for j <= (*Deflate_state)(unsafe.Pointer(s)).Fheap_len { 18501 // Set j to the smallest of the two sons: 18502 if j < (*Deflate_state)(unsafe.Pointer(s)).Fheap_len && (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j+1)*4)))*4))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j)*4)))*4))) || int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j+1)*4)))*4))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j)*4)))*4))) && int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j+1)*4)))))) <= int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j)*4))))))) { 18503 j++ 18504 } 18505 // Exit if v is smaller than both sons 18506 if int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j)*4)))*4))) || int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j)*4)))*4))) && int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(v)))) <= int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr(j)*4)))))) { 18507 break 18508 } 18509 18510 // Exchange v with the smallest son 18511 *(*int32)(unsafe.Pointer(s + 3008 + uintptr(k)*4)) = *(*int32)(unsafe.Pointer(s + 3008 + uintptr(j)*4)) 18512 k = j 18513 18514 // And continue down the tree, setting j to the left son of k 18515 j <<= 1 18516 } 18517 *(*int32)(unsafe.Pointer(s + 3008 + uintptr(k)*4)) = v 18518 } 18519 18520 // =========================================================================== 18521 // Compute the optimal bit lengths for a tree and update the total bit length 18522 // for the current block. 18523 // IN assertion: the fields freq and dad are set, heap[heap_max] and 18524 // above are the tree nodes sorted by increasing frequency. 18525 // OUT assertions: the field len is set to the optimal bit length, the 18526 // array bl_count contains the frequencies for each bit length. 18527 // The length opt_len is updated; static_len is also updated if stree is 18528 // not null. 18529 func gen_bitlen(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:486:12: */ 18530 var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree 18531 var max_code int32 = (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code 18532 var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree 18533 var extra uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_bits 18534 var base int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_base 18535 var max_length int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fmax_length 18536 var h int32 // heap index 18537 var n int32 18538 var m int32 // iterate over the tree elements 18539 var bits int32 // bit length 18540 var xbits int32 // extra bits 18541 var f Ush // frequency 18542 var overflow int32 = 0 // number of elements with bit length too large 18543 18544 for bits = 0; bits <= MAX_BITS; bits++ { 18545 *(*Ush)(unsafe.Pointer(s + 2976 + uintptr(bits)*2)) = Ush(0) 18546 } 18547 18548 // In a first pass, compute the optimal bit lengths (which may 18549 // overflow in the case of the bit length tree). 18550 *(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer(s + 3008 + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fheap_max)*4)))*4 + 2)) = Ush(0) // root of the heap 18551 18552 for h = (*Deflate_state)(unsafe.Pointer(s)).Fheap_max + 1; h < 2*(LITERALS+1+LENGTH_CODES)+1; h++ { 18553 n = *(*int32)(unsafe.Pointer(s + 3008 + uintptr(h)*4)) 18554 bits = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2)))*4 + 2))) + 1 18555 if bits > max_length { 18556 bits = max_length 18557 overflow++ 18558 } 18559 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2)) = Ush(bits) 18560 // We overwrite tree[n].Dad which is no longer needed 18561 18562 if n > max_code { 18563 continue 18564 } // not a leaf node 18565 18566 *(*Ush)(unsafe.Pointer(s + 2976 + uintptr(bits)*2))++ 18567 xbits = 0 18568 if n >= base { 18569 xbits = *(*Intf)(unsafe.Pointer(extra + uintptr(n-base)*4)) 18570 } 18571 f = *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4)) 18572 *(*Ulg)(unsafe.Pointer(s + 5912)) += Ulg(f) * Ulg(uint32(bits+xbits)) 18573 if stree != 0 { 18574 *(*Ulg)(unsafe.Pointer(s + 5920)) += Ulg(f) * Ulg(uint32(int32(*(*Ush)(unsafe.Pointer(stree + uintptr(n)*4 + 2)))+xbits)) 18575 } 18576 } 18577 if overflow == 0 { 18578 return 18579 } 18580 18581 // This happens for example on obj2 and pic of the Calgary corpus 18582 18583 // Find the first bit length which could increase: 18584 for __ccgo := true; __ccgo; __ccgo = overflow > 0 { 18585 bits = max_length - 1 18586 for int32(*(*Ush)(unsafe.Pointer(s + 2976 + uintptr(bits)*2))) == 0 { 18587 bits-- 18588 } 18589 *(*Ush)(unsafe.Pointer(s + 2976 + uintptr(bits)*2))-- // move one leaf down the tree 18590 *(*Ush)(unsafe.Pointer(s + 2976 + uintptr(bits+1)*2)) += Ush(2) // move one overflow item as its brother 18591 *(*Ush)(unsafe.Pointer(s + 2976 + uintptr(max_length)*2))-- 18592 // The brother of the overflow item also moves one step up, 18593 // but this does not affect bl_count[max_length] 18594 overflow = overflow - 2 18595 } 18596 18597 // Now recompute all bit lengths, scanning in increasing frequency. 18598 // h is still equal to HEAP_SIZE. (It is simpler to reconstruct all 18599 // lengths instead of fixing only the wrong ones. This idea is taken 18600 // from 'ar' written by Haruhiko Okumura.) 18601 for bits = max_length; bits != 0; bits-- { 18602 n = int32(*(*Ush)(unsafe.Pointer(s + 2976 + uintptr(bits)*2))) 18603 for n != 0 { 18604 m = *(*int32)(unsafe.Pointer(s + 3008 + uintptr(libc.PreDecInt32(&h, 1))*4)) 18605 if m > max_code { 18606 continue 18607 } 18608 if uint32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2))) != uint32(bits) { 18609 18610 *(*Ulg)(unsafe.Pointer(s + 5912)) += (Ulg(bits) - Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2)))) * Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4))) 18611 *(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2)) = Ush(bits) 18612 } 18613 n-- 18614 } 18615 } 18616 } 18617 18618 // =========================================================================== 18619 // Generate the codes for a given tree and bit counts (which need not be 18620 // optimal). 18621 // IN assertion: the array bl_count contains the bit length statistics for 18622 // the given tree and the field len is set for all tree elements. 18623 // OUT assertion: the field code is set for all tree elements of non 18624 // zero code length. 18625 func gen_codes(tls *libc.TLS, tree uintptr, max_code int32, bl_count uintptr) { /* trees.c:572:12: */ 18626 bp := tls.Alloc(32) 18627 defer tls.Free(32) 18628 18629 // var next_code [16]Ush at bp, 32 18630 // next code value for each bit length 18631 var code uint32 = uint32(0) // running code value 18632 var bits int32 // bit index 18633 var n int32 // code index 18634 18635 // The distribution counts are first used to generate the code values 18636 // without bit reversal. 18637 for bits = 1; bits <= MAX_BITS; bits++ { 18638 code = (code + uint32(*(*Ushf)(unsafe.Pointer(bl_count + uintptr(bits-1)*2)))) << 1 18639 *(*Ush)(unsafe.Pointer(bp + uintptr(bits)*2)) = Ush(code) 18640 } 18641 // Check that the bit counts in bl_count are consistent. The last code 18642 // must be all ones. 18643 18644 for n = 0; n <= max_code; n++ { 18645 var len int32 = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2))) 18646 if len == 0 { 18647 continue 18648 } 18649 // Now reverse the bits 18650 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4)) = Ush(bi_reverse(tls, uint32(libc.PostIncUint16(&*(*Ush)(unsafe.Pointer(bp + uintptr(len)*2)), 1)), len)) 18651 18652 } 18653 } 18654 18655 // =========================================================================== 18656 // Construct one Huffman tree and assigns the code bit strings and lengths. 18657 // Update the total bit length for the current block. 18658 // IN assertion: the field freq is set for all tree elements. 18659 // OUT assertions: the fields len and code are set to the optimal bit length 18660 // and corresponding code. The length opt_len is updated; static_len is 18661 // also updated if stree is not null. The field max_code is set. 18662 func build_tree(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:615:12: */ 18663 var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree 18664 var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree 18665 var elems int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Felems 18666 var n int32 18667 var m int32 // iterate over heap elements 18668 var max_code int32 = -1 // largest code with non zero frequency 18669 var node int32 // new node being created 18670 18671 // Construct the initial heap, with least frequent element in 18672 // heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. 18673 // heap[0] is not used. 18674 (*Deflate_state)(unsafe.Pointer(s)).Fheap_len = 0 18675 (*Deflate_state)(unsafe.Pointer(s)).Fheap_max = 2*(LITERALS+1+LENGTH_CODES) + 1 18676 18677 for n = 0; n < elems; n++ { 18678 if int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4))) != 0 { 18679 *(*int32)(unsafe.Pointer(s + 3008 + uintptr(libc.PreIncInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_len, 1))*4)) = libc.AssignInt32(&max_code, n) 18680 *(*Uch)(unsafe.Pointer(s + 5308 + uintptr(n))) = Uch(0) 18681 } else { 18682 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2)) = Ush(0) 18683 } 18684 } 18685 18686 // The pkzip format requires that at least one distance code exists, 18687 // and that at least one bit should be sent even if there is only one 18688 // possible code. So to avoid special checks later on we force at least 18689 // two codes of non zero frequency. 18690 for (*Deflate_state)(unsafe.Pointer(s)).Fheap_len < 2 { 18691 node = libc.AssignPtrInt32(s+3008+uintptr(libc.PreIncInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_len, 1))*4, func() int32 { 18692 if max_code < 2 { 18693 return libc.PreIncInt32(&max_code, 1) 18694 } 18695 return 0 18696 }()) 18697 *(*Ush)(unsafe.Pointer(tree + uintptr(node)*4)) = Ush(1) 18698 *(*Uch)(unsafe.Pointer(s + 5308 + uintptr(node))) = Uch(0) 18699 (*Deflate_state)(unsafe.Pointer(s)).Fopt_len-- 18700 if stree != 0 { 18701 *(*Ulg)(unsafe.Pointer(s + 5920)) -= Ulg(*(*Ush)(unsafe.Pointer(stree + uintptr(node)*4 + 2))) 18702 } 18703 // node is 0 or 1 so it does not have extra bits 18704 } 18705 (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code = max_code 18706 18707 // The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, 18708 // establish sub-heaps of increasing lengths: 18709 for n = (*Deflate_state)(unsafe.Pointer(s)).Fheap_len / 2; n >= 1; n-- { 18710 pqdownheap(tls, s, tree, n) 18711 } 18712 18713 // Construct the Huffman tree by repeatedly combining the least two 18714 // frequent nodes. 18715 node = elems // next internal node of the tree 18716 for __ccgo := true; __ccgo; __ccgo = (*Deflate_state)(unsafe.Pointer(s)).Fheap_len >= 2 { 18717 { 18718 n = *(*int32)(unsafe.Pointer(s + 3008 + 1*4)) 18719 *(*int32)(unsafe.Pointer(s + 3008 + 1*4)) = *(*int32)(unsafe.Pointer(s + 3008 + uintptr(libc.PostDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_len, 1))*4)) 18720 pqdownheap(tls, s, tree, SMALLEST) 18721 } 18722 // n = node of least frequency 18723 m = *(*int32)(unsafe.Pointer(s + 3008 + 1*4)) // m = node of next least frequency 18724 18725 *(*int32)(unsafe.Pointer(s + 3008 + uintptr(libc.PreDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_max, 1))*4)) = n // keep the nodes sorted by frequency 18726 *(*int32)(unsafe.Pointer(s + 3008 + uintptr(libc.PreDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_max, 1))*4)) = m 18727 18728 // Create a new node father of n and m 18729 *(*Ush)(unsafe.Pointer(tree + uintptr(node)*4)) = Ush(int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4))) + int32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4)))) 18730 *(*Uch)(unsafe.Pointer(s + 5308 + uintptr(node))) = Uch(func() int32 { 18731 if int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(n)))) >= int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(m)))) { 18732 return int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(n)))) 18733 } 18734 return int32(*(*Uch)(unsafe.Pointer(s + 5308 + uintptr(m)))) 18735 }() + 1) 18736 *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2)) = libc.AssignPtrUint16(tree+uintptr(m)*4+2, Ush(node)) 18737 // and insert the new node in the heap 18738 *(*int32)(unsafe.Pointer(s + 3008 + 1*4)) = libc.PostIncInt32(&node, 1) 18739 pqdownheap(tls, s, tree, SMALLEST) 18740 18741 } 18742 18743 *(*int32)(unsafe.Pointer(s + 3008 + uintptr(libc.PreDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_max, 1))*4)) = *(*int32)(unsafe.Pointer(s + 3008 + 1*4)) 18744 18745 // At this point, the fields freq and dad are set. We can now 18746 // generate the bit lengths. 18747 gen_bitlen(tls, s, desc) 18748 18749 // The field len is now set, we can generate the bit codes 18750 gen_codes(tls, tree, max_code, s+2976) 18751 } 18752 18753 // =========================================================================== 18754 // Scan a literal or distance tree to determine the frequencies of the codes 18755 // in the bit length tree. 18756 func scan_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:703:12: */ 18757 var n int32 // iterates over all tree elements 18758 var prevlen int32 = -1 // last emitted length 18759 var curlen int32 // length of current code 18760 var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2))) // length of next code 18761 var count int32 = 0 // repeat count of the current code 18762 var max_count int32 = 7 // max repeat count 18763 var min_count int32 = 4 // min repeat count 18764 18765 if nextlen == 0 { 18766 max_count = 138 18767 min_count = 3 18768 } 18769 *(*Ush)(unsafe.Pointer(tree + uintptr(max_code+1)*4 + 2)) = Ush(0xffff) // guard 18770 18771 for n = 0; n <= max_code; n++ { 18772 curlen = nextlen 18773 nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n+1)*4 + 2))) 18774 if libc.PreIncInt32(&count, 1) < max_count && curlen == nextlen { 18775 continue 18776 } else if count < min_count { 18777 *(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4)) += Ush(count) 18778 } else if curlen != 0 { 18779 if curlen != prevlen { 18780 *(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4))++ 18781 } 18782 *(*Ush)(unsafe.Pointer(s + 2748 + 16*4))++ 18783 } else if count <= 10 { 18784 *(*Ush)(unsafe.Pointer(s + 2748 + 17*4))++ 18785 } else { 18786 *(*Ush)(unsafe.Pointer(s + 2748 + 18*4))++ 18787 } 18788 count = 0 18789 prevlen = curlen 18790 if nextlen == 0 { 18791 max_count = 138 18792 min_count = 3 18793 } else if curlen == nextlen { 18794 max_count = 6 18795 min_count = 3 18796 } else { 18797 max_count = 7 18798 min_count = 4 18799 } 18800 } 18801 } 18802 18803 // =========================================================================== 18804 // Send a literal or distance tree in compressed form, using the codes in 18805 // bl_tree. 18806 func send_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:748:12: */ 18807 var n int32 // iterates over all tree elements 18808 var prevlen int32 = -1 // last emitted length 18809 var curlen int32 // length of current code 18810 var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2))) // length of next code 18811 var count int32 = 0 // repeat count of the current code 18812 var max_count int32 = 7 // max repeat count 18813 var min_count int32 = 4 // min repeat count 18814 18815 /* tree[max_code+1].Len = -1; */ // guard already set 18816 if nextlen == 0 { 18817 max_count = 138 18818 min_count = 3 18819 } 18820 18821 for n = 0; n <= max_code; n++ { 18822 curlen = nextlen 18823 nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n+1)*4 + 2))) 18824 if libc.PreIncInt32(&count, 1) < max_count && curlen == nextlen { 18825 continue 18826 } else if count < min_count { 18827 for __ccgo := true; __ccgo; __ccgo = libc.PreDecInt32(&count, 1) != 0 { 18828 { 18829 var len int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4 + 2))) 18830 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18831 var val int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4))) 18832 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18833 { 18834 { 18835 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18836 } 18837 { 18838 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18839 } 18840 18841 } 18842 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18843 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 18844 } else { 18845 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18846 *(*int32)(unsafe.Pointer(s + 5940)) += len 18847 } 18848 } 18849 } 18850 18851 } else if curlen != 0 { 18852 if curlen != prevlen { 18853 { 18854 var len int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4 + 2))) 18855 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18856 var val int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4))) 18857 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18858 { 18859 { 18860 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18861 } 18862 { 18863 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18864 } 18865 18866 } 18867 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18868 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 18869 } else { 18870 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(curlen)*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18871 *(*int32)(unsafe.Pointer(s + 5940)) += len 18872 } 18873 } 18874 count-- 18875 } 18876 18877 { 18878 var len int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + 16*4 + 2))) 18879 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18880 var val int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + 16*4))) 18881 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18882 { 18883 { 18884 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18885 } 18886 { 18887 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18888 } 18889 18890 } 18891 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18892 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 18893 } else { 18894 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(s + 2748 + 16*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18895 *(*int32)(unsafe.Pointer(s + 5940)) += len 18896 } 18897 } 18898 { 18899 var len int32 = 2 18900 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18901 var val int32 = count - 3 18902 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18903 { 18904 { 18905 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18906 } 18907 { 18908 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18909 } 18910 18911 } 18912 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18913 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 18914 } else { 18915 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(count-3)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18916 *(*int32)(unsafe.Pointer(s + 5940)) += len 18917 } 18918 } 18919 18920 } else if count <= 10 { 18921 { 18922 var len int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + 17*4 + 2))) 18923 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18924 var val int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + 17*4))) 18925 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18926 { 18927 { 18928 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18929 } 18930 { 18931 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18932 } 18933 18934 } 18935 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18936 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 18937 } else { 18938 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(s + 2748 + 17*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18939 *(*int32)(unsafe.Pointer(s + 5940)) += len 18940 } 18941 } 18942 { 18943 var len int32 = 3 18944 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18945 var val int32 = count - 3 18946 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18947 { 18948 { 18949 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18950 } 18951 { 18952 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18953 } 18954 18955 } 18956 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18957 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 18958 } else { 18959 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(count-3)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18960 *(*int32)(unsafe.Pointer(s + 5940)) += len 18961 } 18962 } 18963 18964 } else { 18965 { 18966 var len int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + 18*4 + 2))) 18967 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18968 var val int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + 18*4))) 18969 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18970 { 18971 { 18972 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18973 } 18974 { 18975 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18976 } 18977 18978 } 18979 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 18980 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 18981 } else { 18982 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(s + 2748 + 18*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18983 *(*int32)(unsafe.Pointer(s + 5940)) += len 18984 } 18985 } 18986 { 18987 var len int32 = 7 18988 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 18989 var val int32 = count - 11 18990 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 18991 { 18992 { 18993 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 18994 } 18995 { 18996 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 18997 } 18998 18999 } 19000 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19001 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19002 } else { 19003 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(count-11)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19004 *(*int32)(unsafe.Pointer(s + 5940)) += len 19005 } 19006 } 19007 19008 } 19009 count = 0 19010 prevlen = curlen 19011 if nextlen == 0 { 19012 max_count = 138 19013 min_count = 3 19014 } else if curlen == nextlen { 19015 max_count = 6 19016 min_count = 3 19017 } else { 19018 max_count = 7 19019 min_count = 4 19020 } 19021 } 19022 } 19023 19024 // =========================================================================== 19025 // Construct the Huffman tree for the bit lengths and return the index in 19026 // bl_order of the last bit length code to send. 19027 func build_bl_tree(tls *libc.TLS, s uintptr) int32 { /* trees.c:799:11: */ 19028 var max_blindex int32 // index of last bit length code of non zero freq 19029 19030 // Determine the bit length frequencies for literal and distance trees 19031 scan_tree(tls, s, s+212 /* &.dyn_ltree */, (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code) 19032 scan_tree(tls, s, s+2504 /* &.dyn_dtree */, (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code) 19033 19034 // Build the bit length tree: 19035 build_tree(tls, s, s+2952) 19036 // opt_len now includes the length of the tree representations, except 19037 // the lengths of the bit lengths codes and the 5+5+4 bits for the counts. 19038 19039 // Determine the number of bit length codes to send. The pkzip format 19040 // requires that at least 4 bit length codes be sent. (appnote.txt says 19041 // 3 but the actual value used is 4.) 19042 for max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex-- { 19043 if int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(bl_order[max_blindex])*4 + 2))) != 0 { 19044 break 19045 } 19046 } 19047 // Update opt_len to include the bit length tree and counts 19048 *(*Ulg)(unsafe.Pointer(s + 5912)) += uint64(3)*(Ulg(max_blindex)+uint64(1)) + uint64(5) + uint64(5) + uint64(4) 19049 19050 return max_blindex 19051 } 19052 19053 // =========================================================================== 19054 // Send the header for a block using dynamic Huffman trees: the counts, the 19055 // lengths of the bit length codes, the literal tree and the distance tree. 19056 // IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. 19057 func send_all_trees(tls *libc.TLS, s uintptr, lcodes int32, dcodes int32, blcodes int32) { /* trees.c:834:12: */ 19058 var rank int32 // index in bl_order 19059 19060 { 19061 var len int32 = 5 19062 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19063 var val int32 = lcodes - 257 19064 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19065 { 19066 { 19067 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19068 } 19069 { 19070 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19071 } 19072 19073 } 19074 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19075 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19076 } else { 19077 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(lcodes-257)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19078 *(*int32)(unsafe.Pointer(s + 5940)) += len 19079 } 19080 } 19081 /* not +255 as stated in appnote.txt */ 19082 { 19083 var len int32 = 5 19084 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19085 var val int32 = dcodes - 1 19086 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19087 { 19088 { 19089 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19090 } 19091 { 19092 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19093 } 19094 19095 } 19096 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19097 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19098 } else { 19099 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(dcodes-1)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19100 *(*int32)(unsafe.Pointer(s + 5940)) += len 19101 } 19102 } 19103 19104 { 19105 var len int32 = 4 19106 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19107 var val int32 = blcodes - 4 19108 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19109 { 19110 { 19111 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19112 } 19113 { 19114 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19115 } 19116 19117 } 19118 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19119 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19120 } else { 19121 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(blcodes-4)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19122 *(*int32)(unsafe.Pointer(s + 5940)) += len 19123 } 19124 } 19125 // not -3 as stated in appnote.txt 19126 for rank = 0; rank < blcodes; rank++ { 19127 19128 { 19129 var len int32 = 3 19130 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19131 var val int32 = int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(bl_order[rank])*4 + 2))) 19132 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19133 { 19134 { 19135 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19136 } 19137 { 19138 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19139 } 19140 19141 } 19142 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19143 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19144 } else { 19145 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(s + 2748 + uintptr(bl_order[rank])*4 + 2))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19146 *(*int32)(unsafe.Pointer(s + 5940)) += len 19147 } 19148 } 19149 19150 } 19151 19152 send_tree(tls, s, s+212 /* &.dyn_ltree */, lcodes-1) // literal tree 19153 19154 send_tree(tls, s, s+2504 /* &.dyn_dtree */, dcodes-1) // distance tree 19155 19156 } 19157 19158 // =========================================================================== 19159 // Send a stored block 19160 func X_tr_stored_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:863:20: */ 19161 { 19162 var len int32 = 3 19163 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19164 var val int32 = int32(STORED_BLOCK)<<1 + last 19165 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19166 { 19167 { 19168 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19169 } 19170 { 19171 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19172 } 19173 19174 } 19175 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19176 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19177 } else { 19178 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(int32(STORED_BLOCK)<<1+last)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19179 *(*int32)(unsafe.Pointer(s + 5940)) += len 19180 } 19181 } 19182 // send block type 19183 bi_windup(tls, s) /* align on byte boundary */ 19184 { 19185 { 19186 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32(Ush(stored_len)) & 0xff) 19187 } 19188 { 19189 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32(Ush(stored_len)) >> 8) 19190 } 19191 19192 } 19193 19194 { 19195 { 19196 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32(Ush(^stored_len)) & 0xff) 19197 } 19198 { 19199 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32(Ush(^stored_len)) >> 8) 19200 } 19201 19202 } 19203 19204 libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf+uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending), buf, stored_len) 19205 *(*Ulg)(unsafe.Pointer(s + 40)) += stored_len 19206 } 19207 19208 // =========================================================================== 19209 // Flush the bits in the bit buffer to pending output (leaves at most 7 bits) 19210 func X_tr_flush_bits(tls *libc.TLS, s uintptr) { /* trees.c:886:20: */ 19211 bi_flush(tls, s) 19212 } 19213 19214 // =========================================================================== 19215 // Send one empty static block to give enough lookahead for inflate. 19216 // This takes 10 bits, of which 7 may remain in the bit buffer. 19217 func X_tr_align(tls *libc.TLS, s uintptr) { /* trees.c:896:20: */ 19218 { 19219 var len int32 = 3 19220 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19221 var val int32 = int32(STATIC_TREES) << 1 19222 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19223 { 19224 { 19225 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19226 } 19227 { 19228 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19229 } 19230 19231 } 19232 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19233 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19234 } else { 19235 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(int32(Ush(int32(STATIC_TREES)<<1))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19236 *(*int32)(unsafe.Pointer(s + 5940)) += len 19237 } 19238 } 19239 19240 { 19241 var len int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 + 2))) 19242 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19243 var val int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4))) 19244 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19245 { 19246 { 19247 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19248 } 19249 { 19250 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19251 } 19252 19253 } 19254 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19255 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19256 } else { 19257 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19258 *(*int32)(unsafe.Pointer(s + 5940)) += len 19259 } 19260 } 19261 19262 bi_flush(tls, s) 19263 } 19264 19265 // =========================================================================== 19266 // Determine the best encoding for the current block: dynamic trees, static 19267 // trees or store, and write out the encoded block. 19268 func X_tr_flush_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:911:20: */ 19269 var opt_lenb Ulg 19270 var static_lenb Ulg // opt_len and static_len in bytes 19271 var max_blindex int32 = 0 // index of last bit length code of non zero freq 19272 19273 // Build the Huffman trees unless a stored block is forced 19274 if (*Deflate_state)(unsafe.Pointer(s)).Flevel > 0 { 19275 19276 // Check if the file is binary or text 19277 if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type == Z_UNKNOWN { 19278 (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type = detect_data_type(tls, s) 19279 } 19280 19281 // Construct the literal and distance trees 19282 build_tree(tls, s, s+2904) 19283 19284 build_tree(tls, s, s+2928) 19285 19286 // At this point, opt_len and static_len are the total bit lengths of 19287 // the compressed block data, excluding the tree representations. 19288 19289 // Build the bit length tree for the above two trees, and get the index 19290 // in bl_order of the last bit length code to send. 19291 max_blindex = build_bl_tree(tls, s) 19292 19293 // Determine the best encoding. Compute the block lengths in bytes. 19294 opt_lenb = ((*Deflate_state)(unsafe.Pointer(s)).Fopt_len + uint64(3) + uint64(7)) >> 3 19295 static_lenb = ((*Deflate_state)(unsafe.Pointer(s)).Fstatic_len + uint64(3) + uint64(7)) >> 3 19296 19297 if static_lenb <= opt_lenb { 19298 opt_lenb = static_lenb 19299 } 19300 19301 } else { 19302 19303 opt_lenb = libc.AssignUint64(&static_lenb, stored_len+uint64(5)) // force a stored block 19304 } 19305 19306 if stored_len+uint64(4) <= opt_lenb && buf != uintptr(0) { 19307 // 4: two words for the lengths 19308 // The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. 19309 // Otherwise we can't have processed more than WSIZE input bytes since 19310 // the last block flush, because compression would have been 19311 // successful. If LIT_BUFSIZE <= WSIZE, it is never too late to 19312 // transform a block into a stored block. 19313 X_tr_stored_block(tls, s, buf, stored_len, last) 19314 19315 } else if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FIXED || static_lenb == opt_lenb { 19316 { 19317 var len int32 = 3 19318 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19319 var val int32 = int32(STATIC_TREES)<<1 + last 19320 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19321 { 19322 { 19323 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19324 } 19325 { 19326 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19327 } 19328 19329 } 19330 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19331 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19332 } else { 19333 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(int32(STATIC_TREES)<<1+last)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19334 *(*int32)(unsafe.Pointer(s + 5940)) += len 19335 } 19336 } 19337 19338 compress_block(tls, s, uintptr(uintptr(unsafe.Pointer(&static_ltree))), 19339 uintptr(uintptr(unsafe.Pointer(&static_dtree)))) 19340 } else { 19341 { 19342 var len int32 = 3 19343 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19344 var val int32 = int32(DYN_TREES)<<1 + last 19345 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19346 { 19347 { 19348 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19349 } 19350 { 19351 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19352 } 19353 19354 } 19355 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19356 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19357 } else { 19358 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(int32(DYN_TREES)<<1+last)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19359 *(*int32)(unsafe.Pointer(s + 5940)) += len 19360 } 19361 } 19362 19363 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, 19364 max_blindex+1) 19365 compress_block(tls, s, s+212, /* &.dyn_ltree */ 19366 s+2504 /* &.dyn_dtree */) 19367 } 19368 19369 // The above check is made mod 2^32, for files larger than 512 MB 19370 // and uLong implemented on 32 bits. 19371 init_block(tls, s) 19372 19373 if last != 0 { 19374 bi_windup(tls, s) 19375 } 19376 19377 } 19378 19379 // =========================================================================== 19380 // Save the match info and tally the frequency counts. Return true if 19381 // the current block must be flushed. 19382 func X_tr_tally(tls *libc.TLS, s uintptr, dist uint32, lc uint32) int32 { /* trees.c:1014:19: */ 19383 *(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ush(dist) 19384 *(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = Uch(lc) 19385 if dist == uint32(0) { 19386 // lc is the unmatched char 19387 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(lc)*4))++ 19388 } else { 19389 (*Deflate_state)(unsafe.Pointer(s)).Fmatches++ 19390 // Here, lc is the match length - MIN_MATCH 19391 dist-- // dist = match distance - 1 19392 19393 *(*Ush)(unsafe.Pointer(s + 212 + uintptr(int32(X_length_code[lc])+LITERALS+1)*4))++ 19394 *(*Ush)(unsafe.Pointer(s + 2504 + uintptr(func() int32 { 19395 if dist < uint32(256) { 19396 return int32(X_dist_code[dist]) 19397 } 19398 return int32(X_dist_code[uint32(256)+dist>>7]) 19399 }())*4))++ 19400 } 19401 19402 return libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize-UInt(1)) 19403 // We avoid equality with lit_bufsize because of wraparound at 64K 19404 // on 16 bit machines and because stored blocks are restricted to 19405 // 64K-1 bytes. 19406 } 19407 19408 // =========================================================================== 19409 // Send the block data compressed using the given Huffman trees 19410 func compress_block(tls *libc.TLS, s uintptr, ltree uintptr, dtree uintptr) { /* trees.c:1064:12: */ 19411 var dist uint32 // distance of matched string 19412 var lc int32 // match length or unmatched char (if dist == 0) 19413 var lx uint32 = uint32(0) // running index in l_buf 19414 var code uint32 // the code to send 19415 var extra int32 // number of extra bits to send 19416 19417 if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != UInt(0) { 19418 for __ccgo := true; __ccgo; __ccgo = lx < (*Deflate_state)(unsafe.Pointer(s)).Flast_lit { 19419 dist = uint32(*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr(lx)*2))) 19420 lc = int32(*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&lx, 1))))) 19421 if dist == uint32(0) { 19422 { 19423 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 + 2))) 19424 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19425 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4))) 19426 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19427 { 19428 { 19429 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19430 } 19431 { 19432 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19433 } 19434 19435 } 19436 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19437 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19438 } else { 19439 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19440 *(*int32)(unsafe.Pointer(s + 5940)) += len 19441 } 19442 } 19443 // send a literal byte 19444 19445 } else { 19446 // Here, lc is the match length - MIN_MATCH 19447 code = uint32(X_length_code[lc]) 19448 { 19449 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(code+uint32(LITERALS)+uint32(1))*4 + 2))) 19450 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19451 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(code+uint32(LITERALS)+uint32(1))*4))) 19452 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19453 { 19454 { 19455 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19456 } 19457 { 19458 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19459 } 19460 19461 } 19462 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19463 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19464 } else { 19465 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(code+uint32(LITERALS)+uint32(1))*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19466 *(*int32)(unsafe.Pointer(s + 5940)) += len 19467 } 19468 } 19469 // send the length code 19470 extra = extra_lbits[code] 19471 if extra != 0 { 19472 lc = lc - base_length[code] 19473 { 19474 var len int32 = extra 19475 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19476 var val int32 = lc 19477 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19478 { 19479 { 19480 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19481 } 19482 { 19483 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19484 } 19485 19486 } 19487 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19488 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19489 } else { 19490 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(lc)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19491 *(*int32)(unsafe.Pointer(s + 5940)) += len 19492 } 19493 } 19494 // send the extra length bits 19495 } 19496 dist-- // dist is now the match distance - 1 19497 code = func() uint32 { 19498 if dist < uint32(256) { 19499 return uint32(X_dist_code[dist]) 19500 } 19501 return uint32(X_dist_code[uint32(256)+dist>>7]) 19502 }() 19503 19504 { 19505 var len int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 + 2))) 19506 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19507 var val int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4))) 19508 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19509 { 19510 { 19511 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19512 } 19513 { 19514 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19515 } 19516 19517 } 19518 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19519 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19520 } else { 19521 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19522 *(*int32)(unsafe.Pointer(s + 5940)) += len 19523 } 19524 } 19525 // send the distance code 19526 extra = extra_dbits[code] 19527 if extra != 0 { 19528 dist = dist - uint32(base_dist[code]) 19529 { 19530 var len int32 = extra 19531 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19532 var val int32 = int32(dist) 19533 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19534 { 19535 { 19536 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19537 } 19538 { 19539 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19540 } 19541 19542 } 19543 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19544 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19545 } else { 19546 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(dist)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19547 *(*int32)(unsafe.Pointer(s + 5940)) += len 19548 } 19549 } 19550 // send the extra distance bits 19551 } 19552 } // literal or match pair ? 19553 19554 // Check that the overlay between pending_buf and d_buf+l_buf is ok: 19555 19556 } 19557 } 19558 19559 { 19560 var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 + 2))) 19561 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > Buf_size-len { 19562 var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4))) 19563 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19564 { 19565 { 19566 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19567 } 19568 { 19569 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19570 } 19571 19572 } 19573 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)) 19574 *(*int32)(unsafe.Pointer(s + 5940)) += len - Buf_size 19575 } else { 19576 *(*Ush)(unsafe.Pointer(s + 5936)) |= Ush(int32(*(*Ush)(unsafe.Pointer(ltree + 256*4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid) 19577 *(*int32)(unsafe.Pointer(s + 5940)) += len 19578 } 19579 } 19580 19581 } 19582 19583 // =========================================================================== 19584 // Check if the data type is TEXT or BINARY, using the following algorithm: 19585 // - TEXT if the two conditions below are satisfied: 19586 // a) There are no non-portable control characters belonging to the 19587 // "black list" (0..6, 14..25, 28..31). 19588 // b) There is at least one printable character belonging to the 19589 // "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). 19590 // - BINARY otherwise. 19591 // - The following partially-portable control characters form a 19592 // "gray list" that is ignored in this detection algorithm: 19593 // (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). 19594 // IN assertion: the fields Freq of dyn_ltree are set. 19595 func detect_data_type(tls *libc.TLS, s uintptr) int32 { /* trees.c:1124:11: */ 19596 // black_mask is the bit mask of black-listed bytes 19597 // set bits 0..6, 14..25, and 28..31 19598 // 0xf3ffc07f = binary 11110011111111111100000001111111 19599 var black_mask uint64 = 0xf3ffc07f 19600 var n int32 19601 19602 // Check for non-textual ("black-listed") bytes. 19603 n = 0 19604 __1: 19605 if !(n <= 31) { 19606 goto __3 19607 } 19608 if black_mask&uint64(1) != 0 && int32(*(*Ush)(unsafe.Pointer(s + 212 + uintptr(n)*4))) != 0 { 19609 return Z_BINARY 19610 } 19611 goto __2 19612 __2: 19613 n++ 19614 black_mask >>= 1 19615 goto __1 19616 goto __3 19617 __3: 19618 ; 19619 19620 // Check for textual ("white-listed") bytes. 19621 if int32(*(*Ush)(unsafe.Pointer(s + 212 + 9*4))) != 0 || int32(*(*Ush)(unsafe.Pointer(s + 212 + 10*4))) != 0 || 19622 int32(*(*Ush)(unsafe.Pointer(s + 212 + 13*4))) != 0 { 19623 return Z_TEXT 19624 } 19625 for n = 32; n < LITERALS; n++ { 19626 if int32(*(*Ush)(unsafe.Pointer(s + 212 + uintptr(n)*4))) != 0 { 19627 return Z_TEXT 19628 } 19629 } 19630 19631 // There are no "black-listed" or "white-listed" bytes: 19632 // this stream either is empty or has tolerated ("gray-listed") bytes only. 19633 return Z_BINARY 19634 } 19635 19636 // =========================================================================== 19637 // Reverse the first len bits of a code, using straightforward code (a faster 19638 // method would use a table) 19639 // IN assertion: 1 <= len <= 15 19640 func bi_reverse(tls *libc.TLS, code uint32, len int32) uint32 { /* trees.c:1158:16: */ 19641 var res uint32 = uint32(0) 19642 for __ccgo := true; __ccgo; __ccgo = libc.PreDecInt32(&len, 1) > 0 { 19643 res = res | code&uint32(1) 19644 code >>= 1 19645 res <<= 1 19646 } 19647 return res >> 1 19648 } 19649 19650 // =========================================================================== 19651 // Flush the bit buffer, keeping at most 7 bits in it. 19652 func bi_flush(tls *libc.TLS, s uintptr) { /* trees.c:1173:12: */ 19653 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid == 16 { 19654 { 19655 { 19656 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19657 } 19658 { 19659 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19660 } 19661 19662 } 19663 19664 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 19665 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 19666 } else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid >= 8 { 19667 { 19668 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) 19669 } 19670 19671 libc.AssignShrPtrUint16(s+5936, int(8)) 19672 *(*int32)(unsafe.Pointer(s + 5940)) -= 8 19673 } 19674 } 19675 19676 // =========================================================================== 19677 // Flush the bit buffer and align the output on a byte boundary 19678 func bi_windup(tls *libc.TLS, s uintptr) { /* trees.c:1190:12: */ 19679 if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 8 { 19680 { 19681 { 19682 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) & 0xff) 19683 } 19684 { 19685 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Uch(int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) >> 8) 19686 } 19687 19688 } 19689 19690 } else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 0 { 19691 { 19692 *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf) 19693 } 19694 19695 } 19696 (*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0) 19697 (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0 19698 } 19699 19700 // =========================================================================== 19701 // Decompresses the source buffer into the destination buffer. *sourceLen is 19702 // the byte length of the source buffer. Upon entry, *destLen is the total size 19703 // of the destination buffer, which must be large enough to hold the entire 19704 // uncompressed data. (The size of the uncompressed data must have been saved 19705 // previously by the compressor and transmitted to the decompressor by some 19706 // mechanism outside the scope of this compression library.) Upon exit, 19707 // *destLen is the size of the decompressed data and *sourceLen is the number 19708 // of source bytes consumed. Upon return, source + *sourceLen points to the 19709 // first unused input byte. 19710 // 19711 // uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough 19712 // memory, Z_BUF_ERROR if there was not enough room in the output buffer, or 19713 // Z_DATA_ERROR if the input data was corrupted, including if the input data is 19714 // an incomplete zlib stream. 19715 func Xuncompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen uintptr) int32 { /* uncompr.c:27:13: */ 19716 bp := tls.Alloc(120) 19717 defer tls.Free(120) 19718 19719 // var stream Z_stream at bp+8, 112 19720 19721 var err int32 19722 var max UInt = libc.Uint32(libc.Uint32FromInt32(-1)) 19723 var len ULong 19724 var left ULong 19725 // var buf [1]Byte at bp, 1 19726 // for detection of incomplete stream when *destLen == 0 19727 19728 len = *(*ULong)(unsafe.Pointer(sourceLen)) 19729 if *(*ULongf)(unsafe.Pointer(destLen)) != 0 { 19730 left = *(*ULongf)(unsafe.Pointer(destLen)) 19731 *(*ULongf)(unsafe.Pointer(destLen)) = uint64(0) 19732 } else { 19733 left = uint64(1) 19734 dest = bp /* &buf[0] */ 19735 } 19736 19737 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fnext_in = source 19738 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in = UInt(0) 19739 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fzalloc = uintptr(0) 19740 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fzfree = uintptr(0) 19741 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fopaque = uintptr(0) 19742 19743 err = XinflateInit_(tls, bp+8, ts, int32(unsafe.Sizeof(Z_stream{}))) 19744 if err != Z_OK { 19745 return err 19746 } 19747 19748 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fnext_out = dest 19749 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out = UInt(0) 19750 19751 for __ccgo := true; __ccgo; __ccgo = err == Z_OK { 19752 if (*Z_stream)(unsafe.Pointer(bp+8)).Favail_out == UInt(0) { 19753 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out = func() uint32 { 19754 if left > ULong(max) { 19755 return max 19756 } 19757 return UInt(left) 19758 }() 19759 left = left - ULong((*Z_stream)(unsafe.Pointer(bp+8)).Favail_out) 19760 } 19761 if (*Z_stream)(unsafe.Pointer(bp+8)).Favail_in == UInt(0) { 19762 (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in = func() uint32 { 19763 if len > ULong(max) { 19764 return max 19765 } 19766 return UInt(len) 19767 }() 19768 len = len - ULong((*Z_stream)(unsafe.Pointer(bp+8)).Favail_in) 19769 } 19770 err = Xinflate(tls, bp+8, Z_NO_FLUSH) 19771 } 19772 19773 *(*ULong)(unsafe.Pointer(sourceLen)) -= len + ULong((*Z_stream)(unsafe.Pointer(bp+8)).Favail_in) 19774 if dest != bp { 19775 *(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Ftotal_out 19776 } else if (*Z_stream)(unsafe.Pointer(bp+8)).Ftotal_out != 0 && err == -5 { 19777 left = uint64(1) 19778 } 19779 19780 XinflateEnd(tls, bp+8) 19781 if err == Z_STREAM_END { 19782 return Z_OK 19783 } 19784 if err == Z_NEED_DICT { 19785 return -3 19786 } 19787 if err == -5 && left+ULong((*Z_stream)(unsafe.Pointer(bp+8)).Favail_out) != 0 { 19788 return -3 19789 } 19790 return err 19791 } 19792 19793 func Xuncompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* uncompr.c:86:13: */ 19794 bp := tls.Alloc(8) 19795 defer tls.Free(8) 19796 *(*ULong)(unsafe.Pointer(bp)) = sourceLen 19797 19798 return Xuncompress2(tls, dest, destLen, source, bp) 19799 } 19800 19801 // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t 19802 // value -- needed when comparing unsigned to z_off64_t, which is signed 19803 // (possible z_off64_t types off_t, off64_t, and long are all signed) 19804 19805 var Xz_errmsg = [10]uintptr{ 19806 uintptr(ts + 876), 19807 uintptr(ts + 892), 19808 uintptr(ts + 101), 19809 uintptr(ts + 903), 19810 uintptr(ts + 914), 19811 uintptr(ts + 927), 19812 uintptr(ts + 938), 19813 uintptr(ts + 958), 19814 uintptr(ts + 971), 19815 uintptr(ts + 101), 19816 } /* zutil.c:13:14 */ 19817 19818 func XzlibVersion(tls *libc.TLS) uintptr { /* zutil.c:27:12: */ 19819 return ts /* "1.2.11" */ 19820 } 19821 19822 func XzlibCompileFlags(tls *libc.TLS) ULong { /* zutil.c:32:15: */ 19823 var flags ULong 19824 19825 flags = uint64(0) 19826 switch int32(unsafe.Sizeof(UInt(0))) { 19827 case 2: 19828 break 19829 case 4: 19830 flags = flags + uint64(1) 19831 break 19832 case 8: 19833 flags = flags + uint64(2) 19834 break 19835 default: 19836 flags = flags + uint64(3) 19837 } 19838 switch int32(unsafe.Sizeof(ULong(0))) { 19839 case 2: 19840 break 19841 case 4: 19842 flags = flags + uint64(int32(1)<<2) 19843 break 19844 case 8: 19845 flags = flags + uint64(int32(2)<<2) 19846 break 19847 default: 19848 flags = flags + uint64(int32(3)<<2) 19849 } 19850 switch int32(unsafe.Sizeof(Voidpf(0))) { 19851 case 2: 19852 break 19853 case 4: 19854 flags = flags + uint64(int32(1)<<4) 19855 break 19856 case 8: 19857 flags = flags + uint64(int32(2)<<4) 19858 break 19859 default: 19860 flags = flags + uint64(int32(3)<<4) 19861 } 19862 switch int32(unsafe.Sizeof(Off_t(0))) { 19863 case 2: 19864 break 19865 case 4: 19866 flags = flags + uint64(int32(1)<<6) 19867 break 19868 case 8: 19869 flags = flags + uint64(int32(2)<<6) 19870 break 19871 default: 19872 flags = flags + uint64(int32(3)<<6) 19873 } 19874 return flags 19875 } 19876 19877 // exported to allow conversion of error code to string for compress() and 19878 // uncompress() 19879 func XzError(tls *libc.TLS, err int32) uintptr { /* zutil.c:133:12: */ 19880 return Xz_errmsg[Z_NEED_DICT-err] 19881 } 19882 19883 func Xzcalloc(tls *libc.TLS, opaque Voidpf, items uint32, size uint32) Voidpf { /* zutil.c:305:22: */ 19884 _ = opaque 19885 if uint64(unsafe.Sizeof(UInt(0))) > uint64(2) { 19886 return libc.Xmalloc(tls, uint64(items*size)) 19887 } 19888 return libc.Xcalloc(tls, uint64(items), uint64(size)) 19889 } 19890 19891 func Xzcfree(tls *libc.TLS, opaque Voidpf, ptr Voidpf) { /* zutil.c:315:20: */ 19892 _ = opaque 19893 libc.Xfree(tls, ptr) 19894 } 19895 19896 func init() { 19897 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 8)) = deflate_stored // deflate.c:136:29: 19898 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 24)) = deflate_fast // deflate.c:137:29: 19899 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 40)) = deflate_fast // deflate.c:138:29: 19900 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 56)) = deflate_fast // deflate.c:139:29: 19901 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 72)) = deflate_slow // deflate.c:141:29: 19902 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 88)) = deflate_slow // deflate.c:142:29: 19903 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 104)) = deflate_slow // deflate.c:143:29: 19904 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 120)) = deflate_slow // deflate.c:144:29: 19905 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 136)) = deflate_slow // deflate.c:145:30: 19906 *(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 152)) = deflate_slow // deflate.c:146:30: 19907 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_bl_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_blbits)) // trees.c:132:22: 19908 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_dtree)) // trees.c:129:2: 19909 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_dbits)) // trees.c:129:16: 19910 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_ltree)) // trees.c:126:2: 19911 *(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_lbits)) // trees.c:126:16: 19912 } 19913 19914 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" 19915 var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data