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(&copy, 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(&copy, 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(&copy, 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(&copy, 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(&copy, 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(&copy, 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