modernc.org/z@v1.7.4/lib/z_freebsd_arm64.go (about)

     1  // Code generated by 'ccgo -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -o lib/z_freebsd_amd64.go -pkgname z -trace-translation-units /tmp/go-generate-3340550282/cdb.json libz.a', DO NOT EDIT.
     2  
     3  package z
     4  
     5  import (
     6  	"math"
     7  	"reflect"
     8  	"sync/atomic"
     9  	"unsafe"
    10  
    11  	"modernc.org/libc"
    12  	"modernc.org/libc/sys/types"
    13  )
    14  
    15  var _ = math.Pi
    16  var _ reflect.Kind
    17  var _ atomic.Value
    18  var _ unsafe.Pointer
    19  var _ types.Size_t
    20  
    21  const (
    22  	ARG_MAX                              = 524288
    23  	BASE                                 = 65521
    24  	BC_BASE_MAX                          = 99
    25  	BC_DIM_MAX                           = 2048
    26  	BC_SCALE_MAX                         = 99
    27  	BC_STRING_MAX                        = 1000
    28  	BIG_ENDIAN                           = 4321
    29  	BYTE_ORDER                           = 1234
    30  	CHARCLASS_NAME_MAX                   = 14
    31  	CHAR_BIT                             = 8
    32  	CHAR_MAX                             = 127
    33  	CHAR_MIN                             = -128
    34  	CHILD_MAX                            = 40
    35  	COLL_WEIGHTS_MAX                     = 10
    36  	DEF_MEM_LEVEL                        = 8
    37  	DEF_WBITS                            = 15
    38  	DYN_TREES                            = 2
    39  	EXIT_FAILURE                         = 1
    40  	EXIT_SUCCESS                         = 0
    41  	EXPR_NEST_MAX                        = 32
    42  	FAR                                  = 0
    43  	FD_SETSIZE                           = 1024
    44  	F_LOCK                               = 1
    45  	F_OK                                 = 0
    46  	F_TEST                               = 3
    47  	F_TLOCK                              = 2
    48  	F_ULOCK                              = 0
    49  	GID_MAX                              = 4294967295
    50  	HAVE_HIDDEN                          = 1
    51  	HAVE_MEMCPY                          = 0
    52  	INT_MAX                              = 2147483647
    53  	INT_MIN                              = -2147483648
    54  	IOV_MAX                              = 1024
    55  	LINE_MAX                             = 2048
    56  	LITTLE_ENDIAN                        = 1234
    57  	LLONG_MAX                            = 9223372036854775807
    58  	LLONG_MIN                            = -9223372036854775808
    59  	LONG_BIT                             = 64
    60  	LONG_MAX                             = 9223372036854775807
    61  	LONG_MIN                             = -9223372036854775808
    62  	L_INCR                               = 1
    63  	L_SET                                = 0
    64  	L_XTND                               = 2
    65  	MAX_CANON                            = 255
    66  	MAX_INPUT                            = 255
    67  	MAX_MATCH                            = 258
    68  	MAX_MEM_LEVEL                        = 9
    69  	MAX_WBITS                            = 15
    70  	MB_LEN_MAX                           = 6
    71  	MIN_MATCH                            = 3
    72  	MQ_PRIO_MAX                          = 64
    73  	NAME_MAX                             = 255
    74  	NGROUPS_MAX                          = 1023
    75  	NL_ARGMAX                            = 4096
    76  	NL_LANGMAX                           = 31
    77  	NL_MSGMAX                            = 32767
    78  	NL_NMAX                              = 1
    79  	NL_SETMAX                            = 255
    80  	NL_TEXTMAX                           = 2048
    81  	NMAX                                 = 5552
    82  	OFF_MAX                              = 9223372036854775807
    83  	OFF_MIN                              = -9223372036854775808
    84  	OPEN_MAX                             = 64
    85  	OS_CODE                              = 3
    86  	PASS_MAX                             = 128
    87  	PATH_MAX                             = 1024
    88  	PDP_ENDIAN                           = 3412
    89  	PIPE_BUF                             = 512
    90  	PRESET_DICT                          = 0x20
    91  	QUAD_MAX                             = 9223372036854775807
    92  	QUAD_MIN                             = -9223372036854775808
    93  	RAND_MAX                             = 0x7fffffff
    94  	RE_DUP_MAX                           = 255
    95  	RFCENVG                              = 2048
    96  	RFCFDG                               = 4096
    97  	RFCNAMEG                             = 1024
    98  	RFENVG                               = 2
    99  	RFFDG                                = 4
   100  	RFFLAGS                              = 2416930932
   101  	RFHIGHPID                            = 262144
   102  	RFKERNELONLY                         = 268828672
   103  	RFLINUXTHPN                          = 65536
   104  	RFMEM                                = 32
   105  	RFNAMEG                              = 1
   106  	RFNOTEG                              = 8
   107  	RFNOWAIT                             = 64
   108  	RFPPWAIT                             = 2147483648
   109  	RFPROC                               = 16
   110  	RFPROCDESC                           = 268435456
   111  	RFSIGSHARE                           = 16384
   112  	RFSPAWN                              = 2147483648
   113  	RFSTOPPED                            = 131072
   114  	RFTHREAD                             = 8192
   115  	RFTSIGMASK                           = 0xFF
   116  	RFTSIGSHIFT                          = 20
   117  	RFTSIGZMB                            = 524288
   118  	R_OK                                 = 0x04
   119  	SCHAR_MAX                            = 127
   120  	SCHAR_MIN                            = -128
   121  	SEEK_CUR                             = 1
   122  	SEEK_DATA                            = 3
   123  	SEEK_END                             = 2
   124  	SEEK_HOLE                            = 4
   125  	SEEK_SET                             = 0
   126  	SHRT_MAX                             = 32767
   127  	SHRT_MIN                             = -32768
   128  	SIZE_T_MAX                           = 18446744073709551615
   129  	SSIZE_MAX                            = 9223372036854775807
   130  	STATIC_TREES                         = 1
   131  	STDC                                 = 0
   132  	STDC99                               = 0
   133  	STDERR_FILENO                        = 2
   134  	STDIN_FILENO                         = 0
   135  	STDOUT_FILENO                        = 1
   136  	STORED_BLOCK                         = 0
   137  	UCHAR_MAX                            = 255
   138  	UID_MAX                              = 4294967295
   139  	UINT_MAX                             = 4294967295
   140  	ULLONG_MAX                           = 18446744073709551615
   141  	ULONG_MAX                            = 18446744073709551615
   142  	UQUAD_MAX                            = 18446744073709551615
   143  	USHRT_MAX                            = 65535
   144  	WORD_BIT                             = 32
   145  	W_OK                                 = 0x02
   146  	X_OK                                 = 0x01
   147  	ZCONF_H                              = 0
   148  	ZEXPORT                              = 0
   149  	ZEXPORTVA                            = 0
   150  	ZLIB_H                               = 0
   151  	ZLIB_VERNUM                          = 0x12b0
   152  	ZLIB_VERSION                         = "1.2.11"
   153  	ZLIB_VER_MAJOR                       = 1
   154  	ZLIB_VER_MINOR                       = 2
   155  	ZLIB_VER_REVISION                    = 11
   156  	ZLIB_VER_SUBREVISION                 = 0
   157  	ZUTIL_H                              = 0
   158  	Z_ASCII                              = 1
   159  	Z_BEST_COMPRESSION                   = 9
   160  	Z_BEST_SPEED                         = 1
   161  	Z_BINARY                             = 0
   162  	Z_BLOCK                              = 5
   163  	Z_BUF_ERROR                          = -5
   164  	Z_DATA_ERROR                         = -3
   165  	Z_DEFAULT_COMPRESSION                = -1
   166  	Z_DEFAULT_STRATEGY                   = 0
   167  	Z_DEFLATED                           = 8
   168  	Z_ERRNO                              = -1
   169  	Z_FILTERED                           = 1
   170  	Z_FINISH                             = 4
   171  	Z_FIXED                              = 4
   172  	Z_FULL_FLUSH                         = 3
   173  	Z_HAVE_STDARG_H                      = 0
   174  	Z_HAVE_UNISTD_H                      = 0
   175  	Z_HUFFMAN_ONLY                       = 2
   176  	Z_MEM_ERROR                          = -4
   177  	Z_NEED_DICT                          = 2
   178  	Z_NO_COMPRESSION                     = 0
   179  	Z_NO_FLUSH                           = 0
   180  	Z_NULL                               = 0
   181  	Z_OK                                 = 0
   182  	Z_PARTIAL_FLUSH                      = 1
   183  	Z_RLE                                = 3
   184  	Z_STREAM_END                         = 1
   185  	Z_STREAM_ERROR                       = -2
   186  	Z_SYNC_FLUSH                         = 2
   187  	Z_TEXT                               = 1
   188  	Z_TREES                              = 6
   189  	Z_UNKNOWN                            = 2
   190  	Z_VERSION_ERROR                      = -6
   191  	X_ACCMODE_T_DECLARED                 = 0
   192  	X_BIG_ENDIAN                         = 4321
   193  	X_BLKCNT_T_DECLARED                  = 0
   194  	X_BLKSIZE_T_DECLARED                 = 0
   195  	X_BYTE_ORDER                         = 1234
   196  	X_CAP_IOCTL_T_DECLARED               = 0
   197  	X_CAP_RIGHTS_T_DECLARED              = 0
   198  	X_CLOCKID_T_DECLARED                 = 0
   199  	X_CLOCK_T_DECLARED                   = 0
   200  	X_CS_PATH                            = 1
   201  	X_CS_POSIX_V6_ILP32_OFF32_CFLAGS     = 2
   202  	X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS    = 3
   203  	X_CS_POSIX_V6_ILP32_OFF32_LIBS       = 4
   204  	X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS    = 5
   205  	X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS   = 6
   206  	X_CS_POSIX_V6_ILP32_OFFBIG_LIBS      = 7
   207  	X_CS_POSIX_V6_LP64_OFF64_CFLAGS      = 8
   208  	X_CS_POSIX_V6_LP64_OFF64_LDFLAGS     = 9
   209  	X_CS_POSIX_V6_LP64_OFF64_LIBS        = 10
   210  	X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS    = 11
   211  	X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS   = 12
   212  	X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS      = 13
   213  	X_CS_POSIX_V6_WIDTH_RESTRICTED_ENVS  = 14
   214  	X_DEV_T_DECLARED                     = 0
   215  	X_ERRNO_T_DEFINED                    = 0
   216  	X_FFLAGS_T_DECLARED                  = 0
   217  	X_FILE_OFFSET_BITS                   = 64
   218  	X_FSBLKCNT_T_DECLARED                = 0
   219  	X_FTRUNCATE_DECLARED                 = 0
   220  	X_GCC_MAX_ALIGN_T                    = 0
   221  	X_GETOPT_DECLARED                    = 0
   222  	X_GID_T_DECLARED                     = 0
   223  	X_ID_T_DECLARED                      = 0
   224  	X_INO_T_DECLARED                     = 0
   225  	X_INT16_T_DECLARED                   = 0
   226  	X_INT32_T_DECLARED                   = 0
   227  	X_INT64_T_DECLARED                   = 0
   228  	X_INT8_T_DECLARED                    = 0
   229  	X_INTMAX_T_DECLARED                  = 0
   230  	X_INTPTR_T_DECLARED                  = 0
   231  	X_IN_ADDR_T_DECLARED                 = 0
   232  	X_IN_PORT_T_DECLARED                 = 0
   233  	X_KEY_T_DECLARED                     = 0
   234  	X_LARGEFILE64_SOURCE                 = 1
   235  	X_LIMITS_H_                          = 0
   236  	X_LITTLE_ENDIAN                      = 1234
   237  	X_LOCALE_T_DEFINED                   = 0
   238  	X_LP64                               = 1
   239  	X_LSEEK_DECLARED                     = 0
   240  	X_LWPID_T_DECLARED                   = 0
   241  	X_MACHINE_ENDIAN_H_                  = 0
   242  	X_MACHINE_STDARG_H_                  = 0
   243  	X_MACHINE__LIMITS_H_                 = 0
   244  	X_MACHINE__TYPES_H_                  = 0
   245  	X_MKDTEMP_DECLARED                   = 0
   246  	X_MKNOD_DECLARED                     = 0
   247  	X_MKSTEMP_DECLARED                   = 0
   248  	X_MKTEMP_DECLARED                    = 0
   249  	X_MMAP_DECLARED                      = 0
   250  	X_MODE_T_DECLARED                    = 0
   251  	X_MQD_T_DECLARED                     = 0
   252  	X_NLINK_T_DECLARED                   = 0
   253  	X_Nonnull                            = 0
   254  	X_Null_unspecified                   = 0
   255  	X_Nullable                           = 0
   256  	X_OFF64_T_DECLARED                   = 0
   257  	X_OFF_T_DECLARED                     = 0
   258  	X_OPTRESET_DECLARED                  = 0
   259  	X_PC_ACL_EXTENDED                    = 59
   260  	X_PC_ACL_NFS4                        = 64
   261  	X_PC_ACL_PATH_MAX                    = 60
   262  	X_PC_ALLOC_SIZE_MIN                  = 10
   263  	X_PC_ASYNC_IO                        = 53
   264  	X_PC_CAP_PRESENT                     = 61
   265  	X_PC_CHOWN_RESTRICTED                = 7
   266  	X_PC_FILESIZEBITS                    = 12
   267  	X_PC_INF_PRESENT                     = 62
   268  	X_PC_LINK_MAX                        = 1
   269  	X_PC_MAC_PRESENT                     = 63
   270  	X_PC_MAX_CANON                       = 2
   271  	X_PC_MAX_INPUT                       = 3
   272  	X_PC_MIN_HOLE_SIZE                   = 21
   273  	X_PC_NAME_MAX                        = 4
   274  	X_PC_NO_TRUNC                        = 8
   275  	X_PC_PATH_MAX                        = 5
   276  	X_PC_PIPE_BUF                        = 6
   277  	X_PC_PRIO_IO                         = 54
   278  	X_PC_REC_INCR_XFER_SIZE              = 14
   279  	X_PC_REC_MAX_XFER_SIZE               = 15
   280  	X_PC_REC_MIN_XFER_SIZE               = 16
   281  	X_PC_REC_XFER_ALIGN                  = 17
   282  	X_PC_SYMLINK_MAX                     = 18
   283  	X_PC_SYNC_IO                         = 55
   284  	X_PC_VDISABLE                        = 9
   285  	X_PDP_ENDIAN                         = 3412
   286  	X_PID_T_DECLARED                     = 0
   287  	X_POSIX2_BC_BASE_MAX                 = 99
   288  	X_POSIX2_BC_DIM_MAX                  = 2048
   289  	X_POSIX2_BC_SCALE_MAX                = 99
   290  	X_POSIX2_BC_STRING_MAX               = 1000
   291  	X_POSIX2_CHARCLASS_NAME_MAX          = 14
   292  	X_POSIX2_CHAR_TERM                   = 1
   293  	X_POSIX2_COLL_WEIGHTS_MAX            = 2
   294  	X_POSIX2_C_BIND                      = 200112
   295  	X_POSIX2_C_DEV                       = -1
   296  	X_POSIX2_EQUIV_CLASS_MAX             = 2
   297  	X_POSIX2_EXPR_NEST_MAX               = 32
   298  	X_POSIX2_FORT_DEV                    = -1
   299  	X_POSIX2_FORT_RUN                    = 200112
   300  	X_POSIX2_LINE_MAX                    = 2048
   301  	X_POSIX2_LOCALEDEF                   = -1
   302  	X_POSIX2_PBS                         = -1
   303  	X_POSIX2_PBS_ACCOUNTING              = -1
   304  	X_POSIX2_PBS_CHECKPOINT              = -1
   305  	X_POSIX2_PBS_LOCATE                  = -1
   306  	X_POSIX2_PBS_MESSAGE                 = -1
   307  	X_POSIX2_PBS_TRACK                   = -1
   308  	X_POSIX2_RE_DUP_MAX                  = 255
   309  	X_POSIX2_SW_DEV                      = -1
   310  	X_POSIX2_UPE                         = 200112
   311  	X_POSIX2_VERSION                     = 199212
   312  	X_POSIX_ADVISORY_INFO                = 200112
   313  	X_POSIX_AIO_LISTIO_MAX               = 2
   314  	X_POSIX_AIO_MAX                      = 1
   315  	X_POSIX_ARG_MAX                      = 4096
   316  	X_POSIX_ASYNCHRONOUS_IO              = 200112
   317  	X_POSIX_BARRIERS                     = 200112
   318  	X_POSIX_CHILD_MAX                    = 25
   319  	X_POSIX_CHOWN_RESTRICTED             = 1
   320  	X_POSIX_CLOCKRES_MIN                 = 20000000
   321  	X_POSIX_CLOCK_SELECTION              = -1
   322  	X_POSIX_CPUTIME                      = 200112
   323  	X_POSIX_DELAYTIMER_MAX               = 32
   324  	X_POSIX_FSYNC                        = 200112
   325  	X_POSIX_HOST_NAME_MAX                = 255
   326  	X_POSIX_IPV6                         = 0
   327  	X_POSIX_JOB_CONTROL                  = 1
   328  	X_POSIX_LINK_MAX                     = 8
   329  	X_POSIX_LOGIN_NAME_MAX               = 9
   330  	X_POSIX_MAPPED_FILES                 = 200112
   331  	X_POSIX_MAX_CANON                    = 255
   332  	X_POSIX_MAX_INPUT                    = 255
   333  	X_POSIX_MEMLOCK                      = -1
   334  	X_POSIX_MEMLOCK_RANGE                = 200112
   335  	X_POSIX_MEMORY_PROTECTION            = 200112
   336  	X_POSIX_MESSAGE_PASSING              = 200112
   337  	X_POSIX_MONOTONIC_CLOCK              = 200112
   338  	X_POSIX_MQ_OPEN_MAX                  = 8
   339  	X_POSIX_MQ_PRIO_MAX                  = 32
   340  	X_POSIX_NAME_MAX                     = 14
   341  	X_POSIX_NGROUPS_MAX                  = 8
   342  	X_POSIX_NO_TRUNC                     = 1
   343  	X_POSIX_OPEN_MAX                     = 20
   344  	X_POSIX_PATH_MAX                     = 256
   345  	X_POSIX_PIPE_BUF                     = 512
   346  	X_POSIX_PRIORITIZED_IO               = -1
   347  	X_POSIX_PRIORITY_SCHEDULING          = 0
   348  	X_POSIX_RAW_SOCKETS                  = 200112
   349  	X_POSIX_READER_WRITER_LOCKS          = 200112
   350  	X_POSIX_REALTIME_SIGNALS             = 200112
   351  	X_POSIX_REGEXP                       = 1
   352  	X_POSIX_RE_DUP_MAX                   = 255
   353  	X_POSIX_RTSIG_MAX                    = 8
   354  	X_POSIX_SEMAPHORES                   = 200112
   355  	X_POSIX_SEM_NSEMS_MAX                = 256
   356  	X_POSIX_SEM_VALUE_MAX                = 32767
   357  	X_POSIX_SHARED_MEMORY_OBJECTS        = 200112
   358  	X_POSIX_SHELL                        = 1
   359  	X_POSIX_SIGQUEUE_MAX                 = 32
   360  	X_POSIX_SPAWN                        = 200112
   361  	X_POSIX_SPIN_LOCKS                   = 200112
   362  	X_POSIX_SPORADIC_SERVER              = -1
   363  	X_POSIX_SSIZE_MAX                    = 32767
   364  	X_POSIX_SS_REPL_MAX                  = 4
   365  	X_POSIX_STREAM_MAX                   = 8
   366  	X_POSIX_SYMLINK_MAX                  = 255
   367  	X_POSIX_SYMLOOP_MAX                  = 8
   368  	X_POSIX_SYNCHRONIZED_IO              = -1
   369  	X_POSIX_THREADS                      = 200112
   370  	X_POSIX_THREAD_ATTR_STACKADDR        = 200112
   371  	X_POSIX_THREAD_ATTR_STACKSIZE        = 200112
   372  	X_POSIX_THREAD_CPUTIME               = 200112
   373  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
   374  	X_POSIX_THREAD_KEYS_MAX              = 128
   375  	X_POSIX_THREAD_PRIORITY_SCHEDULING   = 200112
   376  	X_POSIX_THREAD_PRIO_INHERIT          = 200112
   377  	X_POSIX_THREAD_PRIO_PROTECT          = 200112
   378  	X_POSIX_THREAD_PROCESS_SHARED        = 200112
   379  	X_POSIX_THREAD_SAFE_FUNCTIONS        = -1
   380  	X_POSIX_THREAD_SPORADIC_SERVER       = -1
   381  	X_POSIX_THREAD_THREADS_MAX           = 64
   382  	X_POSIX_TIMEOUTS                     = 200112
   383  	X_POSIX_TIMERS                       = 200112
   384  	X_POSIX_TIMER_MAX                    = 32
   385  	X_POSIX_TRACE                        = -1
   386  	X_POSIX_TRACE_EVENT_FILTER           = -1
   387  	X_POSIX_TRACE_EVENT_NAME_MAX         = 30
   388  	X_POSIX_TRACE_INHERIT                = -1
   389  	X_POSIX_TRACE_LOG                    = -1
   390  	X_POSIX_TRACE_NAME_MAX               = 8
   391  	X_POSIX_TRACE_SYS_MAX                = 8
   392  	X_POSIX_TRACE_USER_EVENT_MAX         = 32
   393  	X_POSIX_TTY_NAME_MAX                 = 9
   394  	X_POSIX_TYPED_MEMORY_OBJECTS         = -1
   395  	X_POSIX_TZNAME_MAX                   = 6
   396  	X_POSIX_VDISABLE                     = 0xff
   397  	X_POSIX_VERSION                      = 200112
   398  	X_PTHREAD_T_DECLARED                 = 0
   399  	X_PTRDIFF_T_DECLARED                 = 0
   400  	X_QUAD_HIGHWORD                      = 1
   401  	X_QUAD_LOWWORD                       = 0
   402  	X_RLIM_T_DECLARED                    = 0
   403  	X_RSIZE_T_DEFINED                    = 0
   404  	X_RUNE_T_DECLARED                    = 0
   405  	X_SC_2_CHAR_TERM                     = 20
   406  	X_SC_2_C_BIND                        = 18
   407  	X_SC_2_C_DEV                         = 19
   408  	X_SC_2_FORT_DEV                      = 21
   409  	X_SC_2_FORT_RUN                      = 22
   410  	X_SC_2_LOCALEDEF                     = 23
   411  	X_SC_2_PBS                           = 59
   412  	X_SC_2_PBS_ACCOUNTING                = 60
   413  	X_SC_2_PBS_CHECKPOINT                = 61
   414  	X_SC_2_PBS_LOCATE                    = 62
   415  	X_SC_2_PBS_MESSAGE                   = 63
   416  	X_SC_2_PBS_TRACK                     = 64
   417  	X_SC_2_SW_DEV                        = 24
   418  	X_SC_2_UPE                           = 25
   419  	X_SC_2_VERSION                       = 17
   420  	X_SC_ADVISORY_INFO                   = 65
   421  	X_SC_AIO_LISTIO_MAX                  = 42
   422  	X_SC_AIO_MAX                         = 43
   423  	X_SC_AIO_PRIO_DELTA_MAX              = 44
   424  	X_SC_ARG_MAX                         = 1
   425  	X_SC_ASYNCHRONOUS_IO                 = 28
   426  	X_SC_ATEXIT_MAX                      = 107
   427  	X_SC_BARRIERS                        = 66
   428  	X_SC_BC_BASE_MAX                     = 9
   429  	X_SC_BC_DIM_MAX                      = 10
   430  	X_SC_BC_SCALE_MAX                    = 11
   431  	X_SC_BC_STRING_MAX                   = 12
   432  	X_SC_CHILD_MAX                       = 2
   433  	X_SC_CLK_TCK                         = 3
   434  	X_SC_CLOCK_SELECTION                 = 67
   435  	X_SC_COLL_WEIGHTS_MAX                = 13
   436  	X_SC_CPUSET_SIZE                     = 122
   437  	X_SC_CPUTIME                         = 68
   438  	X_SC_DELAYTIMER_MAX                  = 45
   439  	X_SC_EXPR_NEST_MAX                   = 14
   440  	X_SC_FILE_LOCKING                    = 69
   441  	X_SC_FSYNC                           = 38
   442  	X_SC_GETGR_R_SIZE_MAX                = 70
   443  	X_SC_GETPW_R_SIZE_MAX                = 71
   444  	X_SC_HOST_NAME_MAX                   = 72
   445  	X_SC_IOV_MAX                         = 56
   446  	X_SC_IPV6                            = 118
   447  	X_SC_JOB_CONTROL                     = 6
   448  	X_SC_LINE_MAX                        = 15
   449  	X_SC_LOGIN_NAME_MAX                  = 73
   450  	X_SC_MAPPED_FILES                    = 29
   451  	X_SC_MEMLOCK                         = 30
   452  	X_SC_MEMLOCK_RANGE                   = 31
   453  	X_SC_MEMORY_PROTECTION               = 32
   454  	X_SC_MESSAGE_PASSING                 = 33
   455  	X_SC_MONOTONIC_CLOCK                 = 74
   456  	X_SC_MQ_OPEN_MAX                     = 46
   457  	X_SC_MQ_PRIO_MAX                     = 75
   458  	X_SC_NGROUPS_MAX                     = 4
   459  	X_SC_NPROCESSORS_CONF                = 57
   460  	X_SC_NPROCESSORS_ONLN                = 58
   461  	X_SC_OPEN_MAX                        = 5
   462  	X_SC_PAGESIZE                        = 47
   463  	X_SC_PAGE_SIZE                       = 47
   464  	X_SC_PHYS_PAGES                      = 121
   465  	X_SC_PRIORITIZED_IO                  = 34
   466  	X_SC_PRIORITY_SCHEDULING             = 35
   467  	X_SC_RAW_SOCKETS                     = 119
   468  	X_SC_READER_WRITER_LOCKS             = 76
   469  	X_SC_REALTIME_SIGNALS                = 36
   470  	X_SC_REGEXP                          = 77
   471  	X_SC_RE_DUP_MAX                      = 16
   472  	X_SC_RTSIG_MAX                       = 48
   473  	X_SC_SAVED_IDS                       = 7
   474  	X_SC_SEMAPHORES                      = 37
   475  	X_SC_SEM_NSEMS_MAX                   = 49
   476  	X_SC_SEM_VALUE_MAX                   = 50
   477  	X_SC_SHARED_MEMORY_OBJECTS           = 39
   478  	X_SC_SHELL                           = 78
   479  	X_SC_SIGQUEUE_MAX                    = 51
   480  	X_SC_SPAWN                           = 79
   481  	X_SC_SPIN_LOCKS                      = 80
   482  	X_SC_SPORADIC_SERVER                 = 81
   483  	X_SC_STREAM_MAX                      = 26
   484  	X_SC_SYMLOOP_MAX                     = 120
   485  	X_SC_SYNCHRONIZED_IO                 = 40
   486  	X_SC_THREADS                         = 96
   487  	X_SC_THREAD_ATTR_STACKADDR           = 82
   488  	X_SC_THREAD_ATTR_STACKSIZE           = 83
   489  	X_SC_THREAD_CPUTIME                  = 84
   490  	X_SC_THREAD_DESTRUCTOR_ITERATIONS    = 85
   491  	X_SC_THREAD_KEYS_MAX                 = 86
   492  	X_SC_THREAD_PRIORITY_SCHEDULING      = 89
   493  	X_SC_THREAD_PRIO_INHERIT             = 87
   494  	X_SC_THREAD_PRIO_PROTECT             = 88
   495  	X_SC_THREAD_PROCESS_SHARED           = 90
   496  	X_SC_THREAD_SAFE_FUNCTIONS           = 91
   497  	X_SC_THREAD_SPORADIC_SERVER          = 92
   498  	X_SC_THREAD_STACK_MIN                = 93
   499  	X_SC_THREAD_THREADS_MAX              = 94
   500  	X_SC_TIMEOUTS                        = 95
   501  	X_SC_TIMERS                          = 41
   502  	X_SC_TIMER_MAX                       = 52
   503  	X_SC_TRACE                           = 97
   504  	X_SC_TRACE_EVENT_FILTER              = 98
   505  	X_SC_TRACE_INHERIT                   = 99
   506  	X_SC_TRACE_LOG                       = 100
   507  	X_SC_TTY_NAME_MAX                    = 101
   508  	X_SC_TYPED_MEMORY_OBJECTS            = 102
   509  	X_SC_TZNAME_MAX                      = 27
   510  	X_SC_V6_ILP32_OFF32                  = 103
   511  	X_SC_V6_ILP32_OFFBIG                 = 104
   512  	X_SC_V6_LP64_OFF64                   = 105
   513  	X_SC_V6_LPBIG_OFFBIG                 = 106
   514  	X_SC_VERSION                         = 8
   515  	X_SC_XOPEN_CRYPT                     = 108
   516  	X_SC_XOPEN_ENH_I18N                  = 109
   517  	X_SC_XOPEN_LEGACY                    = 110
   518  	X_SC_XOPEN_REALTIME                  = 111
   519  	X_SC_XOPEN_REALTIME_THREADS          = 112
   520  	X_SC_XOPEN_SHM                       = 113
   521  	X_SC_XOPEN_STREAMS                   = 114
   522  	X_SC_XOPEN_UNIX                      = 115
   523  	X_SC_XOPEN_VERSION                   = 116
   524  	X_SC_XOPEN_XCU_VERSION               = 117
   525  	X_SELECT_DECLARED                    = 0
   526  	X_SIGSET_T_DECLARED                  = 0
   527  	X_SIG_MAXSIG                         = 128
   528  	X_SIG_WORDS                          = 4
   529  	X_SIZE_T_DECLARED                    = 0
   530  	X_SSIZE_T_DECLARED                   = 0
   531  	X_STDDEF_H_                          = 0
   532  	X_STDLIB_H_                          = 0
   533  	X_STRINGS_H_                         = 0
   534  	X_STRING_H_                          = 0
   535  	X_SUSECONDS_T_DECLARED               = 0
   536  	X_SWAB_DECLARED                      = 0
   537  	X_SYS_CDEFS_H_                       = 0
   538  	X_SYS_LIMITS_H_                      = 0
   539  	X_SYS_SELECT_H_                      = 0
   540  	X_SYS_SYSLIMITS_H_                   = 0
   541  	X_SYS_TIMESPEC_H_                    = 0
   542  	X_SYS_TYPES_H_                       = 0
   543  	X_SYS_UNISTD_H_                      = 0
   544  	X_SYS__PTHREADTYPES_H_               = 0
   545  	X_SYS__SIGSET_H_                     = 0
   546  	X_SYS__STDARG_H_                     = 0
   547  	X_SYS__STDINT_H_                     = 0
   548  	X_SYS__TIMESPEC_H_                   = 0
   549  	X_SYS__TIMEVAL_H_                    = 0
   550  	X_SYS__TYPES_H_                      = 0
   551  	X_TIMER_T_DECLARED                   = 0
   552  	X_TIME_T_DECLARED                    = 0
   553  	X_TRUNCATE_DECLARED                  = 0
   554  	X_UID_T_DECLARED                     = 0
   555  	X_UINT16_T_DECLARED                  = 0
   556  	X_UINT32_T_DECLARED                  = 0
   557  	X_UINT64_T_DECLARED                  = 0
   558  	X_UINT8_T_DECLARED                   = 0
   559  	X_UINTMAX_T_DECLARED                 = 0
   560  	X_UINTPTR_T_DECLARED                 = 0
   561  	X_UNISTD_H_                          = 0
   562  	X_USECONDS_T_DECLARED                = 0
   563  	X_V6_ILP32_OFF32                     = -1
   564  	X_V6_ILP32_OFFBIG                    = 0
   565  	X_V6_LP64_OFF64                      = 0
   566  	X_V6_LPBIG_OFFBIG                    = -1
   567  	X_VA_LIST_DECLARED                   = 0
   568  	X_WCHAR_T_DECLARED                   = 0
   569  	X_XLOCALE_STRING1_H                  = 0
   570  	X_XLOCALE_STRINGS1_H                 = 0
   571  	X_XOPEN_CRYPT                        = -1
   572  	X_XOPEN_ENH_I18N                     = -1
   573  	X_XOPEN_IOV_MAX                      = 16
   574  	X_XOPEN_LEGACY                       = -1
   575  	X_XOPEN_NAME_MAX                     = 255
   576  	X_XOPEN_PATH_MAX                     = 1024
   577  	X_XOPEN_REALTIME                     = -1
   578  	X_XOPEN_REALTIME_THREADS             = -1
   579  	X_XOPEN_SHM                          = 1
   580  	X_XOPEN_STREAMS                      = -1
   581  	X_XOPEN_UNIX                         = -1
   582  	Unix                                 = 1
   583  	Z_const                              = 0
   584  	BYFOUR                               = 0
   585  	GF2_DIM                              = 32
   586  	TBLS                                 = 8
   587  	BL_CODES                             = 19
   588  	BUSY_STATE                           = 113
   589  	Buf_size                             = 16
   590  	COMMENT_STATE                        = 91
   591  	DEFLATE_H                            = 0
   592  	D_CODES                              = 30
   593  	EXTRA_STATE                          = 69
   594  	FINISH_STATE                         = 666
   595  	GZIP                                 = 0
   596  	GZIP_STATE                           = 57
   597  	HCRC_STATE                           = 103
   598  	HEAP_SIZE                            = 573
   599  	INIT_STATE                           = 42
   600  	LENGTH_CODES                         = 29
   601  	LITERALS                             = 256
   602  	L_CODES                              = 286
   603  	MAX_BITS                             = 15
   604  	MAX_STORED                           = 65535
   605  	MIN_LOOKAHEAD                        = 262
   606  	NAME_STATE                           = 73
   607  	NIL                                  = 0
   608  	TOO_FAR                              = 4096
   609  	WIN_INIT                             = 258
   610  	AT_EACCESS                           = 0x0100
   611  	AT_FDCWD                             = -100
   612  	AT_REMOVEDIR                         = 0x0800
   613  	AT_RESOLVE_BENEATH                   = 0x2000
   614  	AT_SYMLINK_FOLLOW                    = 0x0400
   615  	AT_SYMLINK_NOFOLLOW                  = 0x0200
   616  	BUFSIZ                               = 1024
   617  	COPY1                                = 1
   618  	E2BIG                                = 7
   619  	EACCES                               = 13
   620  	EAGAIN                               = 35
   621  	EBADF                                = 9
   622  	EBADMSG                              = 89
   623  	EBUSY                                = 16
   624  	ECHILD                               = 10
   625  	EDEADLK                              = 11
   626  	EDOM                                 = 33
   627  	EEXIST                               = 17
   628  	EFAULT                               = 14
   629  	EFBIG                                = 27
   630  	EINTR                                = 4
   631  	EINVAL                               = 22
   632  	EIO                                  = 5
   633  	EISDIR                               = 21
   634  	EMFILE                               = 24
   635  	EMLINK                               = 31
   636  	EMULTIHOP                            = 90
   637  	ENAMETOOLONG                         = 63
   638  	ENFILE                               = 23
   639  	ENODEV                               = 19
   640  	ENOENT                               = 2
   641  	ENOEXEC                              = 8
   642  	ENOLCK                               = 77
   643  	ENOLINK                              = 91
   644  	ENOMEM                               = 12
   645  	ENOSPC                               = 28
   646  	ENOSYS                               = 78
   647  	ENOTDIR                              = 20
   648  	ENOTEMPTY                            = 66
   649  	ENOTTY                               = 25
   650  	ENXIO                                = 6
   651  	EOF                                  = -1
   652  	EPERM                                = 1
   653  	EPIPE                                = 32
   654  	EPROTO                               = 92
   655  	ERANGE                               = 34
   656  	EROFS                                = 30
   657  	ESPIPE                               = 29
   658  	ESRCH                                = 3
   659  	EXDEV                                = 18
   660  	FAPPEND                              = 8
   661  	FASYNC                               = 64
   662  	FDSYNC                               = 16777216
   663  	FD_CLOEXEC                           = 1
   664  	FD_NONE                              = -200
   665  	FFSYNC                               = 128
   666  	FILENAME_MAX                         = 1024
   667  	FNDELAY                              = 4
   668  	FNONBLOCK                            = 4
   669  	FOPEN_MAX                            = 20
   670  	FRDAHEAD                             = 512
   671  	FREAD                                = 0x0001
   672  	FWRITE                               = 0x0002
   673  	F_ADD_SEALS                          = 19
   674  	F_CANCEL                             = 5
   675  	F_DUP2FD                             = 10
   676  	F_DUP2FD_CLOEXEC                     = 18
   677  	F_DUPFD                              = 0
   678  	F_DUPFD_CLOEXEC                      = 17
   679  	F_GETFD                              = 1
   680  	F_GETFL                              = 3
   681  	F_GETLK                              = 11
   682  	F_GETOWN                             = 5
   683  	F_GET_SEALS                          = 20
   684  	F_ISUNIONSTACK                       = 21
   685  	F_OGETLK                             = 7
   686  	F_OSETLK                             = 8
   687  	F_OSETLKW                            = 9
   688  	F_RDAHEAD                            = 16
   689  	F_RDLCK                              = 1
   690  	F_READAHEAD                          = 15
   691  	F_SEAL_GROW                          = 0x0004
   692  	F_SEAL_SEAL                          = 0x0001
   693  	F_SEAL_SHRINK                        = 0x0002
   694  	F_SEAL_WRITE                         = 0x0008
   695  	F_SETFD                              = 2
   696  	F_SETFL                              = 4
   697  	F_SETLK                              = 12
   698  	F_SETLKW                             = 13
   699  	F_SETLK_REMOTE                       = 14
   700  	F_SETOWN                             = 6
   701  	F_UNLCK                              = 2
   702  	F_UNLCKSYS                           = 4
   703  	F_WRLCK                              = 3
   704  	GZBUFSIZE                            = 8192
   705  	GZ_APPEND                            = 1
   706  	GZ_NONE                              = 0
   707  	GZ_READ                              = 7247
   708  	GZ_WRITE                             = 31153
   709  	HAVE_VSNPRINTF                       = 0
   710  	LOCK_EX                              = 0x02
   711  	LOCK_NB                              = 0x04
   712  	LOCK_SH                              = 0x01
   713  	LOCK_UN                              = 0x08
   714  	LOOK                                 = 0
   715  	L_ctermid                            = 1024
   716  	L_cuserid                            = 17
   717  	L_tmpnam                             = 1024
   718  	O_ACCMODE                            = 0x0003
   719  	O_APPEND                             = 0x0008
   720  	O_ASYNC                              = 0x0040
   721  	O_CLOEXEC                            = 0x00100000
   722  	O_CREAT                              = 0x0200
   723  	O_DIRECT                             = 0x00010000
   724  	O_DIRECTORY                          = 0x00020000
   725  	O_DSYNC                              = 0x01000000
   726  	O_EXCL                               = 0x0800
   727  	O_EXEC                               = 0x00040000
   728  	O_EXLOCK                             = 0x0020
   729  	O_FSYNC                              = 0x0080
   730  	O_NDELAY                             = 4
   731  	O_NOCTTY                             = 0x8000
   732  	O_NOFOLLOW                           = 0x0100
   733  	O_NONBLOCK                           = 0x0004
   734  	O_RDONLY                             = 0x0000
   735  	O_RDWR                               = 0x0002
   736  	O_RESOLVE_BENEATH                    = 0x00800000
   737  	O_SEARCH                             = 262144
   738  	O_SHLOCK                             = 0x0010
   739  	O_SYNC                               = 0x0080
   740  	O_TRUNC                              = 0x0400
   741  	O_TTY_INIT                           = 0x00080000
   742  	O_VERIFY                             = 0x00200000
   743  	O_WRONLY                             = 0x0001
   744  	POSIX_FADV_DONTNEED                  = 4
   745  	POSIX_FADV_NOREUSE                   = 5
   746  	POSIX_FADV_NORMAL                    = 0
   747  	POSIX_FADV_RANDOM                    = 1
   748  	POSIX_FADV_SEQUENTIAL                = 2
   749  	POSIX_FADV_WILLNEED                  = 3
   750  	P_tmpdir                             = "/tmp/"
   751  	TMP_MAX                              = 308915776
   752  	X_FSTDIO                             = 0
   753  	X_IOFBF                              = 0
   754  	X_IOLBF                              = 1
   755  	X_IONBF                              = 2
   756  	X_LARGEFILE_SOURCE                   = 1
   757  	X_POSIX_SOURCE                       = 0
   758  	X_STDFILE_DECLARED                   = 0
   759  	X_STDIO_H_                           = 0
   760  	X_STDSTREAM_DECLARED                 = 0
   761  	X_SYS_ERRNO_H_                       = 0
   762  	X_SYS_FCNTL_H_                       = 0
   763  	ENOUGH                               = 1444
   764  	ENOUGH_DISTS                         = 592
   765  	ENOUGH_LENS                          = 852
   766  	GUNZIP                               = 0
   767  	MAXBITS                              = 15
   768  	DIST_CODE_LEN                        = 512
   769  	END_BLOCK                            = 256
   770  	MAX_BL_BITS                          = 7
   771  	REPZ_11_138                          = 18
   772  	REPZ_3_10                            = 17
   773  	REP_3_6                              = 16
   774  	SMALLEST                             = 1
   775  )
   776  
   777  //
   778  //   If you use the zlib library in a product, an acknowledgment is welcome
   779  //   in the documentation of your product. If for some reason you cannot
   780  //   include such an acknowledgment, I would appreciate that you keep this
   781  //   copyright string in the executable of your product.
   782  //
   783  
   784  // ===========================================================================
   785  //  Function prototypes.
   786  const ( /* deflate.c:66:1: */
   787  	Need_more      = 0 // block not completed, need more input or more output
   788  	Block_done     = 1 // block flush performed
   789  	Finish_started = 2 // finish started, need only more output at next deflate
   790  	Finish_done    = 3
   791  )
   792  
   793  // inflate.h -- internal inflate state definition
   794  // Copyright (C) 1995-2016 Mark Adler
   795  // For conditions of distribution and use, see copyright notice in zlib.h
   796  
   797  // WARNING: this file should *not* be used by applications. It is
   798  //    part of the implementation of the compression library and is
   799  //    subject to change. Applications should only use zlib.h.
   800  //
   801  
   802  // define NO_GZIP when compiling if you want to disable gzip header and
   803  //    trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
   804  //    the crc code when it is not needed.  For shared libraries, gzip decoding
   805  //    should be left enabled.
   806  
   807  // Possible inflate modes between inflate() calls
   808  const ( /* inflate.h:20:1: */
   809  	HEAD     = 16180 // i: waiting for magic header
   810  	FLAGS    = 16181 // i: waiting for method and flags (gzip)
   811  	TIME     = 16182 // i: waiting for modification time (gzip)
   812  	OS       = 16183 // i: waiting for extra flags and operating system (gzip)
   813  	EXLEN    = 16184 // i: waiting for extra length (gzip)
   814  	EXTRA    = 16185 // i: waiting for extra bytes (gzip)
   815  	NAME     = 16186 // i: waiting for end of file name (gzip)
   816  	COMMENT  = 16187 // i: waiting for end of comment (gzip)
   817  	HCRC     = 16188 // i: waiting for header crc (gzip)
   818  	DICTID   = 16189 // i: waiting for dictionary check value
   819  	DICT     = 16190 // waiting for inflateSetDictionary() call
   820  	TYPE     = 16191 // i: waiting for type bits, including last-flag bit
   821  	TYPEDO   = 16192 // i: same, but skip check to exit inflate on new block
   822  	STORED   = 16193 // i: waiting for stored size (length and complement)
   823  	COPY_    = 16194 // i/o: same as COPY below, but only first time in
   824  	COPY     = 16195 // i/o: waiting for input or output to copy stored block
   825  	TABLE    = 16196 // i: waiting for dynamic block table lengths
   826  	LENLENS  = 16197 // i: waiting for code length code lengths
   827  	CODELENS = 16198 // i: waiting for length/lit and distance code lengths
   828  	LEN_     = 16199 // i: same as LEN below, but only first time in
   829  	LEN      = 16200 // i: waiting for length/lit/eob code
   830  	LENEXT   = 16201 // i: waiting for length extra bits
   831  	DIST     = 16202 // i: waiting for distance code
   832  	DISTEXT  = 16203 // i: waiting for distance extra bits
   833  	MATCH    = 16204 // o: waiting for output space to copy string
   834  	LIT      = 16205 // o: waiting for output space to write literal
   835  	CHECK    = 16206 // i: waiting for 32-bit check value
   836  	LENGTH   = 16207 // i: waiting for 32-bit length (gzip)
   837  	DONE     = 16208 // finished check, done -- remain here until reset
   838  	BAD      = 16209 // got a data error -- remain here until reset
   839  	MEM      = 16210 // got an inflate() memory error -- remain here until reset
   840  	SYNC     = 16211
   841  )
   842  
   843  // op values as set by inflate_table():
   844  //     00000000 - literal
   845  //     0000tttt - table link, tttt != 0 is the number of table index bits
   846  //     0001eeee - length or distance, eeee is the number of extra bits
   847  //     01100000 - end of block
   848  //     01000000 - invalid code
   849  //
   850  
   851  // Maximum size of the dynamic table.  The maximum number of code structures is
   852  //    1444, which is the sum of 852 for literal/length codes and 592 for distance
   853  //    codes.  These values were found by exhaustive searches using the program
   854  //    examples/enough.c found in the zlib distribtution.  The arguments to that
   855  //    program are the number of symbols, the initial root table size, and the
   856  //    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
   857  //    returns returns 852, and "enough 30 6 15" for distance codes returns 592.
   858  //    The initial root table size (9 or 6) is found in the fifth argument of the
   859  //    inflate_table() calls in inflate.c and infback.c.  If the root table size is
   860  //    changed, then these maximum sizes would be need to be recalculated and
   861  //    updated.
   862  
   863  // Type of code to build for inflate_table()
   864  const ( /* inftrees.h:54:1: */
   865  	CODES = 0
   866  	LENS  = 1
   867  	DISTS = 2
   868  )
   869  
   870  type Ptrdiff_t = int64 /* <builtin>:3:26 */
   871  
   872  type Size_t = uint64 /* <builtin>:9:23 */
   873  
   874  type Wchar_t = int32 /* <builtin>:15:24 */
   875  
   876  type X__int128_t = struct {
   877  	Flo int64
   878  	Fhi int64
   879  } /* <builtin>:21:43 */ // must match modernc.org/mathutil.Int128
   880  type X__uint128_t = struct {
   881  	Flo uint64
   882  	Fhi uint64
   883  } /* <builtin>:22:44 */ // must match modernc.org/mathutil.Int128
   884  
   885  type X__builtin_va_list = uintptr /* <builtin>:46:14 */
   886  type X__float128 = float64        /* <builtin>:47:21 */
   887  
   888  // adler32.c -- compute the Adler-32 checksum of a data stream
   889  // Copyright (C) 1995-2011, 2016 Mark Adler
   890  // For conditions of distribution and use, see copyright notice in zlib.h
   891  
   892  // @(#) $Id$
   893  
   894  // zutil.h -- internal interface and configuration of the compression library
   895  // Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
   896  // For conditions of distribution and use, see copyright notice in zlib.h
   897  
   898  // WARNING: this file should *not* be used by applications. It is
   899  //    part of the implementation of the compression library and is
   900  //    subject to change. Applications should only use zlib.h.
   901  //
   902  
   903  // @(#) $Id$
   904  
   905  // zlib.h -- interface of the 'zlib' general purpose compression library
   906  //   version 1.2.11, January 15th, 2017
   907  //
   908  //   Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler
   909  //
   910  //   This software is provided 'as-is', without any express or implied
   911  //   warranty.  In no event will the authors be held liable for any damages
   912  //   arising from the use of this software.
   913  //
   914  //   Permission is granted to anyone to use this software for any purpose,
   915  //   including commercial applications, and to alter it and redistribute it
   916  //   freely, subject to the following restrictions:
   917  //
   918  //   1. The origin of this software must not be misrepresented; you must not
   919  //      claim that you wrote the original software. If you use this software
   920  //      in a product, an acknowledgment in the product documentation would be
   921  //      appreciated but is not required.
   922  //   2. Altered source versions must be plainly marked as such, and must not be
   923  //      misrepresented as being the original software.
   924  //   3. This notice may not be removed or altered from any source distribution.
   925  //
   926  //   Jean-loup Gailly        Mark Adler
   927  //   jloup@gzip.org          madler@alumni.caltech.edu
   928  //
   929  //
   930  //   The data format used by the zlib library is described by RFCs (Request for
   931  //   Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950
   932  //   (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format).
   933  
   934  // zconf.h -- configuration of the zlib compression library
   935  // Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler
   936  // For conditions of distribution and use, see copyright notice in zlib.h
   937  
   938  // @(#) $Id$
   939  
   940  // If you *really* need a unique prefix for all types and library functions,
   941  // compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
   942  // Even better than compiling with -DZ_PREFIX would be to use configure to set
   943  // this permanently in zconf.h using "./configure --zprefix".
   944  
   945  // Compile with -DMAXSEG_64K if the alloc function cannot allocate more
   946  // than 64k bytes at a time (needed on systems with 16-bit int).
   947  
   948  // -
   949  // SPDX-License-Identifier: BSD-3-Clause
   950  //
   951  // Copyright (c) 1990, 1993
   952  //	The Regents of the University of California.  All rights reserved.
   953  //
   954  // Redistribution and use in source and binary forms, with or without
   955  // modification, are permitted provided that the following conditions
   956  // are met:
   957  // 1. Redistributions of source code must retain the above copyright
   958  //    notice, this list of conditions and the following disclaimer.
   959  // 2. Redistributions in binary form must reproduce the above copyright
   960  //    notice, this list of conditions and the following disclaimer in the
   961  //    documentation and/or other materials provided with the distribution.
   962  // 3. Neither the name of the University nor the names of its contributors
   963  //    may be used to endorse or promote products derived from this software
   964  //    without specific prior written permission.
   965  //
   966  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
   967  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
   968  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
   969  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
   970  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
   971  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
   972  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
   973  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
   974  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
   975  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   976  // SUCH DAMAGE.
   977  //
   978  //	@(#)stddef.h	8.1 (Berkeley) 6/2/93
   979  //
   980  // $FreeBSD$
   981  
   982  // -
   983  // SPDX-License-Identifier: BSD-3-Clause
   984  //
   985  // Copyright (c) 1991, 1993
   986  //	The Regents of the University of California.  All rights reserved.
   987  //
   988  // This code is derived from software contributed to Berkeley by
   989  // Berkeley Software Design, Inc.
   990  //
   991  // Redistribution and use in source and binary forms, with or without
   992  // modification, are permitted provided that the following conditions
   993  // are met:
   994  // 1. Redistributions of source code must retain the above copyright
   995  //    notice, this list of conditions and the following disclaimer.
   996  // 2. Redistributions in binary form must reproduce the above copyright
   997  //    notice, this list of conditions and the following disclaimer in the
   998  //    documentation and/or other materials provided with the distribution.
   999  // 3. Neither the name of the University nor the names of its contributors
  1000  //    may be used to endorse or promote products derived from this software
  1001  //    without specific prior written permission.
  1002  //
  1003  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1004  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1005  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1006  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1007  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1008  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1009  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1010  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1011  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1012  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1013  // SUCH DAMAGE.
  1014  //
  1015  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  1016  // $FreeBSD$
  1017  
  1018  // Testing against Clang-specific extensions.
  1019  
  1020  // This code has been put in place to help reduce the addition of
  1021  // compiler specific defines in FreeBSD code.  It helps to aid in
  1022  // having a compiler-agnostic source tree.
  1023  
  1024  // Compiler memory barriers, specific to gcc and clang.
  1025  
  1026  // XXX: if __GNUC__ >= 2: not tested everywhere originally, where replaced
  1027  
  1028  // Macro to test if we're using a specific version of gcc or later.
  1029  
  1030  // The __CONCAT macro is used to concatenate parts of symbol names, e.g.
  1031  // with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
  1032  // The __CONCAT macro is a bit tricky to use if it must work in non-ANSI
  1033  // mode -- there must be no spaces between its arguments, and for nested
  1034  // __CONCAT's, all the __CONCAT's must be at the left.  __CONCAT can also
  1035  // concatenate double-quoted strings produced by the __STRING macro, but
  1036  // this only works with ANSI C.
  1037  //
  1038  // __XSTRING is like __STRING, but it expands any macros in its argument
  1039  // first.  It is only available with ANSI C.
  1040  
  1041  // Compiler-dependent macros to help declare dead (non-returning) and
  1042  // pure (no side effects) functions, and unused variables.  They are
  1043  // null except for versions of gcc that are known to support the features
  1044  // properly (old versions of gcc-2 supported the dead and pure features
  1045  // in a different (wrong) way).  If we do not provide an implementation
  1046  // for a given compiler, let the compile fail if it is told to use
  1047  // a feature that we cannot live without.
  1048  
  1049  // Keywords added in C11.
  1050  
  1051  // Emulation of C11 _Generic().  Unlike the previously defined C11
  1052  // keywords, it is not possible to implement this using exactly the same
  1053  // syntax.  Therefore implement something similar under the name
  1054  // __generic().  Unlike _Generic(), this macro can only distinguish
  1055  // between a single type, so it requires nested invocations to
  1056  // distinguish multiple cases.
  1057  
  1058  // C99 Static array indices in function parameter declarations.  Syntax such as:
  1059  // void bar(int myArray[static 10]);
  1060  // is allowed in C99 but not in C++.  Define __min_size appropriately so
  1061  // headers using it can be compiled in either language.  Use like this:
  1062  // void bar(int myArray[__min_size(10)]);
  1063  
  1064  // XXX: should use `#if __STDC_VERSION__ < 199901'.
  1065  
  1066  // C++11 exposes a load of C99 stuff
  1067  
  1068  // GCC 2.95 provides `__restrict' as an extension to C90 to support the
  1069  // C99-specific `restrict' type qualifier.  We happen to use `__restrict' as
  1070  // a way to define the `restrict' type qualifier without disturbing older
  1071  // software that is unaware of C99 keywords.
  1072  
  1073  // GNU C version 2.96 adds explicit branch prediction so that
  1074  // the CPU back-end can hint the processor and also so that
  1075  // code blocks can be reordered such that the predicted path
  1076  // sees a more linear flow, thus improving cache behavior, etc.
  1077  //
  1078  // The following two macros provide us with a way to utilize this
  1079  // compiler feature.  Use __predict_true() if you expect the expression
  1080  // to evaluate to true, and __predict_false() if you expect the
  1081  // expression to evaluate to false.
  1082  //
  1083  // A few notes about usage:
  1084  //
  1085  //	* Generally, __predict_false() error condition checks (unless
  1086  //	  you have some _strong_ reason to do otherwise, in which case
  1087  //	  document it), and/or __predict_true() `no-error' condition
  1088  //	  checks, assuming you want to optimize for the no-error case.
  1089  //
  1090  //	* Other than that, if you don't know the likelihood of a test
  1091  //	  succeeding from empirical or other `hard' evidence, don't
  1092  //	  make predictions.
  1093  //
  1094  //	* These are meant to be used in places that are run `a lot'.
  1095  //	  It is wasteful to make predictions in code that is run
  1096  //	  seldomly (e.g. at subsystem initialization time) as the
  1097  //	  basic block reordering that this affects can often generate
  1098  //	  larger code.
  1099  
  1100  // We define this here since <stddef.h>, <sys/queue.h>, and <sys/types.h>
  1101  // require it.
  1102  
  1103  // Given the pointer x to the member m of the struct s, return
  1104  // a pointer to the containing structure.  When using GCC, we first
  1105  // assign pointer x to a local variable, to check that its type is
  1106  // compatible with member m.
  1107  
  1108  // Compiler-dependent macros to declare that functions take printf-like
  1109  // or scanf-like arguments.  They are null except for versions of gcc
  1110  // that are known to support the features properly (old versions of gcc-2
  1111  // didn't permit keeping the keywords out of the application namespace).
  1112  
  1113  // Compiler-dependent macros that rely on FreeBSD-specific extensions.
  1114  
  1115  // Embed the rcs id of a source file in the resulting library.  Note that in
  1116  // more recent ELF binutils, we use .ident allowing the ID to be stripped.
  1117  // Usage:
  1118  //	__FBSDID("$FreeBSD$");
  1119  
  1120  // -
  1121  // The following definitions are an extension of the behavior originally
  1122  // implemented in <sys/_posix.h>, but with a different level of granularity.
  1123  // POSIX.1 requires that the macros we test be defined before any standard
  1124  // header file is included.
  1125  //
  1126  // Here's a quick run-down of the versions:
  1127  //  defined(_POSIX_SOURCE)		1003.1-1988
  1128  //  _POSIX_C_SOURCE == 1		1003.1-1990
  1129  //  _POSIX_C_SOURCE == 2		1003.2-1992 C Language Binding Option
  1130  //  _POSIX_C_SOURCE == 199309		1003.1b-1993
  1131  //  _POSIX_C_SOURCE == 199506		1003.1c-1995, 1003.1i-1995,
  1132  //					and the omnibus ISO/IEC 9945-1: 1996
  1133  //  _POSIX_C_SOURCE == 200112		1003.1-2001
  1134  //  _POSIX_C_SOURCE == 200809		1003.1-2008
  1135  //
  1136  // In addition, the X/Open Portability Guide, which is now the Single UNIX
  1137  // Specification, defines a feature-test macro which indicates the version of
  1138  // that specification, and which subsumes _POSIX_C_SOURCE.
  1139  //
  1140  // Our macros begin with two underscores to avoid namespace screwage.
  1141  
  1142  // Deal with IEEE Std. 1003.1-1990, in which _POSIX_C_SOURCE == 1.
  1143  
  1144  // Deal with IEEE Std. 1003.2-1992, in which _POSIX_C_SOURCE == 2.
  1145  
  1146  // Deal with various X/Open Portability Guides and Single UNIX Spec.
  1147  
  1148  // Deal with all versions of POSIX.  The ordering relative to the tests above is
  1149  // important.
  1150  // -
  1151  // Deal with _ANSI_SOURCE:
  1152  // If it is defined, and no other compilation environment is explicitly
  1153  // requested, then define our internal feature-test macros to zero.  This
  1154  // makes no difference to the preprocessor (undefined symbols in preprocessing
  1155  // expressions are defined to have value zero), but makes it more convenient for
  1156  // a test program to print out the values.
  1157  //
  1158  // If a program mistakenly defines _ANSI_SOURCE and some other macro such as
  1159  // _POSIX_C_SOURCE, we will assume that it wants the broader compilation
  1160  // environment (and in fact we will never get here).
  1161  
  1162  // User override __EXT1_VISIBLE
  1163  
  1164  // Old versions of GCC use non-standard ARM arch symbols; acle-compat.h
  1165  // translates them to __ARM_ARCH and the modern feature symbols defined by ARM.
  1166  
  1167  // Nullability qualifiers: currently only supported by Clang.
  1168  
  1169  // Type Safety Checking
  1170  //
  1171  // Clang provides additional attributes to enable checking type safety
  1172  // properties that cannot be enforced by the C type system.
  1173  
  1174  // Lock annotations.
  1175  //
  1176  // Clang provides support for doing basic thread-safety tests at
  1177  // compile-time, by marking which locks will/should be held when
  1178  // entering/leaving a functions.
  1179  //
  1180  // Furthermore, it is also possible to annotate variables and structure
  1181  // members to enforce that they are only accessed when certain locks are
  1182  // held.
  1183  
  1184  // Structure implements a lock.
  1185  
  1186  // Function acquires an exclusive or shared lock.
  1187  
  1188  // Function attempts to acquire an exclusive or shared lock.
  1189  
  1190  // Function releases a lock.
  1191  
  1192  // Function asserts that an exclusive or shared lock is held.
  1193  
  1194  // Function requires that an exclusive or shared lock is or is not held.
  1195  
  1196  // Function should not be analyzed.
  1197  
  1198  // Function or variable should not be sanitized, i.e. by AddressSanitizer.
  1199  // GCC has the nosanitize attribute, but as a function attribute only, and
  1200  // warns on use as a variable attribute.
  1201  
  1202  // Guard variables and structure members by lock.
  1203  
  1204  // -
  1205  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  1206  //
  1207  // Copyright (c) 2003 Marcel Moolenaar
  1208  // All rights reserved.
  1209  //
  1210  // Redistribution and use in source and binary forms, with or without
  1211  // modification, are permitted provided that the following conditions
  1212  // are met:
  1213  //
  1214  // 1. Redistributions of source code must retain the above copyright
  1215  //    notice, this list of conditions and the following disclaimer.
  1216  // 2. Redistributions in binary form must reproduce the above copyright
  1217  //    notice, this list of conditions and the following disclaimer in the
  1218  //    documentation and/or other materials provided with the distribution.
  1219  //
  1220  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  1221  // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  1222  // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  1223  // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  1224  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  1225  // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  1226  // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  1227  // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  1228  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  1229  // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  1230  //
  1231  // $FreeBSD$
  1232  
  1233  // -
  1234  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  1235  //
  1236  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  1237  // All rights reserved.
  1238  //
  1239  // Redistribution and use in source and binary forms, with or without
  1240  // modification, are permitted provided that the following conditions
  1241  // are met:
  1242  // 1. Redistributions of source code must retain the above copyright
  1243  //    notice, this list of conditions and the following disclaimer.
  1244  // 2. Redistributions in binary form must reproduce the above copyright
  1245  //    notice, this list of conditions and the following disclaimer in the
  1246  //    documentation and/or other materials provided with the distribution.
  1247  //
  1248  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  1249  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1250  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1251  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  1252  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1253  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1254  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1255  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1256  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1257  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1258  // SUCH DAMAGE.
  1259  //
  1260  // $FreeBSD$
  1261  
  1262  // -
  1263  // SPDX-License-Identifier: BSD-3-Clause
  1264  //
  1265  // Copyright (c) 1991, 1993
  1266  //	The Regents of the University of California.  All rights reserved.
  1267  //
  1268  // This code is derived from software contributed to Berkeley by
  1269  // Berkeley Software Design, Inc.
  1270  //
  1271  // Redistribution and use in source and binary forms, with or without
  1272  // modification, are permitted provided that the following conditions
  1273  // are met:
  1274  // 1. Redistributions of source code must retain the above copyright
  1275  //    notice, this list of conditions and the following disclaimer.
  1276  // 2. Redistributions in binary form must reproduce the above copyright
  1277  //    notice, this list of conditions and the following disclaimer in the
  1278  //    documentation and/or other materials provided with the distribution.
  1279  // 3. Neither the name of the University nor the names of its contributors
  1280  //    may be used to endorse or promote products derived from this software
  1281  //    without specific prior written permission.
  1282  //
  1283  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1284  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1285  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1286  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1287  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1288  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1289  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1290  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1291  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1292  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1293  // SUCH DAMAGE.
  1294  //
  1295  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  1296  // $FreeBSD$
  1297  
  1298  // -
  1299  // This file is in the public domain.
  1300  // $FreeBSD$
  1301  
  1302  // -
  1303  // SPDX-License-Identifier: BSD-4-Clause
  1304  //
  1305  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  1306  // Copyright (c) 1990, 1993
  1307  //	The Regents of the University of California.  All rights reserved.
  1308  //
  1309  // Redistribution and use in source and binary forms, with or without
  1310  // modification, are permitted provided that the following conditions
  1311  // are met:
  1312  // 1. Redistributions of source code must retain the above copyright
  1313  //    notice, this list of conditions and the following disclaimer.
  1314  // 2. Redistributions in binary form must reproduce the above copyright
  1315  //    notice, this list of conditions and the following disclaimer in the
  1316  //    documentation and/or other materials provided with the distribution.
  1317  // 3. All advertising materials mentioning features or use of this software
  1318  //    must display the following acknowledgement:
  1319  //	This product includes software developed by the University of
  1320  //	California, Berkeley and its contributors.
  1321  // 4. Neither the name of the University nor the names of its contributors
  1322  //    may be used to endorse or promote products derived from this software
  1323  //    without specific prior written permission.
  1324  //
  1325  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1326  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1327  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1328  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1329  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1330  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1331  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1332  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1333  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1334  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1335  // SUCH DAMAGE.
  1336  //
  1337  //	From: @(#)ansi.h	8.2 (Berkeley) 1/4/94
  1338  //	From: @(#)types.h	8.3 (Berkeley) 1/5/94
  1339  // $FreeBSD$
  1340  
  1341  // -
  1342  // This file is in the public domain.
  1343  // $FreeBSD$
  1344  
  1345  // -
  1346  // SPDX-License-Identifier: BSD-3-Clause
  1347  //
  1348  // Copyright (c) 1988, 1993
  1349  //	The Regents of the University of California.  All rights reserved.
  1350  //
  1351  // Redistribution and use in source and binary forms, with or without
  1352  // modification, are permitted provided that the following conditions
  1353  // are met:
  1354  // 1. Redistributions of source code must retain the above copyright
  1355  //    notice, this list of conditions and the following disclaimer.
  1356  // 2. Redistributions in binary form must reproduce the above copyright
  1357  //    notice, this list of conditions and the following disclaimer in the
  1358  //    documentation and/or other materials provided with the distribution.
  1359  // 3. Neither the name of the University nor the names of its contributors
  1360  //    may be used to endorse or promote products derived from this software
  1361  //    without specific prior written permission.
  1362  //
  1363  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1364  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1365  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1366  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1367  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1368  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1369  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1370  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1371  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1372  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1373  // SUCH DAMAGE.
  1374  //
  1375  //	@(#)limits.h	8.3 (Berkeley) 1/4/94
  1376  // $FreeBSD$
  1377  
  1378  // According to ANSI (section 2.2.4.2), the values below must be usable by
  1379  // #if preprocessing directives.  Additionally, the expression must have the
  1380  // same type as would an expression that is an object of the corresponding
  1381  // type converted according to the integral promotions.  The subtraction for
  1382  // INT_MIN, etc., is so the value is not unsigned; e.g., 0x80000000 is an
  1383  // unsigned int for 32-bit two's complement ANSI compilers (section 3.1.3.2).
  1384  
  1385  // max value for an unsigned long long
  1386  
  1387  // Quads and longs are the same on the amd64.  Ensure they stay in sync.
  1388  
  1389  // Minimum signal stack size.
  1390  
  1391  // Basic types upon which most other types are built.
  1392  type X__int8_t = int8     /* _types.h:55:22 */
  1393  type X__uint8_t = uint8   /* _types.h:56:24 */
  1394  type X__int16_t = int16   /* _types.h:57:17 */
  1395  type X__uint16_t = uint16 /* _types.h:58:25 */
  1396  type X__int32_t = int32   /* _types.h:59:15 */
  1397  type X__uint32_t = uint32 /* _types.h:60:23 */
  1398  type X__int64_t = int64   /* _types.h:62:16 */
  1399  type X__uint64_t = uint64 /* _types.h:63:24 */
  1400  
  1401  // Standard type definitions.
  1402  type X__clock_t = X__int32_t         /* _types.h:75:19 */ // clock()...
  1403  type X__critical_t = X__int64_t      /* _types.h:76:19 */
  1404  type X__double_t = float64           /* _types.h:78:17 */
  1405  type X__float_t = float32            /* _types.h:79:16 */
  1406  type X__intfptr_t = X__int64_t       /* _types.h:81:19 */
  1407  type X__intptr_t = X__int64_t        /* _types.h:82:19 */
  1408  type X__intmax_t = X__int64_t        /* _types.h:93:19 */
  1409  type X__int_fast8_t = X__int32_t     /* _types.h:94:19 */
  1410  type X__int_fast16_t = X__int32_t    /* _types.h:95:19 */
  1411  type X__int_fast32_t = X__int32_t    /* _types.h:96:19 */
  1412  type X__int_fast64_t = X__int64_t    /* _types.h:97:19 */
  1413  type X__int_least8_t = X__int8_t     /* _types.h:98:18 */
  1414  type X__int_least16_t = X__int16_t   /* _types.h:99:19 */
  1415  type X__int_least32_t = X__int32_t   /* _types.h:100:19 */
  1416  type X__int_least64_t = X__int64_t   /* _types.h:101:19 */
  1417  type X__ptrdiff_t = X__int64_t       /* _types.h:103:19 */ // ptr1 - ptr2
  1418  type X__register_t = X__int64_t      /* _types.h:104:19 */
  1419  type X__segsz_t = X__int64_t         /* _types.h:105:19 */ // segment size (in pages)
  1420  type X__size_t = X__uint64_t         /* _types.h:106:20 */ // sizeof()
  1421  type X__ssize_t = X__int64_t         /* _types.h:107:19 */ // byte count or error
  1422  type X__time_t = X__int64_t          /* _types.h:108:19 */ // time()...
  1423  type X__uintfptr_t = X__uint64_t     /* _types.h:109:20 */
  1424  type X__uintptr_t = X__uint64_t      /* _types.h:110:20 */
  1425  type X__uintmax_t = X__uint64_t      /* _types.h:121:20 */
  1426  type X__uint_fast8_t = X__uint32_t   /* _types.h:122:20 */
  1427  type X__uint_fast16_t = X__uint32_t  /* _types.h:123:20 */
  1428  type X__uint_fast32_t = X__uint32_t  /* _types.h:124:20 */
  1429  type X__uint_fast64_t = X__uint64_t  /* _types.h:125:20 */
  1430  type X__uint_least8_t = X__uint8_t   /* _types.h:126:19 */
  1431  type X__uint_least16_t = X__uint16_t /* _types.h:127:20 */
  1432  type X__uint_least32_t = X__uint32_t /* _types.h:128:20 */
  1433  type X__uint_least64_t = X__uint64_t /* _types.h:129:20 */
  1434  type X__u_register_t = X__uint64_t   /* _types.h:131:20 */
  1435  type X__vm_offset_t = X__uint64_t    /* _types.h:132:20 */
  1436  type X__vm_paddr_t = X__uint64_t     /* _types.h:133:20 */
  1437  type X__vm_size_t = X__uint64_t      /* _types.h:134:20 */
  1438  type X___wchar_t = int32             /* _types.h:141:14 */
  1439  
  1440  // Standard type definitions.
  1441  type X__blksize_t = X__int32_t   /* _types.h:40:19 */ // file block size
  1442  type X__blkcnt_t = X__int64_t    /* _types.h:41:19 */ // file block count
  1443  type X__clockid_t = X__int32_t   /* _types.h:42:19 */ // clock_gettime()...
  1444  type X__fflags_t = X__uint32_t   /* _types.h:43:20 */ // file flags
  1445  type X__fsblkcnt_t = X__uint64_t /* _types.h:44:20 */
  1446  type X__fsfilcnt_t = X__uint64_t /* _types.h:45:20 */
  1447  type X__gid_t = X__uint32_t      /* _types.h:46:20 */
  1448  type X__id_t = X__int64_t        /* _types.h:47:19 */ // can hold a gid_t, pid_t, or uid_t
  1449  type X__ino_t = X__uint64_t      /* _types.h:48:20 */ // inode number
  1450  type X__key_t = int64            /* _types.h:49:15 */ // IPC key (for Sys V IPC)
  1451  type X__lwpid_t = X__int32_t     /* _types.h:50:19 */ // Thread ID (a.k.a. LWP)
  1452  type X__mode_t = X__uint16_t     /* _types.h:51:20 */ // permissions
  1453  type X__accmode_t = int32        /* _types.h:52:14 */ // access permissions
  1454  type X__nl_item = int32          /* _types.h:53:14 */
  1455  type X__nlink_t = X__uint64_t    /* _types.h:54:20 */ // link count
  1456  type X__off_t = X__int64_t       /* _types.h:55:19 */ // file offset
  1457  type X__off64_t = X__int64_t     /* _types.h:56:19 */ // file offset (alias)
  1458  type X__pid_t = X__int32_t       /* _types.h:57:19 */ // process [group]
  1459  type X__rlim_t = X__int64_t      /* _types.h:58:19 */ // resource limit - intentionally
  1460  // signed, because of legacy code
  1461  // that uses -1 for RLIM_INFINITY
  1462  type X__sa_family_t = X__uint8_t /* _types.h:61:19 */
  1463  type X__socklen_t = X__uint32_t  /* _types.h:62:20 */
  1464  type X__suseconds_t = int64      /* _types.h:63:15 */ // microseconds (signed)
  1465  type X__timer_t = uintptr        /* _types.h:64:24 */ // timer_gettime()...
  1466  type X__mqd_t = uintptr          /* _types.h:65:21 */ // mq_open()...
  1467  type X__uid_t = X__uint32_t      /* _types.h:66:20 */
  1468  type X__useconds_t = uint32      /* _types.h:67:22 */ // microseconds (unsigned)
  1469  type X__cpuwhich_t = int32       /* _types.h:68:14 */ // which parameter for cpuset.
  1470  type X__cpulevel_t = int32       /* _types.h:69:14 */ // level parameter for cpuset.
  1471  type X__cpusetid_t = int32       /* _types.h:70:14 */ // cpuset identifier.
  1472  type X__daddr_t = X__int64_t     /* _types.h:71:19 */ // bwrite(3), FIOBMAP2, etc
  1473  
  1474  // Unusual type definitions.
  1475  // rune_t is declared to be an ``int'' instead of the more natural
  1476  // ``unsigned long'' or ``long''.  Two things are happening here.  It is not
  1477  // unsigned so that EOF (-1) can be naturally assigned to it and used.  Also,
  1478  // it looks like 10646 will be a 31 bit standard.  This means that if your
  1479  // ints cannot hold 32 bits, you will be in trouble.  The reason an int was
  1480  // chosen over a long is that the is*() and to*() routines take ints (says
  1481  // ANSI C), but they use __ct_rune_t instead of int.
  1482  //
  1483  // NOTE: rune_t is not covered by ANSI nor other standards, and should not
  1484  // be instantiated outside of lib/libc/locale.  Use wchar_t.  wint_t and
  1485  // rune_t must be the same type.  Also, wint_t should be able to hold all
  1486  // members of the largest character set plus one extra value (WEOF), and
  1487  // must be at least 16 bits.
  1488  type X__ct_rune_t = int32     /* _types.h:91:14 */ // arg type for ctype funcs
  1489  type X__rune_t = X__ct_rune_t /* _types.h:92:21 */ // rune_t (see above)
  1490  type X__wint_t = X__ct_rune_t /* _types.h:93:21 */ // wint_t (see above)
  1491  
  1492  // Clang already provides these types as built-ins, but only in C++ mode.
  1493  type X__char16_t = X__uint_least16_t /* _types.h:97:26 */
  1494  type X__char32_t = X__uint_least32_t /* _types.h:98:26 */
  1495  // In C++11, char16_t and char32_t are built-in types.
  1496  
  1497  type X__max_align_t = struct {
  1498  	F__max_align1 int64
  1499  	F__max_align2 float64
  1500  } /* _types.h:111:3 */
  1501  
  1502  type X__dev_t = X__uint64_t /* _types.h:113:20 */ // device number
  1503  
  1504  type X__fixpt_t = X__uint32_t /* _types.h:115:20 */ // fixed point number
  1505  
  1506  // mbstate_t is an opaque object to keep conversion state during multibyte
  1507  // stream conversions.
  1508  type X__mbstate_t = struct {
  1509  	F__ccgo_pad1 [0]uint64
  1510  	F__mbstate8  [128]int8
  1511  } /* _types.h:124:3 */
  1512  
  1513  type X__rman_res_t = X__uintmax_t /* _types.h:126:25 */
  1514  
  1515  // Types for varargs. These are all provided by builtin types these
  1516  // days, so centralize their definition.
  1517  type X__va_list = X__builtin_va_list /* _types.h:133:27 */ // internally known to gcc
  1518  type X__gnuc_va_list = X__va_list    /* _types.h:140:20 */
  1519  
  1520  type Rune_t = X__rune_t /* stddef.h:50:18 */
  1521  
  1522  type Max_align_t = X__max_align_t /* stddef.h:69:23 */
  1523  
  1524  // ISO/IEC 9899:2011 K.3.3.2
  1525  type Rsize_t = Size_t /* stddef.h:81:16 */
  1526  
  1527  type Z_size_t = Size_t /* zconf.h:248:21 */
  1528  
  1529  // Maximum value for memLevel in deflateInit2
  1530  
  1531  // Maximum value for windowBits in deflateInit2 and inflateInit2.
  1532  // WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
  1533  // created by gzip. (Files created by minigzip can still be extracted by
  1534  // gzip.)
  1535  
  1536  // The memory requirements for deflate are (in bytes):
  1537  //             (1 << (windowBits+2)) +  (1 << (memLevel+9))
  1538  //  that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
  1539  //  plus a few kilobytes for small objects. For example, if you want to reduce
  1540  //  the default memory requirements from 256K to 128K, compile with
  1541  //      make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
  1542  //  Of course this will generally degrade compression (there's no free lunch).
  1543  //
  1544  //    The memory requirements for inflate are (in bytes) 1 << windowBits
  1545  //  that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
  1546  //  for small objects.
  1547  
  1548  // Type declarations
  1549  
  1550  // The following definitions for FAR are needed only for MSDOS mixed
  1551  // model programming (small or medium model with some far allocations).
  1552  // This was tested only with MSC; for other MSDOS compilers you may have
  1553  // to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
  1554  // just define FAR to be empty.
  1555  
  1556  type Byte = uint8   /* zconf.h:391:24 */ // 8 bits
  1557  type UInt = uint32  /* zconf.h:393:24 */ // 16 bits or more
  1558  type ULong = uint64 /* zconf.h:394:24 */ // 32 bits or more
  1559  
  1560  type Bytef = Byte   /* zconf.h:400:22 */
  1561  type Charf = int8   /* zconf.h:402:19 */
  1562  type Intf = int32   /* zconf.h:403:19 */
  1563  type UIntf = UInt   /* zconf.h:404:19 */
  1564  type ULongf = ULong /* zconf.h:405:19 */
  1565  
  1566  type Voidpc = uintptr /* zconf.h:408:23 */
  1567  type Voidpf = uintptr /* zconf.h:409:23 */
  1568  type Voidp = uintptr  /* zconf.h:410:23 */
  1569  
  1570  // -
  1571  // SPDX-License-Identifier: BSD-3-Clause
  1572  //
  1573  // Copyright (c) 1988, 1993
  1574  //	The Regents of the University of California.  All rights reserved.
  1575  //
  1576  // Redistribution and use in source and binary forms, with or without
  1577  // modification, are permitted provided that the following conditions
  1578  // are met:
  1579  // 1. Redistributions of source code must retain the above copyright
  1580  //    notice, this list of conditions and the following disclaimer.
  1581  // 2. Redistributions in binary form must reproduce the above copyright
  1582  //    notice, this list of conditions and the following disclaimer in the
  1583  //    documentation and/or other materials provided with the distribution.
  1584  // 3. Neither the name of the University nor the names of its contributors
  1585  //    may be used to endorse or promote products derived from this software
  1586  //    without specific prior written permission.
  1587  //
  1588  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1589  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1590  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1591  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1592  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1593  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1594  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1595  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1596  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1597  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1598  // SUCH DAMAGE.
  1599  //
  1600  //	@(#)limits.h	8.2 (Berkeley) 1/4/94
  1601  // $FreeBSD$
  1602  
  1603  // -
  1604  // SPDX-License-Identifier: BSD-3-Clause
  1605  //
  1606  // Copyright (c) 1991, 1993
  1607  //	The Regents of the University of California.  All rights reserved.
  1608  //
  1609  // This code is derived from software contributed to Berkeley by
  1610  // Berkeley Software Design, Inc.
  1611  //
  1612  // Redistribution and use in source and binary forms, with or without
  1613  // modification, are permitted provided that the following conditions
  1614  // are met:
  1615  // 1. Redistributions of source code must retain the above copyright
  1616  //    notice, this list of conditions and the following disclaimer.
  1617  // 2. Redistributions in binary form must reproduce the above copyright
  1618  //    notice, this list of conditions and the following disclaimer in the
  1619  //    documentation and/or other materials provided with the distribution.
  1620  // 3. Neither the name of the University nor the names of its contributors
  1621  //    may be used to endorse or promote products derived from this software
  1622  //    without specific prior written permission.
  1623  //
  1624  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1625  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1626  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1627  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1628  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1629  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1630  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1631  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1632  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1633  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1634  // SUCH DAMAGE.
  1635  //
  1636  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  1637  // $FreeBSD$
  1638  
  1639  // -
  1640  // SPDX-License-Identifier: BSD-3-Clause
  1641  //
  1642  // Copyright (c) 1988, 1993
  1643  //	The Regents of the University of California.  All rights reserved.
  1644  //
  1645  // Redistribution and use in source and binary forms, with or without
  1646  // modification, are permitted provided that the following conditions
  1647  // are met:
  1648  // 1. Redistributions of source code must retain the above copyright
  1649  //    notice, this list of conditions and the following disclaimer.
  1650  // 2. Redistributions in binary form must reproduce the above copyright
  1651  //    notice, this list of conditions and the following disclaimer in the
  1652  //    documentation and/or other materials provided with the distribution.
  1653  // 3. Neither the name of the University nor the names of its contributors
  1654  //    may be used to endorse or promote products derived from this software
  1655  //    without specific prior written permission.
  1656  //
  1657  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1658  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1659  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1660  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1661  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1662  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1663  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1664  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1665  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1666  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1667  // SUCH DAMAGE.
  1668  //
  1669  // $FreeBSD$
  1670  
  1671  // -
  1672  // SPDX-License-Identifier: BSD-3-Clause
  1673  //
  1674  // Copyright (c) 1991, 1993
  1675  //	The Regents of the University of California.  All rights reserved.
  1676  //
  1677  // This code is derived from software contributed to Berkeley by
  1678  // Berkeley Software Design, Inc.
  1679  //
  1680  // Redistribution and use in source and binary forms, with or without
  1681  // modification, are permitted provided that the following conditions
  1682  // are met:
  1683  // 1. Redistributions of source code must retain the above copyright
  1684  //    notice, this list of conditions and the following disclaimer.
  1685  // 2. Redistributions in binary form must reproduce the above copyright
  1686  //    notice, this list of conditions and the following disclaimer in the
  1687  //    documentation and/or other materials provided with the distribution.
  1688  // 3. Neither the name of the University nor the names of its contributors
  1689  //    may be used to endorse or promote products derived from this software
  1690  //    without specific prior written permission.
  1691  //
  1692  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1693  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1694  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1695  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1696  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1697  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1698  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1699  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1700  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1701  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1702  // SUCH DAMAGE.
  1703  //
  1704  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  1705  // $FreeBSD$
  1706  
  1707  // -
  1708  // This file is in the public domain.
  1709  // $FreeBSD$
  1710  
  1711  // -
  1712  // SPDX-License-Identifier: BSD-3-Clause
  1713  //
  1714  // Copyright (c) 1988, 1993
  1715  //	The Regents of the University of California.  All rights reserved.
  1716  //
  1717  // Redistribution and use in source and binary forms, with or without
  1718  // modification, are permitted provided that the following conditions
  1719  // are met:
  1720  // 1. Redistributions of source code must retain the above copyright
  1721  //    notice, this list of conditions and the following disclaimer.
  1722  // 2. Redistributions in binary form must reproduce the above copyright
  1723  //    notice, this list of conditions and the following disclaimer in the
  1724  //    documentation and/or other materials provided with the distribution.
  1725  // 3. Neither the name of the University nor the names of its contributors
  1726  //    may be used to endorse or promote products derived from this software
  1727  //    without specific prior written permission.
  1728  //
  1729  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1730  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1731  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1732  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1733  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1734  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1735  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1736  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1737  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1738  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1739  // SUCH DAMAGE.
  1740  //
  1741  //	@(#)limits.h	8.3 (Berkeley) 1/4/94
  1742  // $FreeBSD$
  1743  
  1744  // -
  1745  // SPDX-License-Identifier: BSD-3-Clause
  1746  //
  1747  // Copyright (c) 1988, 1993
  1748  //	The Regents of the University of California.  All rights reserved.
  1749  //
  1750  // Redistribution and use in source and binary forms, with or without
  1751  // modification, are permitted provided that the following conditions
  1752  // are met:
  1753  // 1. Redistributions of source code must retain the above copyright
  1754  //    notice, this list of conditions and the following disclaimer.
  1755  // 2. Redistributions in binary form must reproduce the above copyright
  1756  //    notice, this list of conditions and the following disclaimer in the
  1757  //    documentation and/or other materials provided with the distribution.
  1758  // 3. Neither the name of the University nor the names of its contributors
  1759  //    may be used to endorse or promote products derived from this software
  1760  //    without specific prior written permission.
  1761  //
  1762  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  1763  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1764  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1765  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  1766  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1767  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1768  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1769  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1770  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1771  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1772  // SUCH DAMAGE.
  1773  //
  1774  //	@(#)syslimits.h	8.1 (Berkeley) 6/2/93
  1775  // $FreeBSD$
  1776  
  1777  // Do not add any new variables here.  (See the comment at the end of
  1778  // the file for why.)
  1779  
  1780  // We leave the following values undefined to force applications to either
  1781  // assume conservative values or call sysconf() to get the current value.
  1782  //
  1783  // HOST_NAME_MAX
  1784  //
  1785  // (We should do this for most of the values currently defined here,
  1786  // but many programs are not prepared to deal with this yet.)
  1787  
  1788  type Z_crc_t = uint32 /* zconf.h:429:17 */
  1789  type Pthread_once = struct {
  1790  	Fstate       int32
  1791  	F__ccgo_pad1 [4]byte
  1792  	Fmutex       Pthread_mutex_t
  1793  } /* _pthreadtypes.h:52:1 */
  1794  
  1795  // Primitive system data type definitions required by P1003.1c.
  1796  //
  1797  // Note that P1003.1c specifies that there are no defined comparison
  1798  // or assignment operators for the types pthread_attr_t, pthread_cond_t,
  1799  // pthread_condattr_t, pthread_mutex_t, pthread_mutexattr_t.
  1800  type Pthread_t = uintptr             /* _pthreadtypes.h:67:26 */
  1801  type Pthread_attr_t = uintptr        /* _pthreadtypes.h:70:30 */
  1802  type Pthread_mutex_t = uintptr       /* _pthreadtypes.h:71:31 */
  1803  type Pthread_mutexattr_t = uintptr   /* _pthreadtypes.h:72:35 */
  1804  type Pthread_cond_t = uintptr        /* _pthreadtypes.h:73:30 */
  1805  type Pthread_condattr_t = uintptr    /* _pthreadtypes.h:74:34 */
  1806  type Pthread_key_t = int32           /* _pthreadtypes.h:75:20 */
  1807  type Pthread_once_t = Pthread_once   /* _pthreadtypes.h:76:30 */
  1808  type Pthread_rwlock_t = uintptr      /* _pthreadtypes.h:77:32 */
  1809  type Pthread_rwlockattr_t = uintptr  /* _pthreadtypes.h:78:35 */
  1810  type Pthread_barrier_t = uintptr     /* _pthreadtypes.h:79:33 */
  1811  type Pthread_barrierattr_t = uintptr /* _pthreadtypes.h:80:36 */
  1812  type Pthread_spinlock_t = uintptr    /* _pthreadtypes.h:81:33 */
  1813  
  1814  // Additional type definitions:
  1815  //
  1816  // Note that P1003.1c reserves the prefixes pthread_ and PTHREAD_ for
  1817  // use in header symbols.
  1818  type Pthread_addr_t = uintptr         /* _pthreadtypes.h:89:14 */
  1819  type Pthread_startroutine_t = uintptr /* _pthreadtypes.h:90:14 */
  1820  
  1821  type U_char = uint8   /* types.h:52:23 */
  1822  type U_short = uint16 /* types.h:53:24 */
  1823  type U_int = uint32   /* types.h:54:22 */
  1824  type U_long = uint64  /* types.h:55:23 */
  1825  type Ushort = uint16  /* types.h:57:24 */ // Sys V compatibility
  1826  type Uint = uint32    /* types.h:58:22 */ // Sys V compatibility
  1827  
  1828  // XXX POSIX sized integrals that should appear only in <sys/stdint.h>.
  1829  // -
  1830  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  1831  //
  1832  // Copyright (c) 2011 David E. O'Brien <obrien@FreeBSD.org>
  1833  // Copyright (c) 2001 Mike Barcroft <mike@FreeBSD.org>
  1834  // All rights reserved.
  1835  //
  1836  // Redistribution and use in source and binary forms, with or without
  1837  // modification, are permitted provided that the following conditions
  1838  // are met:
  1839  // 1. Redistributions of source code must retain the above copyright
  1840  //    notice, this list of conditions and the following disclaimer.
  1841  // 2. Redistributions in binary form must reproduce the above copyright
  1842  //    notice, this list of conditions and the following disclaimer in the
  1843  //    documentation and/or other materials provided with the distribution.
  1844  //
  1845  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  1846  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  1847  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  1848  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  1849  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  1850  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  1851  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  1852  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  1853  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  1854  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  1855  // SUCH DAMAGE.
  1856  //
  1857  // $FreeBSD$
  1858  
  1859  type Int8_t = X__int8_t /* _stdint.h:36:19 */
  1860  
  1861  type Int16_t = X__int16_t /* _stdint.h:41:20 */
  1862  
  1863  type Int32_t = X__int32_t /* _stdint.h:46:20 */
  1864  
  1865  type Int64_t = X__int64_t /* _stdint.h:51:20 */
  1866  
  1867  type Uint8_t = X__uint8_t /* _stdint.h:56:20 */
  1868  
  1869  type Uint16_t = X__uint16_t /* _stdint.h:61:21 */
  1870  
  1871  type Uint32_t = X__uint32_t /* _stdint.h:66:21 */
  1872  
  1873  type Uint64_t = X__uint64_t /* _stdint.h:71:21 */
  1874  
  1875  type Intptr_t = X__intptr_t   /* _stdint.h:76:21 */
  1876  type Uintptr_t = X__uintptr_t /* _stdint.h:80:22 */
  1877  type Intmax_t = X__intmax_t   /* _stdint.h:84:21 */
  1878  type Uintmax_t = X__uintmax_t /* _stdint.h:88:22 */
  1879  
  1880  type U_int8_t = X__uint8_t   /* types.h:67:19 */ // unsigned integrals (deprecated)
  1881  type U_int16_t = X__uint16_t /* types.h:68:20 */
  1882  type U_int32_t = X__uint32_t /* types.h:69:20 */
  1883  type U_int64_t = X__uint64_t /* types.h:70:20 */
  1884  
  1885  type U_quad_t = X__uint64_t /* types.h:72:20 */ // quads (deprecated)
  1886  type Quad_t = X__int64_t    /* types.h:73:19 */
  1887  type Qaddr_t = uintptr      /* types.h:74:16 */
  1888  
  1889  type Caddr_t = uintptr   /* types.h:76:14 */ // core address
  1890  type C_caddr_t = uintptr /* types.h:77:20 */ // core address, pointer to const
  1891  
  1892  type Blksize_t = X__blksize_t /* types.h:80:21 */
  1893  
  1894  type Cpuwhich_t = X__cpuwhich_t /* types.h:84:22 */
  1895  type Cpulevel_t = X__cpulevel_t /* types.h:85:22 */
  1896  type Cpusetid_t = X__cpusetid_t /* types.h:86:22 */
  1897  
  1898  type Blkcnt_t = X__blkcnt_t /* types.h:89:20 */
  1899  
  1900  type Clock_t = X__clock_t /* types.h:94:19 */
  1901  
  1902  type Clockid_t = X__clockid_t /* types.h:99:21 */
  1903  
  1904  type Critical_t = X__critical_t /* types.h:103:22 */ // Critical section value
  1905  type Daddr_t = X__daddr_t       /* types.h:104:19 */ // disk address
  1906  
  1907  type Dev_t = X__dev_t /* types.h:107:18 */ // device number or struct cdev
  1908  
  1909  type Fflags_t = X__fflags_t /* types.h:112:20 */ // file flags
  1910  
  1911  type Fixpt_t = X__fixpt_t /* types.h:116:19 */ // fixed point number
  1912  
  1913  type Fsblkcnt_t = X__fsblkcnt_t /* types.h:119:22 */
  1914  type Fsfilcnt_t = X__fsfilcnt_t /* types.h:120:22 */
  1915  
  1916  type Gid_t = X__gid_t /* types.h:125:18 */ // group id
  1917  
  1918  type In_addr_t = X__uint32_t /* types.h:130:20 */ // base type for internet address
  1919  
  1920  type In_port_t = X__uint16_t /* types.h:135:20 */
  1921  
  1922  type Id_t = X__id_t /* types.h:140:17 */ // can hold a uid_t or pid_t
  1923  
  1924  type Ino_t = X__ino_t /* types.h:145:18 */ // inode number
  1925  
  1926  type Key_t = X__key_t /* types.h:150:18 */ // IPC key (for Sys V IPC)
  1927  
  1928  type Lwpid_t = X__lwpid_t /* types.h:155:19 */ // Thread ID (a.k.a. LWP)
  1929  
  1930  type Mode_t = X__mode_t /* types.h:160:18 */ // permissions
  1931  
  1932  type Accmode_t = X__accmode_t /* types.h:165:21 */ // access permissions
  1933  
  1934  type Nlink_t = X__nlink_t /* types.h:170:19 */ // link count
  1935  
  1936  type Off_t = X__off_t /* types.h:175:18 */ // file offset
  1937  
  1938  type Off64_t = X__off64_t /* types.h:180:19 */ // file offset (alias)
  1939  
  1940  type Pid_t = X__pid_t /* types.h:185:18 */ // process id
  1941  
  1942  type Register_t = X__register_t /* types.h:189:22 */
  1943  
  1944  type Rlim_t = X__rlim_t /* types.h:192:18 */ // resource limit
  1945  
  1946  type Sbintime_t = X__int64_t /* types.h:196:19 */
  1947  
  1948  type Segsz_t = X__segsz_t /* types.h:198:19 */ // segment size (in pages)
  1949  
  1950  type Ssize_t = X__ssize_t /* types.h:206:19 */
  1951  
  1952  type Suseconds_t = X__suseconds_t /* types.h:211:23 */ // microseconds (signed)
  1953  
  1954  type Time_t = X__time_t /* types.h:216:18 */
  1955  
  1956  type Timer_t = X__timer_t /* types.h:221:19 */
  1957  
  1958  type Mqd_t = X__mqd_t /* types.h:226:17 */
  1959  
  1960  type U_register_t = X__u_register_t /* types.h:230:24 */
  1961  
  1962  type Uid_t = X__uid_t /* types.h:233:18 */ // user id
  1963  
  1964  type Useconds_t = X__useconds_t /* types.h:238:22 */ // microseconds (unsigned)
  1965  
  1966  type Cap_ioctl_t = uint64 /* types.h:244:23 */
  1967  
  1968  // Types suitable for exporting physical addresses, virtual addresses
  1969  // (pointers), and memory object sizes from the kernel independent of native
  1970  // word size.  These should be used in place of vm_paddr_t, (u)intptr_t, and
  1971  // size_t in structs which contain such types that are shared with userspace.
  1972  type Kpaddr_t = X__uint64_t /* types.h:260:20 */
  1973  type Kvaddr_t = X__uint64_t /* types.h:261:20 */
  1974  type Ksize_t = X__uint64_t  /* types.h:262:20 */
  1975  type Kssize_t = X__int64_t  /* types.h:263:19 */
  1976  
  1977  type Vm_offset_t = X__vm_offset_t /* types.h:265:23 */
  1978  type Vm_ooffset_t = X__uint64_t   /* types.h:266:20 */
  1979  type Vm_paddr_t = X__vm_paddr_t   /* types.h:267:22 */
  1980  type Vm_pindex_t = X__uint64_t    /* types.h:268:20 */
  1981  type Vm_size_t = X__vm_size_t     /* types.h:269:21 */
  1982  
  1983  type Rman_res_t = X__rman_res_t /* types.h:271:25 */
  1984  
  1985  // -
  1986  // SPDX-License-Identifier: BSD-3-Clause
  1987  //
  1988  // Copyright (c) 1992, 1993
  1989  //	The Regents of the University of California.  All rights reserved.
  1990  //
  1991  // Redistribution and use in source and binary forms, with or without
  1992  // modification, are permitted provided that the following conditions
  1993  // are met:
  1994  // 1. Redistributions of source code must retain the above copyright
  1995  //    notice, this list of conditions and the following disclaimer.
  1996  // 2. Redistributions in binary form must reproduce the above copyright
  1997  //    notice, this list of conditions and the following disclaimer in the
  1998  //    documentation and/or other materials provided with the distribution.
  1999  // 3. Neither the name of the University nor the names of its contributors
  2000  //    may be used to endorse or promote products derived from this software
  2001  //    without specific prior written permission.
  2002  //
  2003  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2004  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2005  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2006  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2007  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2008  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2009  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2010  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2011  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2012  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2013  // SUCH DAMAGE.
  2014  //
  2015  // $FreeBSD$
  2016  
  2017  // -
  2018  // SPDX-License-Identifier: BSD-3-Clause
  2019  //
  2020  // Copyright (c) 1991, 1993
  2021  //	The Regents of the University of California.  All rights reserved.
  2022  //
  2023  // This code is derived from software contributed to Berkeley by
  2024  // Berkeley Software Design, Inc.
  2025  //
  2026  // Redistribution and use in source and binary forms, with or without
  2027  // modification, are permitted provided that the following conditions
  2028  // are met:
  2029  // 1. Redistributions of source code must retain the above copyright
  2030  //    notice, this list of conditions and the following disclaimer.
  2031  // 2. Redistributions in binary form must reproduce the above copyright
  2032  //    notice, this list of conditions and the following disclaimer in the
  2033  //    documentation and/or other materials provided with the distribution.
  2034  // 3. Neither the name of the University nor the names of its contributors
  2035  //    may be used to endorse or promote products derived from this software
  2036  //    without specific prior written permission.
  2037  //
  2038  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2039  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2040  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2041  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2042  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2043  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2044  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2045  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2046  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2047  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2048  // SUCH DAMAGE.
  2049  //
  2050  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  2051  // $FreeBSD$
  2052  
  2053  // -
  2054  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  2055  //
  2056  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  2057  // All rights reserved.
  2058  //
  2059  // Redistribution and use in source and binary forms, with or without
  2060  // modification, are permitted provided that the following conditions
  2061  // are met:
  2062  // 1. Redistributions of source code must retain the above copyright
  2063  //    notice, this list of conditions and the following disclaimer.
  2064  // 2. Redistributions in binary form must reproduce the above copyright
  2065  //    notice, this list of conditions and the following disclaimer in the
  2066  //    documentation and/or other materials provided with the distribution.
  2067  //
  2068  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2069  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2070  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2071  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2072  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2073  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2074  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2075  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2076  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2077  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2078  // SUCH DAMAGE.
  2079  //
  2080  // $FreeBSD$
  2081  
  2082  // -
  2083  // SPDX-License-Identifier: BSD-3-Clause
  2084  //
  2085  // Copyright (c) 1982, 1986, 1989, 1991, 1993
  2086  //	The Regents of the University of California.  All rights reserved.
  2087  // (c) UNIX System Laboratories, Inc.
  2088  // All or some portions of this file are derived from material licensed
  2089  // to the University of California by American Telephone and Telegraph
  2090  // Co. or Unix System Laboratories, Inc. and are reproduced herein with
  2091  // the permission of UNIX System Laboratories, Inc.
  2092  //
  2093  // Redistribution and use in source and binary forms, with or without
  2094  // modification, are permitted provided that the following conditions
  2095  // are met:
  2096  // 1. Redistributions of source code must retain the above copyright
  2097  //    notice, this list of conditions and the following disclaimer.
  2098  // 2. Redistributions in binary form must reproduce the above copyright
  2099  //    notice, this list of conditions and the following disclaimer in the
  2100  //    documentation and/or other materials provided with the distribution.
  2101  // 3. Neither the name of the University nor the names of its contributors
  2102  //    may be used to endorse or promote products derived from this software
  2103  //    without specific prior written permission.
  2104  //
  2105  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2106  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2107  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2108  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2109  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2110  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2111  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2112  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2113  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2114  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2115  // SUCH DAMAGE.
  2116  //
  2117  //	@(#)signal.h	8.4 (Berkeley) 5/4/95
  2118  // $FreeBSD$
  2119  
  2120  // sigset_t macros.
  2121  
  2122  type X__sigset = struct{ F__bits [4]X__uint32_t } /* _sigset.h:53:9 */
  2123  
  2124  // -
  2125  // SPDX-License-Identifier: BSD-3-Clause
  2126  //
  2127  // Copyright (c) 1992, 1993
  2128  //	The Regents of the University of California.  All rights reserved.
  2129  //
  2130  // Redistribution and use in source and binary forms, with or without
  2131  // modification, are permitted provided that the following conditions
  2132  // are met:
  2133  // 1. Redistributions of source code must retain the above copyright
  2134  //    notice, this list of conditions and the following disclaimer.
  2135  // 2. Redistributions in binary form must reproduce the above copyright
  2136  //    notice, this list of conditions and the following disclaimer in the
  2137  //    documentation and/or other materials provided with the distribution.
  2138  // 3. Neither the name of the University nor the names of its contributors
  2139  //    may be used to endorse or promote products derived from this software
  2140  //    without specific prior written permission.
  2141  //
  2142  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2143  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2144  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2145  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2146  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2147  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2148  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2149  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2150  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2151  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2152  // SUCH DAMAGE.
  2153  //
  2154  // $FreeBSD$
  2155  
  2156  // -
  2157  // SPDX-License-Identifier: BSD-3-Clause
  2158  //
  2159  // Copyright (c) 1991, 1993
  2160  //	The Regents of the University of California.  All rights reserved.
  2161  //
  2162  // This code is derived from software contributed to Berkeley by
  2163  // Berkeley Software Design, Inc.
  2164  //
  2165  // Redistribution and use in source and binary forms, with or without
  2166  // modification, are permitted provided that the following conditions
  2167  // are met:
  2168  // 1. Redistributions of source code must retain the above copyright
  2169  //    notice, this list of conditions and the following disclaimer.
  2170  // 2. Redistributions in binary form must reproduce the above copyright
  2171  //    notice, this list of conditions and the following disclaimer in the
  2172  //    documentation and/or other materials provided with the distribution.
  2173  // 3. Neither the name of the University nor the names of its contributors
  2174  //    may be used to endorse or promote products derived from this software
  2175  //    without specific prior written permission.
  2176  //
  2177  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2178  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2179  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2180  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2181  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2182  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2183  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2184  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2185  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2186  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2187  // SUCH DAMAGE.
  2188  //
  2189  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  2190  // $FreeBSD$
  2191  
  2192  // -
  2193  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  2194  //
  2195  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  2196  // All rights reserved.
  2197  //
  2198  // Redistribution and use in source and binary forms, with or without
  2199  // modification, are permitted provided that the following conditions
  2200  // are met:
  2201  // 1. Redistributions of source code must retain the above copyright
  2202  //    notice, this list of conditions and the following disclaimer.
  2203  // 2. Redistributions in binary form must reproduce the above copyright
  2204  //    notice, this list of conditions and the following disclaimer in the
  2205  //    documentation and/or other materials provided with the distribution.
  2206  //
  2207  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2208  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2209  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2210  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2211  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2212  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2213  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2214  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2215  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2216  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2217  // SUCH DAMAGE.
  2218  //
  2219  // $FreeBSD$
  2220  
  2221  // -
  2222  // SPDX-License-Identifier: BSD-3-Clause
  2223  //
  2224  // Copyright (c) 1982, 1986, 1989, 1991, 1993
  2225  //	The Regents of the University of California.  All rights reserved.
  2226  // (c) UNIX System Laboratories, Inc.
  2227  // All or some portions of this file are derived from material licensed
  2228  // to the University of California by American Telephone and Telegraph
  2229  // Co. or Unix System Laboratories, Inc. and are reproduced herein with
  2230  // the permission of UNIX System Laboratories, Inc.
  2231  //
  2232  // Redistribution and use in source and binary forms, with or without
  2233  // modification, are permitted provided that the following conditions
  2234  // are met:
  2235  // 1. Redistributions of source code must retain the above copyright
  2236  //    notice, this list of conditions and the following disclaimer.
  2237  // 2. Redistributions in binary form must reproduce the above copyright
  2238  //    notice, this list of conditions and the following disclaimer in the
  2239  //    documentation and/or other materials provided with the distribution.
  2240  // 3. Neither the name of the University nor the names of its contributors
  2241  //    may be used to endorse or promote products derived from this software
  2242  //    without specific prior written permission.
  2243  //
  2244  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2245  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2246  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2247  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2248  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2249  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2250  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2251  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2252  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2253  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2254  // SUCH DAMAGE.
  2255  //
  2256  //	@(#)signal.h	8.4 (Berkeley) 5/4/95
  2257  // $FreeBSD$
  2258  
  2259  // sigset_t macros.
  2260  
  2261  type X__sigset_t = X__sigset /* _sigset.h:55:3 */
  2262  
  2263  // -
  2264  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  2265  //
  2266  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  2267  // All rights reserved.
  2268  //
  2269  // Redistribution and use in source and binary forms, with or without
  2270  // modification, are permitted provided that the following conditions
  2271  // are met:
  2272  // 1. Redistributions of source code must retain the above copyright
  2273  //    notice, this list of conditions and the following disclaimer.
  2274  // 2. Redistributions in binary form must reproduce the above copyright
  2275  //    notice, this list of conditions and the following disclaimer in the
  2276  //    documentation and/or other materials provided with the distribution.
  2277  //
  2278  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2279  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2280  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2281  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2282  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2283  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2284  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2285  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2286  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2287  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2288  // SUCH DAMAGE.
  2289  //
  2290  // $FreeBSD$
  2291  
  2292  // -
  2293  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  2294  //
  2295  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  2296  // All rights reserved.
  2297  //
  2298  // Redistribution and use in source and binary forms, with or without
  2299  // modification, are permitted provided that the following conditions
  2300  // are met:
  2301  // 1. Redistributions of source code must retain the above copyright
  2302  //    notice, this list of conditions and the following disclaimer.
  2303  // 2. Redistributions in binary form must reproduce the above copyright
  2304  //    notice, this list of conditions and the following disclaimer in the
  2305  //    documentation and/or other materials provided with the distribution.
  2306  //
  2307  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2308  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2309  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2310  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2311  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2312  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2313  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2314  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2315  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2316  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2317  // SUCH DAMAGE.
  2318  //
  2319  // $FreeBSD$
  2320  
  2321  // Structure returned by gettimeofday(2) system call, and used in other calls.
  2322  type Timeval = struct {
  2323  	Ftv_sec  Time_t
  2324  	Ftv_usec Suseconds_t
  2325  } /* _timeval.h:49:1 */
  2326  
  2327  // -
  2328  // SPDX-License-Identifier: BSD-3-Clause
  2329  //
  2330  // Copyright (c) 1982, 1986, 1993
  2331  //	The Regents of the University of California.  All rights reserved.
  2332  //
  2333  // Redistribution and use in source and binary forms, with or without
  2334  // modification, are permitted provided that the following conditions
  2335  // are met:
  2336  // 1. Redistributions of source code must retain the above copyright
  2337  //    notice, this list of conditions and the following disclaimer.
  2338  // 2. Redistributions in binary form must reproduce the above copyright
  2339  //    notice, this list of conditions and the following disclaimer in the
  2340  //    documentation and/or other materials provided with the distribution.
  2341  // 3. Neither the name of the University nor the names of its contributors
  2342  //    may be used to endorse or promote products derived from this software
  2343  //    without specific prior written permission.
  2344  //
  2345  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2346  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2347  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2348  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2349  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2350  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2351  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2352  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2353  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2354  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2355  // SUCH DAMAGE.
  2356  //
  2357  //	@(#)time.h	8.5 (Berkeley) 5/4/95
  2358  // from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
  2359  //	$FreeBSD$
  2360  
  2361  // -
  2362  // SPDX-License-Identifier: BSD-3-Clause
  2363  //
  2364  // Copyright (c) 1991, 1993
  2365  //	The Regents of the University of California.  All rights reserved.
  2366  //
  2367  // This code is derived from software contributed to Berkeley by
  2368  // Berkeley Software Design, Inc.
  2369  //
  2370  // Redistribution and use in source and binary forms, with or without
  2371  // modification, are permitted provided that the following conditions
  2372  // are met:
  2373  // 1. Redistributions of source code must retain the above copyright
  2374  //    notice, this list of conditions and the following disclaimer.
  2375  // 2. Redistributions in binary form must reproduce the above copyright
  2376  //    notice, this list of conditions and the following disclaimer in the
  2377  //    documentation and/or other materials provided with the distribution.
  2378  // 3. Neither the name of the University nor the names of its contributors
  2379  //    may be used to endorse or promote products derived from this software
  2380  //    without specific prior written permission.
  2381  //
  2382  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2383  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2384  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2385  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2386  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2387  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2388  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2389  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2390  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2391  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2392  // SUCH DAMAGE.
  2393  //
  2394  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  2395  // $FreeBSD$
  2396  
  2397  // -
  2398  // SPDX-License-Identifier: BSD-3-Clause
  2399  //
  2400  // Copyright (c) 1982, 1986, 1993
  2401  //	The Regents of the University of California.  All rights reserved.
  2402  //
  2403  // Redistribution and use in source and binary forms, with or without
  2404  // modification, are permitted provided that the following conditions
  2405  // are met:
  2406  // 1. Redistributions of source code must retain the above copyright
  2407  //    notice, this list of conditions and the following disclaimer.
  2408  // 2. Redistributions in binary form must reproduce the above copyright
  2409  //    notice, this list of conditions and the following disclaimer in the
  2410  //    documentation and/or other materials provided with the distribution.
  2411  // 3. Neither the name of the University nor the names of its contributors
  2412  //    may be used to endorse or promote products derived from this software
  2413  //    without specific prior written permission.
  2414  //
  2415  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2416  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2417  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2418  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2419  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2420  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2421  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2422  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2423  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2424  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2425  // SUCH DAMAGE.
  2426  //
  2427  //	@(#)time.h	8.5 (Berkeley) 5/4/95
  2428  // from: FreeBSD: src/sys/sys/time.h,v 1.43 2000/03/20 14:09:05 phk Exp
  2429  //	$FreeBSD$
  2430  
  2431  // -
  2432  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  2433  //
  2434  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  2435  // All rights reserved.
  2436  //
  2437  // Redistribution and use in source and binary forms, with or without
  2438  // modification, are permitted provided that the following conditions
  2439  // are met:
  2440  // 1. Redistributions of source code must retain the above copyright
  2441  //    notice, this list of conditions and the following disclaimer.
  2442  // 2. Redistributions in binary form must reproduce the above copyright
  2443  //    notice, this list of conditions and the following disclaimer in the
  2444  //    documentation and/or other materials provided with the distribution.
  2445  //
  2446  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2447  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2448  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2449  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2450  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2451  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2452  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2453  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2454  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2455  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2456  // SUCH DAMAGE.
  2457  //
  2458  // $FreeBSD$
  2459  
  2460  type Timespec = struct {
  2461  	Ftv_sec  Time_t
  2462  	Ftv_nsec int64
  2463  } /* _timespec.h:46:1 */
  2464  
  2465  // Structure defined by POSIX.1b to be like a itimerval, but with
  2466  // timespecs. Used in the timer_*() system calls.
  2467  type Itimerspec = struct {
  2468  	Fit_interval struct {
  2469  		Ftv_sec  Time_t
  2470  		Ftv_nsec int64
  2471  	}
  2472  	Fit_value struct {
  2473  		Ftv_sec  Time_t
  2474  		Ftv_nsec int64
  2475  	}
  2476  } /* timespec.h:60:1 */
  2477  
  2478  type X__fd_mask = uint64  /* select.h:44:23 */
  2479  type Fd_mask = X__fd_mask /* select.h:46:19 */
  2480  
  2481  type Sigset_t = X__sigset_t /* select.h:51:20 */
  2482  
  2483  // Select uses bit masks of file descriptors in longs.  These macros
  2484  // manipulate such bit fields (the filesystem macros use chars).
  2485  // FD_SETSIZE may be defined by the user, but the default here should
  2486  // be enough for most uses.
  2487  
  2488  type Fd_set1 = struct{ F__fds_bits [16]X__fd_mask } /* select.h:73:9 */
  2489  
  2490  // Select uses bit masks of file descriptors in longs.  These macros
  2491  // manipulate such bit fields (the filesystem macros use chars).
  2492  // FD_SETSIZE may be defined by the user, but the default here should
  2493  // be enough for most uses.
  2494  
  2495  type Fd_set = Fd_set1 /* select.h:75:3 */
  2496  
  2497  // -
  2498  // This file is in the public domain.
  2499  // $FreeBSD$
  2500  
  2501  // -
  2502  // SPDX-License-Identifier: BSD-2-Clause
  2503  //
  2504  // Copyright (c) 2017 Poul-Henning Kamp.  All rights reserved.
  2505  //
  2506  // Redistribution and use in source and binary forms, with or without
  2507  // modification, are permitted provided that the following conditions
  2508  // are met:
  2509  // 1. Redistributions of source code must retain the above copyright
  2510  //    notice, this list of conditions and the following disclaimer.
  2511  // 2. Redistributions in binary form must reproduce the above copyright
  2512  //    notice, this list of conditions and the following disclaimer in the
  2513  //    documentation and/or other materials provided with the distribution.
  2514  //
  2515  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2516  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2517  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2518  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2519  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2520  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2521  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2522  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2523  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2524  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2525  // SUCH DAMAGE.
  2526  //
  2527  // $FreeBSD$
  2528  
  2529  // -
  2530  // SPDX-License-Identifier: BSD-3-Clause
  2531  //
  2532  // Copyright (c) 2002 David E. O'Brien.  All rights reserved.
  2533  //
  2534  // Redistribution and use in source and binary forms, with or without
  2535  // modification, are permitted provided that the following conditions
  2536  // are met:
  2537  // 1. Redistributions of source code must retain the above copyright
  2538  //    notice, this list of conditions and the following disclaimer.
  2539  // 2. Redistributions in binary form must reproduce the above copyright
  2540  //    notice, this list of conditions and the following disclaimer in the
  2541  //    documentation and/or other materials provided with the distribution.
  2542  // 3. Neither the name of the University nor the names of its contributors
  2543  //    may be used to endorse or promote products derived from this software
  2544  //    without specific prior written permission.
  2545  //
  2546  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2547  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2548  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2549  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2550  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2551  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2552  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2553  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2554  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2555  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2556  // SUCH DAMAGE.
  2557  //
  2558  // $FreeBSD$
  2559  
  2560  // -
  2561  // SPDX-License-Identifier: BSD-3-Clause
  2562  //
  2563  // Copyright (c) 1991, 1993
  2564  //	The Regents of the University of California.  All rights reserved.
  2565  //
  2566  // This code is derived from software contributed to Berkeley by
  2567  // Berkeley Software Design, Inc.
  2568  //
  2569  // Redistribution and use in source and binary forms, with or without
  2570  // modification, are permitted provided that the following conditions
  2571  // are met:
  2572  // 1. Redistributions of source code must retain the above copyright
  2573  //    notice, this list of conditions and the following disclaimer.
  2574  // 2. Redistributions in binary form must reproduce the above copyright
  2575  //    notice, this list of conditions and the following disclaimer in the
  2576  //    documentation and/or other materials provided with the distribution.
  2577  // 3. Neither the name of the University nor the names of its contributors
  2578  //    may be used to endorse or promote products derived from this software
  2579  //    without specific prior written permission.
  2580  //
  2581  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2582  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2583  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2584  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2585  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2586  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2587  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2588  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2589  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2590  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2591  // SUCH DAMAGE.
  2592  //
  2593  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  2594  // $FreeBSD$
  2595  
  2596  // -
  2597  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  2598  //
  2599  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  2600  // All rights reserved.
  2601  //
  2602  // Redistribution and use in source and binary forms, with or without
  2603  // modification, are permitted provided that the following conditions
  2604  // are met:
  2605  // 1. Redistributions of source code must retain the above copyright
  2606  //    notice, this list of conditions and the following disclaimer.
  2607  // 2. Redistributions in binary form must reproduce the above copyright
  2608  //    notice, this list of conditions and the following disclaimer in the
  2609  //    documentation and/or other materials provided with the distribution.
  2610  //
  2611  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2612  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2613  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2614  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2615  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2616  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2617  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2618  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2619  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2620  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2621  // SUCH DAMAGE.
  2622  //
  2623  // $FreeBSD$
  2624  
  2625  type Va_list = X__va_list /* _stdarg.h:41:27 */ // select(2)
  2626  
  2627  type Crypt_data = struct {
  2628  	Finitialized int32
  2629  	F__buf       [256]int8
  2630  } /* unistd.h:489:1 */
  2631  
  2632  // getopt(3) external variable
  2633  
  2634  // MVS linker does not support external names larger than 8 bytes
  2635  
  2636  //
  2637  //     The 'zlib' compression library provides in-memory compression and
  2638  //   decompression functions, including integrity checks of the uncompressed data.
  2639  //   This version of the library supports only one compression method (deflation)
  2640  //   but other algorithms will be added later and will have the same stream
  2641  //   interface.
  2642  //
  2643  //     Compression can be done in a single step if the buffers are large enough,
  2644  //   or can be done by repeated calls of the compression function.  In the latter
  2645  //   case, the application must provide more input and/or consume the output
  2646  //   (providing more output space) before each call.
  2647  //
  2648  //     The compressed data format used by default by the in-memory functions is
  2649  //   the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
  2650  //   around a deflate stream, which is itself documented in RFC 1951.
  2651  //
  2652  //     The library also supports reading and writing files in gzip (.gz) format
  2653  //   with an interface similar to that of stdio using the functions that start
  2654  //   with "gz".  The gzip format is different from the zlib format.  gzip is a
  2655  //   gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
  2656  //
  2657  //     This library can optionally read and write gzip and raw deflate streams in
  2658  //   memory as well.
  2659  //
  2660  //     The zlib format was designed to be compact and fast for use in memory
  2661  //   and on communications channels.  The gzip format was designed for single-
  2662  //   file compression on file systems, has a larger header than zlib to maintain
  2663  //   directory information, and uses a different, slower check method than zlib.
  2664  //
  2665  //     The library does not install any signal handler.  The decoder checks
  2666  //   the consistency of the compressed data, so the library should never crash
  2667  //   even in the case of corrupted input.
  2668  
  2669  type Alloc_func = uintptr /* zlib.h:81:16 */
  2670  type Free_func = uintptr  /* zlib.h:82:16 */
  2671  
  2672  type Internal_state = struct {
  2673  	Fstrm             Z_streamp
  2674  	Fstatus           int32
  2675  	F__ccgo_pad1      [4]byte
  2676  	Fpending_buf      uintptr
  2677  	Fpending_buf_size Ulg
  2678  	Fpending_out      uintptr
  2679  	Fpending          Ulg
  2680  	Fwrap             int32
  2681  	F__ccgo_pad2      [4]byte
  2682  	Fgzhead           Gz_headerp
  2683  	Fgzindex          Ulg
  2684  	Fmethod           Byte
  2685  	F__ccgo_pad3      [3]byte
  2686  	Flast_flush       int32
  2687  	Fw_size           UInt
  2688  	Fw_bits           UInt
  2689  	Fw_mask           UInt
  2690  	F__ccgo_pad4      [4]byte
  2691  	Fwindow           uintptr
  2692  	Fwindow_size      Ulg
  2693  	Fprev             uintptr
  2694  	Fhead             uintptr
  2695  	Fins_h            UInt
  2696  	Fhash_size        UInt
  2697  	Fhash_bits        UInt
  2698  	Fhash_mask        UInt
  2699  	Fhash_shift       UInt
  2700  	F__ccgo_pad5      [4]byte
  2701  	Fblock_start      int64
  2702  	Fmatch_length     UInt
  2703  	Fprev_match       IPos
  2704  	Fmatch_available  int32
  2705  	Fstrstart         UInt
  2706  	Fmatch_start      UInt
  2707  	Flookahead        UInt
  2708  	Fprev_length      UInt
  2709  	Fmax_chain_length UInt
  2710  	Fmax_lazy_match   UInt
  2711  	Flevel            int32
  2712  	Fstrategy         int32
  2713  	Fgood_match       UInt
  2714  	Fnice_match       int32
  2715  	Fdyn_ltree        [573]struct {
  2716  		Ffc struct{ Ffreq Ush }
  2717  		Fdl struct{ Fdad Ush }
  2718  	}
  2719  	Fdyn_dtree [61]struct {
  2720  		Ffc struct{ Ffreq Ush }
  2721  		Fdl struct{ Fdad Ush }
  2722  	}
  2723  	Fbl_tree [39]struct {
  2724  		Ffc struct{ Ffreq Ush }
  2725  		Fdl struct{ Fdad Ush }
  2726  	}
  2727  	Fl_desc struct {
  2728  		Fdyn_tree    uintptr
  2729  		Fmax_code    int32
  2730  		F__ccgo_pad1 [4]byte
  2731  		Fstat_desc   uintptr
  2732  	}
  2733  	Fd_desc struct {
  2734  		Fdyn_tree    uintptr
  2735  		Fmax_code    int32
  2736  		F__ccgo_pad1 [4]byte
  2737  		Fstat_desc   uintptr
  2738  	}
  2739  	Fbl_desc struct {
  2740  		Fdyn_tree    uintptr
  2741  		Fmax_code    int32
  2742  		F__ccgo_pad1 [4]byte
  2743  		Fstat_desc   uintptr
  2744  	}
  2745  	Fbl_count    [16]Ush
  2746  	Fheap        [573]int32
  2747  	Fheap_len    int32
  2748  	Fheap_max    int32
  2749  	Fdepth       [573]Uch
  2750  	F__ccgo_pad6 [7]byte
  2751  	Fl_buf       uintptr
  2752  	Flit_bufsize UInt
  2753  	Flast_lit    UInt
  2754  	Fd_buf       uintptr
  2755  	Fopt_len     Ulg
  2756  	Fstatic_len  Ulg
  2757  	Fmatches     UInt
  2758  	Finsert      UInt
  2759  	Fbi_buf      Ush
  2760  	F__ccgo_pad7 [2]byte
  2761  	Fbi_valid    int32
  2762  	Fhigh_water  Ulg
  2763  } /* zlib.h:84:1 */
  2764  
  2765  type Z_stream_s = struct {
  2766  	Fnext_in     uintptr
  2767  	Favail_in    UInt
  2768  	F__ccgo_pad1 [4]byte
  2769  	Ftotal_in    ULong
  2770  	Fnext_out    uintptr
  2771  	Favail_out   UInt
  2772  	F__ccgo_pad2 [4]byte
  2773  	Ftotal_out   ULong
  2774  	Fmsg         uintptr
  2775  	Fstate       uintptr
  2776  	Fzalloc      Alloc_func
  2777  	Fzfree       Free_func
  2778  	Fopaque      Voidpf
  2779  	Fdata_type   int32
  2780  	F__ccgo_pad3 [4]byte
  2781  	Fadler       ULong
  2782  	Freserved    ULong
  2783  } /* zlib.h:86:9 */
  2784  
  2785  type Z_stream = Z_stream_s /* zlib.h:106:3 */
  2786  
  2787  type Z_streamp = uintptr /* zlib.h:108:22 */
  2788  
  2789  //
  2790  //      gzip header information passed to and from zlib routines.  See RFC 1952
  2791  //   for more details on the meanings of these fields.
  2792  type Gz_header_s = struct {
  2793  	Ftext        int32
  2794  	F__ccgo_pad1 [4]byte
  2795  	Ftime        ULong
  2796  	Fxflags      int32
  2797  	Fos          int32
  2798  	Fextra       uintptr
  2799  	Fextra_len   UInt
  2800  	Fextra_max   UInt
  2801  	Fname        uintptr
  2802  	Fname_max    UInt
  2803  	F__ccgo_pad2 [4]byte
  2804  	Fcomment     uintptr
  2805  	Fcomm_max    UInt
  2806  	Fhcrc        int32
  2807  	Fdone        int32
  2808  	F__ccgo_pad3 [4]byte
  2809  } /* zlib.h:114:9 */
  2810  
  2811  //
  2812  //      gzip header information passed to and from zlib routines.  See RFC 1952
  2813  //   for more details on the meanings of these fields.
  2814  type Gz_header = Gz_header_s /* zlib.h:129:3 */
  2815  
  2816  type Gz_headerp = uintptr /* zlib.h:131:23 */
  2817  //
  2818  //      inflateGetHeader() requests that gzip header information be stored in the
  2819  //    provided gz_header structure.  inflateGetHeader() may be called after
  2820  //    inflateInit2() or inflateReset(), and before the first call of inflate().
  2821  //    As inflate() processes the gzip stream, head->done is zero until the header
  2822  //    is completed, at which time head->done is set to one.  If a zlib stream is
  2823  //    being decoded, then head->done is set to -1 to indicate that there will be
  2824  //    no gzip header information forthcoming.  Note that Z_BLOCK or Z_TREES can be
  2825  //    used to force inflate() to return immediately after header processing is
  2826  //    complete and before any actual data is decompressed.
  2827  //
  2828  //      The text, time, xflags, and os fields are filled in with the gzip header
  2829  //    contents.  hcrc is set to true if there is a header CRC.  (The header CRC
  2830  //    was valid if done is set to one.) If extra is not Z_NULL, then extra_max
  2831  //    contains the maximum number of bytes to write to extra.  Once done is true,
  2832  //    extra_len contains the actual extra field length, and extra contains the
  2833  //    extra field, or that field truncated if extra_max is less than extra_len.
  2834  //    If name is not Z_NULL, then up to name_max characters are written there,
  2835  //    terminated with a zero unless the length is greater than name_max.  If
  2836  //    comment is not Z_NULL, then up to comm_max characters are written there,
  2837  //    terminated with a zero unless the length is greater than comm_max.  When any
  2838  //    of extra, name, or comment are not Z_NULL and the respective field is not
  2839  //    present in the header, then that field is set to Z_NULL to signal its
  2840  //    absence.  This allows the use of deflateSetHeader() with the returned
  2841  //    structure to duplicate the header.  However if those fields are set to
  2842  //    allocated memory, then the application will need to save those pointers
  2843  //    elsewhere so that they can be eventually freed.
  2844  //
  2845  //      If inflateGetHeader is not used, then the header information is simply
  2846  //    discarded.  The header is always checked for validity, including the header
  2847  //    CRC if present.  inflateReset() will reset the process to discard the header
  2848  //    information.  The application would need to call inflateGetHeader() again to
  2849  //    retrieve the header from the next gzip stream.
  2850  //
  2851  //      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
  2852  //    stream state was inconsistent.
  2853  
  2854  //
  2855  // ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
  2856  //                                         unsigned char FAR *window));
  2857  //
  2858  //      Initialize the internal stream state for decompression using inflateBack()
  2859  //    calls.  The fields zalloc, zfree and opaque in strm must be initialized
  2860  //    before the call.  If zalloc and zfree are Z_NULL, then the default library-
  2861  //    derived memory allocation routines are used.  windowBits is the base two
  2862  //    logarithm of the window size, in the range 8..15.  window is a caller
  2863  //    supplied buffer of that size.  Except for special applications where it is
  2864  //    assured that deflate was used with small window sizes, windowBits must be 15
  2865  //    and a 32K byte window must be supplied to be able to decompress general
  2866  //    deflate streams.
  2867  //
  2868  //      See inflateBack() for the usage of these routines.
  2869  //
  2870  //      inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
  2871  //    the parameters are invalid, Z_MEM_ERROR if the internal state could not be
  2872  //    allocated, or Z_VERSION_ERROR if the version of the library does not match
  2873  //    the version of the header file.
  2874  
  2875  type In_func = uintptr  /* zlib.h:1092:18 */
  2876  type Out_func = uintptr /* zlib.h:1094:13 */
  2877  //
  2878  //      Same as uncompress, except that sourceLen is a pointer, where the
  2879  //    length of the source is *sourceLen.  On return, *sourceLen is the number of
  2880  //    source bytes consumed.
  2881  
  2882  // gzip file access functions
  2883  
  2884  //
  2885  //      This library supports reading and writing files in gzip (.gz) format with
  2886  //    an interface similar to that of stdio, using the functions that start with
  2887  //    "gz".  The gzip format is different from the zlib format.  gzip is a gzip
  2888  //    wrapper, documented in RFC 1952, wrapped around a deflate stream.
  2889  
  2890  type GzFile_s = struct {
  2891  	Fhave        uint32
  2892  	F__ccgo_pad1 [4]byte
  2893  	Fnext        uintptr
  2894  	Fpos         Off_t
  2895  } /* zlib.h:1300:9 */
  2896  
  2897  //
  2898  //      Same as uncompress, except that sourceLen is a pointer, where the
  2899  //    length of the source is *sourceLen.  On return, *sourceLen is the number of
  2900  //    source bytes consumed.
  2901  
  2902  // gzip file access functions
  2903  
  2904  //
  2905  //      This library supports reading and writing files in gzip (.gz) format with
  2906  //    an interface similar to that of stdio, using the functions that start with
  2907  //    "gz".  The gzip format is different from the zlib format.  gzip is a gzip
  2908  //    wrapper, documented in RFC 1952, wrapped around a deflate stream.
  2909  
  2910  type GzFile = uintptr /* zlib.h:1300:25 */
  2911  
  2912  // -
  2913  // Copyright (c) 2011, 2012 The FreeBSD Foundation
  2914  // All rights reserved.
  2915  //
  2916  // Redistribution and use in source and binary forms, with or without
  2917  // modification, are permitted provided that the following conditions
  2918  // are met:
  2919  // 1. Redistributions of source code must retain the above copyright
  2920  //    notice, this list of conditions and the following disclaimer.
  2921  // 2. Redistributions in binary form must reproduce the above copyright
  2922  //    notice, this list of conditions and the following disclaimer in the
  2923  //    documentation and/or other materials provided with the distribution.
  2924  //
  2925  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  2926  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2927  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2928  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  2929  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2930  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2931  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2932  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2933  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2934  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2935  // SUCH DAMAGE.
  2936  //
  2937  // $FreeBSD$
  2938  
  2939  type Locale_t = uintptr /* _strings.h:31:25 */
  2940  
  2941  // xlocale extensions
  2942  
  2943  type Errno_t = int32 /* string.h:156:13 */
  2944  
  2945  // -
  2946  // SPDX-License-Identifier: BSD-3-Clause
  2947  //
  2948  // Copyright (c) 1990, 1993
  2949  //	The Regents of the University of California.  All rights reserved.
  2950  //
  2951  // Redistribution and use in source and binary forms, with or without
  2952  // modification, are permitted provided that the following conditions
  2953  // are met:
  2954  // 1. Redistributions of source code must retain the above copyright
  2955  //    notice, this list of conditions and the following disclaimer.
  2956  // 2. Redistributions in binary form must reproduce the above copyright
  2957  //    notice, this list of conditions and the following disclaimer in the
  2958  //    documentation and/or other materials provided with the distribution.
  2959  // 3. Neither the name of the University nor the names of its contributors
  2960  //    may be used to endorse or promote products derived from this software
  2961  //    without specific prior written permission.
  2962  //
  2963  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  2964  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  2965  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  2966  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  2967  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  2968  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  2969  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  2970  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  2971  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  2972  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  2973  // SUCH DAMAGE.
  2974  //
  2975  //	@(#)stdlib.h	8.5 (Berkeley) 5/19/95
  2976  // $FreeBSD$
  2977  
  2978  // -
  2979  // SPDX-License-Identifier: BSD-3-Clause
  2980  //
  2981  // Copyright (c) 1991, 1993
  2982  //	The Regents of the University of California.  All rights reserved.
  2983  //
  2984  // This code is derived from software contributed to Berkeley by
  2985  // Berkeley Software Design, Inc.
  2986  //
  2987  // Redistribution and use in source and binary forms, with or without
  2988  // modification, are permitted provided that the following conditions
  2989  // are met:
  2990  // 1. Redistributions of source code must retain the above copyright
  2991  //    notice, this list of conditions and the following disclaimer.
  2992  // 2. Redistributions in binary form must reproduce the above copyright
  2993  //    notice, this list of conditions and the following disclaimer in the
  2994  //    documentation and/or other materials provided with the distribution.
  2995  // 3. Neither the name of the University nor the names of its contributors
  2996  //    may be used to endorse or promote products derived from this software
  2997  //    without specific prior written permission.
  2998  //
  2999  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  3000  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  3001  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  3002  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  3003  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  3004  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  3005  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  3006  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  3007  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  3008  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  3009  // SUCH DAMAGE.
  3010  //
  3011  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  3012  // $FreeBSD$
  3013  
  3014  // -
  3015  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  3016  //
  3017  // Copyright (c) 2003 Marcel Moolenaar
  3018  // All rights reserved.
  3019  //
  3020  // Redistribution and use in source and binary forms, with or without
  3021  // modification, are permitted provided that the following conditions
  3022  // are met:
  3023  //
  3024  // 1. Redistributions of source code must retain the above copyright
  3025  //    notice, this list of conditions and the following disclaimer.
  3026  // 2. Redistributions in binary form must reproduce the above copyright
  3027  //    notice, this list of conditions and the following disclaimer in the
  3028  //    documentation and/or other materials provided with the distribution.
  3029  //
  3030  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  3031  // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  3032  // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  3033  // IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  3034  // INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  3035  // NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  3036  // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  3037  // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  3038  // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  3039  // THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  3040  //
  3041  // $FreeBSD$
  3042  
  3043  // -
  3044  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  3045  //
  3046  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  3047  // All rights reserved.
  3048  //
  3049  // Redistribution and use in source and binary forms, with or without
  3050  // modification, are permitted provided that the following conditions
  3051  // are met:
  3052  // 1. Redistributions of source code must retain the above copyright
  3053  //    notice, this list of conditions and the following disclaimer.
  3054  // 2. Redistributions in binary form must reproduce the above copyright
  3055  //    notice, this list of conditions and the following disclaimer in the
  3056  //    documentation and/or other materials provided with the distribution.
  3057  //
  3058  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  3059  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  3060  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  3061  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  3062  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  3063  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  3064  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  3065  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  3066  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  3067  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  3068  // SUCH DAMAGE.
  3069  //
  3070  // $FreeBSD$
  3071  
  3072  type Div_t = struct {
  3073  	Fquot int32
  3074  	Frem  int32
  3075  } /* stdlib.h:66:3 */
  3076  
  3077  type Ldiv_t = struct {
  3078  	Fquot int64
  3079  	Frem  int64
  3080  } /* stdlib.h:71:3 */
  3081  
  3082  // Functions added in C99 which we make conditionally available in the
  3083  // BSD^C89 namespace if the compiler supports `long long'.
  3084  // The #if test is more complicated than it ought to be because
  3085  // __BSD_VISIBLE implies __ISO_C_VISIBLE == 1999 *even if* `long long'
  3086  // is not supported in the compilation environment (which therefore means
  3087  // that it can't really be ISO C99).
  3088  //
  3089  // (The only other extension made by C99 in thie header is _Exit().)
  3090  // LONGLONG
  3091  type Lldiv_t = struct {
  3092  	Fquot int64
  3093  	Frem  int64
  3094  } /* stdlib.h:142:3 */ // getsubopt(3) external variable
  3095  
  3096  // K.3.6
  3097  type Constraint_handler_t = uintptr /* stdlib.h:349:14 */
  3098  
  3099  // since "static" is used to mean two completely different things in C, we
  3100  //    define "local" for the non-static meaning of "static", for readability
  3101  //    (compile with -Dlocal if your debugger can't find static symbols)
  3102  
  3103  type Uch = uint8  /* zutil.h:43:24 */
  3104  type Uchf = Uch   /* zutil.h:44:17 */
  3105  type Ush = uint16 /* zutil.h:45:24 */
  3106  type Ushf = Ush   /* zutil.h:46:17 */
  3107  type Ulg = uint64 /* zutil.h:47:24 */
  3108  
  3109  // NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
  3110  
  3111  // use NO_DIVIDE if your processor does not do division in hardware --
  3112  //    try it both ways to see which is faster
  3113  
  3114  // =========================================================================
  3115  func Xadler32_z(tls *libc.TLS, adler ULong, buf uintptr, len Z_size_t) ULong { /* adler32.c:63:15: */
  3116  	var sum2 uint64
  3117  	var n uint32
  3118  
  3119  	// split Adler-32 into component sums
  3120  	sum2 = ((adler >> 16) & uint64(0xffff))
  3121  	adler = adler & (uint64(0xffff))
  3122  
  3123  	// in case user likes doing a byte at a time, keep it fast
  3124  	if len == uint64(1) {
  3125  		adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(buf))))
  3126  		if adler >= uint64(BASE) {
  3127  			adler = adler - (uint64(BASE))
  3128  		}
  3129  		sum2 = sum2 + (adler)
  3130  		if sum2 >= uint64(BASE) {
  3131  			sum2 = sum2 - (uint64(BASE))
  3132  		}
  3133  		return (adler | (sum2 << 16))
  3134  	}
  3135  
  3136  	// initial Adler-32 value (deferred check for len == 1 speed)
  3137  	if buf == uintptr(Z_NULL) {
  3138  		return uint64(1)
  3139  	}
  3140  
  3141  	// in case short lengths are provided, keep it somewhat fast
  3142  	if len < uint64(16) {
  3143  		for libc.PostDecUint64(&len, 1) != 0 {
  3144  			adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))
  3145  			sum2 = sum2 + (adler)
  3146  		}
  3147  		if adler >= uint64(BASE) {
  3148  			adler = adler - (uint64(BASE))
  3149  		}
  3150  		sum2 = sum2 % (uint64(BASE)) // only added so many BASE's
  3151  		return (adler | (sum2 << 16))
  3152  	}
  3153  
  3154  	// do length NMAX blocks -- requires just one modulo operation
  3155  	for len >= uint64(NMAX) {
  3156  		len = len - (uint64(NMAX))
  3157  		n = (uint32(NMAX / 16)) // NMAX is divisible by 16
  3158  		for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  3159  			{
  3160  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf)))))
  3161  				sum2 = sum2 + (adler)
  3162  			}
  3163  			{
  3164  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1))))
  3165  				sum2 = sum2 + (adler)
  3166  			}
  3167  
  3168  			{
  3169  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2))))
  3170  				sum2 = sum2 + (adler)
  3171  			}
  3172  			{
  3173  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3))))
  3174  				sum2 = sum2 + (adler)
  3175  			}
  3176  
  3177  			{
  3178  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4))))
  3179  				sum2 = sum2 + (adler)
  3180  			}
  3181  			{
  3182  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5))))
  3183  				sum2 = sum2 + (adler)
  3184  			}
  3185  
  3186  			{
  3187  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6))))
  3188  				sum2 = sum2 + (adler)
  3189  			}
  3190  			{
  3191  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7))))
  3192  				sum2 = sum2 + (adler)
  3193  			}
  3194  
  3195  			{
  3196  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8))))
  3197  				sum2 = sum2 + (adler)
  3198  			}
  3199  			{
  3200  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9))))
  3201  				sum2 = sum2 + (adler)
  3202  			}
  3203  
  3204  			{
  3205  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10))))
  3206  				sum2 = sum2 + (adler)
  3207  			}
  3208  			{
  3209  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11))))
  3210  				sum2 = sum2 + (adler)
  3211  			}
  3212  
  3213  			{
  3214  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12))))
  3215  				sum2 = sum2 + (adler)
  3216  			}
  3217  			{
  3218  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13))))
  3219  				sum2 = sum2 + (adler)
  3220  			}
  3221  
  3222  			{
  3223  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14))))
  3224  				sum2 = sum2 + (adler)
  3225  			}
  3226  			{
  3227  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15))))
  3228  				sum2 = sum2 + (adler)
  3229  			}
  3230  
  3231  			// 16 sums unrolled
  3232  			buf += uintptr(16)
  3233  		}
  3234  		adler = adler % (uint64(BASE))
  3235  		sum2 = sum2 % (uint64(BASE))
  3236  	}
  3237  
  3238  	// do remaining bytes (less than NMAX, still just one modulo)
  3239  	if len != 0 { // avoid modulos if none remaining
  3240  		for len >= uint64(16) {
  3241  			len = len - (uint64(16))
  3242  			{
  3243  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf)))))
  3244  				sum2 = sum2 + (adler)
  3245  			}
  3246  			{
  3247  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1))))
  3248  				sum2 = sum2 + (adler)
  3249  			}
  3250  
  3251  			{
  3252  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2))))
  3253  				sum2 = sum2 + (adler)
  3254  			}
  3255  			{
  3256  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3))))
  3257  				sum2 = sum2 + (adler)
  3258  			}
  3259  
  3260  			{
  3261  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4))))
  3262  				sum2 = sum2 + (adler)
  3263  			}
  3264  			{
  3265  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5))))
  3266  				sum2 = sum2 + (adler)
  3267  			}
  3268  
  3269  			{
  3270  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6))))
  3271  				sum2 = sum2 + (adler)
  3272  			}
  3273  			{
  3274  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7))))
  3275  				sum2 = sum2 + (adler)
  3276  			}
  3277  
  3278  			{
  3279  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8))))
  3280  				sum2 = sum2 + (adler)
  3281  			}
  3282  			{
  3283  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9))))
  3284  				sum2 = sum2 + (adler)
  3285  			}
  3286  
  3287  			{
  3288  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10))))
  3289  				sum2 = sum2 + (adler)
  3290  			}
  3291  			{
  3292  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11))))
  3293  				sum2 = sum2 + (adler)
  3294  			}
  3295  
  3296  			{
  3297  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12))))
  3298  				sum2 = sum2 + (adler)
  3299  			}
  3300  			{
  3301  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13))))
  3302  				sum2 = sum2 + (adler)
  3303  			}
  3304  
  3305  			{
  3306  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14))))
  3307  				sum2 = sum2 + (adler)
  3308  			}
  3309  			{
  3310  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15))))
  3311  				sum2 = sum2 + (adler)
  3312  			}
  3313  
  3314  			buf += uintptr(16)
  3315  		}
  3316  		for libc.PostDecUint64(&len, 1) != 0 {
  3317  			adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))
  3318  			sum2 = sum2 + (adler)
  3319  		}
  3320  		adler = adler % (uint64(BASE))
  3321  		sum2 = sum2 % (uint64(BASE))
  3322  	}
  3323  
  3324  	// return recombined sums
  3325  	return (adler | (sum2 << 16))
  3326  }
  3327  
  3328  // =========================================================================
  3329  func Xadler32(tls *libc.TLS, adler ULong, buf uintptr, len UInt) ULong { /* adler32.c:134:15: */
  3330  	return Xadler32_z(tls, adler, buf, uint64(len))
  3331  }
  3332  
  3333  // =========================================================================
  3334  func adler32_combine_(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:143:13: */
  3335  	var sum1 uint64
  3336  	var sum2 uint64
  3337  	var rem uint32
  3338  
  3339  	// for negative len, return invalid adler32 as a clue for debugging
  3340  	if len2 < int64(0) {
  3341  		return 0xffffffff
  3342  	}
  3343  
  3344  	// the derivation of this formula is left as an exercise for the reader
  3345  	len2 = len2 % (int64(BASE)) // assumes len2 >= 0
  3346  	rem = uint32(len2)
  3347  	sum1 = (adler1 & uint64(0xffff))
  3348  	sum2 = (uint64(rem) * sum1)
  3349  	sum2 = sum2 % (uint64(BASE))
  3350  	sum1 = sum1 + (((adler2 & uint64(0xffff)) + uint64(BASE)) - uint64(1))
  3351  	sum2 = sum2 + (((((adler1 >> 16) & uint64(0xffff)) + ((adler2 >> 16) & uint64(0xffff))) + uint64(BASE)) - ULong(rem))
  3352  	if sum1 >= uint64(BASE) {
  3353  		sum1 = sum1 - (uint64(BASE))
  3354  	}
  3355  	if sum1 >= uint64(BASE) {
  3356  		sum1 = sum1 - (uint64(BASE))
  3357  	}
  3358  	if sum2 >= (uint64(uint64(BASE)) << 1) {
  3359  		sum2 = sum2 - (uint64(uint64(BASE)) << 1)
  3360  	}
  3361  	if sum2 >= uint64(BASE) {
  3362  		sum2 = sum2 - (uint64(BASE))
  3363  	}
  3364  	return (sum1 | (sum2 << 16))
  3365  }
  3366  
  3367  // =========================================================================
  3368  func Xadler32_combine(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:172:15: */
  3369  	return adler32_combine_(tls, adler1, adler2, len2)
  3370  }
  3371  
  3372  func Xadler32_combine64(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:180:15: */
  3373  	return adler32_combine_(tls, adler1, adler2, len2)
  3374  }
  3375  
  3376  // ===========================================================================
  3377  //      Compresses the source buffer into the destination buffer. The level
  3378  //    parameter has the same meaning as in deflateInit.  sourceLen is the byte
  3379  //    length of the source buffer. Upon entry, destLen is the total size of the
  3380  //    destination buffer, which must be at least 0.1% larger than sourceLen plus
  3381  //    12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
  3382  //
  3383  //      compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
  3384  //    memory, Z_BUF_ERROR if there was not enough room in the output buffer,
  3385  //    Z_STREAM_ERROR if the level parameter is invalid.
  3386  func Xcompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong, level int32) int32 { /* compress.c:22:13: */
  3387  	bp := tls.Alloc(112)
  3388  	defer tls.Free(112)
  3389  
  3390  	// var stream Z_stream at bp, 112
  3391  
  3392  	var err int32
  3393  	var max UInt = libc.Uint32(libc.Uint32FromInt32(-1))
  3394  	var left ULong
  3395  
  3396  	left = *(*ULongf)(unsafe.Pointer(destLen))
  3397  	*(*ULongf)(unsafe.Pointer(destLen)) = uint64(0)
  3398  
  3399  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzalloc = uintptr(0)
  3400  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzfree = uintptr(0)
  3401  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fopaque = uintptr(0)
  3402  
  3403  	err = XdeflateInit_(tls, bp /* &stream */, level, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{})))
  3404  	if err != Z_OK {
  3405  		return err
  3406  	}
  3407  
  3408  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_out = dest
  3409  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = UInt(0)
  3410  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_in = source
  3411  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = UInt(0)
  3412  
  3413  	for ok := true; ok; ok = (err == Z_OK) {
  3414  		if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out == UInt(0) {
  3415  			(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = func() uint32 {
  3416  				if left > ULong(max) {
  3417  					return max
  3418  				}
  3419  				return UInt(left)
  3420  			}()
  3421  			left = left - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out))
  3422  		}
  3423  		if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in == UInt(0) {
  3424  			(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = func() uint32 {
  3425  				if sourceLen > ULong(max) {
  3426  					return max
  3427  				}
  3428  				return UInt(sourceLen)
  3429  			}()
  3430  			sourceLen = sourceLen - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in))
  3431  		}
  3432  		err = Xdeflate(tls, bp /* &stream */, func() int32 {
  3433  			if sourceLen != 0 {
  3434  				return Z_NO_FLUSH
  3435  			}
  3436  			return Z_FINISH
  3437  		}())
  3438  	}
  3439  
  3440  	*(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Ftotal_out
  3441  	XdeflateEnd(tls, bp /* &stream */)
  3442  	if err == Z_STREAM_END {
  3443  		return Z_OK
  3444  	}
  3445  	return err
  3446  }
  3447  
  3448  // ===========================================================================
  3449  func Xcompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* compress.c:68:13: */
  3450  	return Xcompress2(tls, dest, destLen, source, sourceLen, -1)
  3451  }
  3452  
  3453  // ===========================================================================
  3454  //      If the default memLevel or windowBits for deflateInit() is changed, then
  3455  //    this function needs to be updated.
  3456  //
  3457  func XcompressBound(tls *libc.TLS, sourceLen ULong) ULong { /* compress.c:81:15: */
  3458  	return ((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + uint64(13))
  3459  }
  3460  
  3461  // ========================================================================
  3462  // Tables of CRC-32s of all single-byte values, made by make_crc_table().
  3463  // crc32.h -- tables for rapid CRC calculation
  3464  // Generated automatically by crc32.c
  3465  
  3466  var crc_table = [8][256]Z_crc_t{
  3467  	{
  3468  		uint32(0x00000000), uint32(0x77073096), uint32(0xee0e612c), uint32(0x990951ba), uint32(0x076dc419),
  3469  		uint32(0x706af48f), uint32(0xe963a535), uint32(0x9e6495a3), uint32(0x0edb8832), uint32(0x79dcb8a4),
  3470  		uint32(0xe0d5e91e), uint32(0x97d2d988), uint32(0x09b64c2b), uint32(0x7eb17cbd), uint32(0xe7b82d07),
  3471  		uint32(0x90bf1d91), uint32(0x1db71064), uint32(0x6ab020f2), uint32(0xf3b97148), uint32(0x84be41de),
  3472  		uint32(0x1adad47d), uint32(0x6ddde4eb), uint32(0xf4d4b551), uint32(0x83d385c7), uint32(0x136c9856),
  3473  		uint32(0x646ba8c0), uint32(0xfd62f97a), uint32(0x8a65c9ec), uint32(0x14015c4f), uint32(0x63066cd9),
  3474  		uint32(0xfa0f3d63), uint32(0x8d080df5), uint32(0x3b6e20c8), uint32(0x4c69105e), uint32(0xd56041e4),
  3475  		uint32(0xa2677172), uint32(0x3c03e4d1), uint32(0x4b04d447), uint32(0xd20d85fd), uint32(0xa50ab56b),
  3476  		uint32(0x35b5a8fa), uint32(0x42b2986c), uint32(0xdbbbc9d6), uint32(0xacbcf940), uint32(0x32d86ce3),
  3477  		uint32(0x45df5c75), uint32(0xdcd60dcf), uint32(0xabd13d59), uint32(0x26d930ac), uint32(0x51de003a),
  3478  		uint32(0xc8d75180), uint32(0xbfd06116), uint32(0x21b4f4b5), uint32(0x56b3c423), uint32(0xcfba9599),
  3479  		uint32(0xb8bda50f), uint32(0x2802b89e), uint32(0x5f058808), uint32(0xc60cd9b2), uint32(0xb10be924),
  3480  		uint32(0x2f6f7c87), uint32(0x58684c11), uint32(0xc1611dab), uint32(0xb6662d3d), uint32(0x76dc4190),
  3481  		uint32(0x01db7106), uint32(0x98d220bc), uint32(0xefd5102a), uint32(0x71b18589), uint32(0x06b6b51f),
  3482  		uint32(0x9fbfe4a5), uint32(0xe8b8d433), uint32(0x7807c9a2), uint32(0x0f00f934), uint32(0x9609a88e),
  3483  		uint32(0xe10e9818), uint32(0x7f6a0dbb), uint32(0x086d3d2d), uint32(0x91646c97), uint32(0xe6635c01),
  3484  		uint32(0x6b6b51f4), uint32(0x1c6c6162), uint32(0x856530d8), uint32(0xf262004e), uint32(0x6c0695ed),
  3485  		uint32(0x1b01a57b), uint32(0x8208f4c1), uint32(0xf50fc457), uint32(0x65b0d9c6), uint32(0x12b7e950),
  3486  		uint32(0x8bbeb8ea), uint32(0xfcb9887c), uint32(0x62dd1ddf), uint32(0x15da2d49), uint32(0x8cd37cf3),
  3487  		uint32(0xfbd44c65), uint32(0x4db26158), uint32(0x3ab551ce), uint32(0xa3bc0074), uint32(0xd4bb30e2),
  3488  		uint32(0x4adfa541), uint32(0x3dd895d7), uint32(0xa4d1c46d), uint32(0xd3d6f4fb), uint32(0x4369e96a),
  3489  		uint32(0x346ed9fc), uint32(0xad678846), uint32(0xda60b8d0), uint32(0x44042d73), uint32(0x33031de5),
  3490  		uint32(0xaa0a4c5f), uint32(0xdd0d7cc9), uint32(0x5005713c), uint32(0x270241aa), uint32(0xbe0b1010),
  3491  		uint32(0xc90c2086), uint32(0x5768b525), uint32(0x206f85b3), uint32(0xb966d409), uint32(0xce61e49f),
  3492  		uint32(0x5edef90e), uint32(0x29d9c998), uint32(0xb0d09822), uint32(0xc7d7a8b4), uint32(0x59b33d17),
  3493  		uint32(0x2eb40d81), uint32(0xb7bd5c3b), uint32(0xc0ba6cad), uint32(0xedb88320), uint32(0x9abfb3b6),
  3494  		uint32(0x03b6e20c), uint32(0x74b1d29a), uint32(0xead54739), uint32(0x9dd277af), uint32(0x04db2615),
  3495  		uint32(0x73dc1683), uint32(0xe3630b12), uint32(0x94643b84), uint32(0x0d6d6a3e), uint32(0x7a6a5aa8),
  3496  		uint32(0xe40ecf0b), uint32(0x9309ff9d), uint32(0x0a00ae27), uint32(0x7d079eb1), uint32(0xf00f9344),
  3497  		uint32(0x8708a3d2), uint32(0x1e01f268), uint32(0x6906c2fe), uint32(0xf762575d), uint32(0x806567cb),
  3498  		uint32(0x196c3671), uint32(0x6e6b06e7), uint32(0xfed41b76), uint32(0x89d32be0), uint32(0x10da7a5a),
  3499  		uint32(0x67dd4acc), uint32(0xf9b9df6f), uint32(0x8ebeeff9), uint32(0x17b7be43), uint32(0x60b08ed5),
  3500  		uint32(0xd6d6a3e8), uint32(0xa1d1937e), uint32(0x38d8c2c4), uint32(0x4fdff252), uint32(0xd1bb67f1),
  3501  		uint32(0xa6bc5767), uint32(0x3fb506dd), uint32(0x48b2364b), uint32(0xd80d2bda), uint32(0xaf0a1b4c),
  3502  		uint32(0x36034af6), uint32(0x41047a60), uint32(0xdf60efc3), uint32(0xa867df55), uint32(0x316e8eef),
  3503  		uint32(0x4669be79), uint32(0xcb61b38c), uint32(0xbc66831a), uint32(0x256fd2a0), uint32(0x5268e236),
  3504  		uint32(0xcc0c7795), uint32(0xbb0b4703), uint32(0x220216b9), uint32(0x5505262f), uint32(0xc5ba3bbe),
  3505  		uint32(0xb2bd0b28), uint32(0x2bb45a92), uint32(0x5cb36a04), uint32(0xc2d7ffa7), uint32(0xb5d0cf31),
  3506  		uint32(0x2cd99e8b), uint32(0x5bdeae1d), uint32(0x9b64c2b0), uint32(0xec63f226), uint32(0x756aa39c),
  3507  		uint32(0x026d930a), uint32(0x9c0906a9), uint32(0xeb0e363f), uint32(0x72076785), uint32(0x05005713),
  3508  		uint32(0x95bf4a82), uint32(0xe2b87a14), uint32(0x7bb12bae), uint32(0x0cb61b38), uint32(0x92d28e9b),
  3509  		uint32(0xe5d5be0d), uint32(0x7cdcefb7), uint32(0x0bdbdf21), uint32(0x86d3d2d4), uint32(0xf1d4e242),
  3510  		uint32(0x68ddb3f8), uint32(0x1fda836e), uint32(0x81be16cd), uint32(0xf6b9265b), uint32(0x6fb077e1),
  3511  		uint32(0x18b74777), uint32(0x88085ae6), uint32(0xff0f6a70), uint32(0x66063bca), uint32(0x11010b5c),
  3512  		uint32(0x8f659eff), uint32(0xf862ae69), uint32(0x616bffd3), uint32(0x166ccf45), uint32(0xa00ae278),
  3513  		uint32(0xd70dd2ee), uint32(0x4e048354), uint32(0x3903b3c2), uint32(0xa7672661), uint32(0xd06016f7),
  3514  		uint32(0x4969474d), uint32(0x3e6e77db), uint32(0xaed16a4a), uint32(0xd9d65adc), uint32(0x40df0b66),
  3515  		uint32(0x37d83bf0), uint32(0xa9bcae53), uint32(0xdebb9ec5), uint32(0x47b2cf7f), uint32(0x30b5ffe9),
  3516  		uint32(0xbdbdf21c), uint32(0xcabac28a), uint32(0x53b39330), uint32(0x24b4a3a6), uint32(0xbad03605),
  3517  		uint32(0xcdd70693), uint32(0x54de5729), uint32(0x23d967bf), uint32(0xb3667a2e), uint32(0xc4614ab8),
  3518  		uint32(0x5d681b02), uint32(0x2a6f2b94), uint32(0xb40bbe37), uint32(0xc30c8ea1), uint32(0x5a05df1b),
  3519  		uint32(0x2d02ef8d),
  3520  	},
  3521  	{
  3522  		uint32(0x00000000), uint32(0x191b3141), uint32(0x32366282), uint32(0x2b2d53c3), uint32(0x646cc504),
  3523  		uint32(0x7d77f445), uint32(0x565aa786), uint32(0x4f4196c7), uint32(0xc8d98a08), uint32(0xd1c2bb49),
  3524  		uint32(0xfaefe88a), uint32(0xe3f4d9cb), uint32(0xacb54f0c), uint32(0xb5ae7e4d), uint32(0x9e832d8e),
  3525  		uint32(0x87981ccf), uint32(0x4ac21251), uint32(0x53d92310), uint32(0x78f470d3), uint32(0x61ef4192),
  3526  		uint32(0x2eaed755), uint32(0x37b5e614), uint32(0x1c98b5d7), uint32(0x05838496), uint32(0x821b9859),
  3527  		uint32(0x9b00a918), uint32(0xb02dfadb), uint32(0xa936cb9a), uint32(0xe6775d5d), uint32(0xff6c6c1c),
  3528  		uint32(0xd4413fdf), uint32(0xcd5a0e9e), uint32(0x958424a2), uint32(0x8c9f15e3), uint32(0xa7b24620),
  3529  		uint32(0xbea97761), uint32(0xf1e8e1a6), uint32(0xe8f3d0e7), uint32(0xc3de8324), uint32(0xdac5b265),
  3530  		uint32(0x5d5daeaa), uint32(0x44469feb), uint32(0x6f6bcc28), uint32(0x7670fd69), uint32(0x39316bae),
  3531  		uint32(0x202a5aef), uint32(0x0b07092c), uint32(0x121c386d), uint32(0xdf4636f3), uint32(0xc65d07b2),
  3532  		uint32(0xed705471), uint32(0xf46b6530), uint32(0xbb2af3f7), uint32(0xa231c2b6), uint32(0x891c9175),
  3533  		uint32(0x9007a034), uint32(0x179fbcfb), uint32(0x0e848dba), uint32(0x25a9de79), uint32(0x3cb2ef38),
  3534  		uint32(0x73f379ff), uint32(0x6ae848be), uint32(0x41c51b7d), uint32(0x58de2a3c), uint32(0xf0794f05),
  3535  		uint32(0xe9627e44), uint32(0xc24f2d87), uint32(0xdb541cc6), uint32(0x94158a01), uint32(0x8d0ebb40),
  3536  		uint32(0xa623e883), uint32(0xbf38d9c2), uint32(0x38a0c50d), uint32(0x21bbf44c), uint32(0x0a96a78f),
  3537  		uint32(0x138d96ce), uint32(0x5ccc0009), uint32(0x45d73148), uint32(0x6efa628b), uint32(0x77e153ca),
  3538  		uint32(0xbabb5d54), uint32(0xa3a06c15), uint32(0x888d3fd6), uint32(0x91960e97), uint32(0xded79850),
  3539  		uint32(0xc7cca911), uint32(0xece1fad2), uint32(0xf5facb93), uint32(0x7262d75c), uint32(0x6b79e61d),
  3540  		uint32(0x4054b5de), uint32(0x594f849f), uint32(0x160e1258), uint32(0x0f152319), uint32(0x243870da),
  3541  		uint32(0x3d23419b), uint32(0x65fd6ba7), uint32(0x7ce65ae6), uint32(0x57cb0925), uint32(0x4ed03864),
  3542  		uint32(0x0191aea3), uint32(0x188a9fe2), uint32(0x33a7cc21), uint32(0x2abcfd60), uint32(0xad24e1af),
  3543  		uint32(0xb43fd0ee), uint32(0x9f12832d), uint32(0x8609b26c), uint32(0xc94824ab), uint32(0xd05315ea),
  3544  		uint32(0xfb7e4629), uint32(0xe2657768), uint32(0x2f3f79f6), uint32(0x362448b7), uint32(0x1d091b74),
  3545  		uint32(0x04122a35), uint32(0x4b53bcf2), uint32(0x52488db3), uint32(0x7965de70), uint32(0x607eef31),
  3546  		uint32(0xe7e6f3fe), uint32(0xfefdc2bf), uint32(0xd5d0917c), uint32(0xcccba03d), uint32(0x838a36fa),
  3547  		uint32(0x9a9107bb), uint32(0xb1bc5478), uint32(0xa8a76539), uint32(0x3b83984b), uint32(0x2298a90a),
  3548  		uint32(0x09b5fac9), uint32(0x10aecb88), uint32(0x5fef5d4f), uint32(0x46f46c0e), uint32(0x6dd93fcd),
  3549  		uint32(0x74c20e8c), uint32(0xf35a1243), uint32(0xea412302), uint32(0xc16c70c1), uint32(0xd8774180),
  3550  		uint32(0x9736d747), uint32(0x8e2de606), uint32(0xa500b5c5), uint32(0xbc1b8484), uint32(0x71418a1a),
  3551  		uint32(0x685abb5b), uint32(0x4377e898), uint32(0x5a6cd9d9), uint32(0x152d4f1e), uint32(0x0c367e5f),
  3552  		uint32(0x271b2d9c), uint32(0x3e001cdd), uint32(0xb9980012), uint32(0xa0833153), uint32(0x8bae6290),
  3553  		uint32(0x92b553d1), uint32(0xddf4c516), uint32(0xc4eff457), uint32(0xefc2a794), uint32(0xf6d996d5),
  3554  		uint32(0xae07bce9), uint32(0xb71c8da8), uint32(0x9c31de6b), uint32(0x852aef2a), uint32(0xca6b79ed),
  3555  		uint32(0xd37048ac), uint32(0xf85d1b6f), uint32(0xe1462a2e), uint32(0x66de36e1), uint32(0x7fc507a0),
  3556  		uint32(0x54e85463), uint32(0x4df36522), uint32(0x02b2f3e5), uint32(0x1ba9c2a4), uint32(0x30849167),
  3557  		uint32(0x299fa026), uint32(0xe4c5aeb8), uint32(0xfdde9ff9), uint32(0xd6f3cc3a), uint32(0xcfe8fd7b),
  3558  		uint32(0x80a96bbc), uint32(0x99b25afd), uint32(0xb29f093e), uint32(0xab84387f), uint32(0x2c1c24b0),
  3559  		uint32(0x350715f1), uint32(0x1e2a4632), uint32(0x07317773), uint32(0x4870e1b4), uint32(0x516bd0f5),
  3560  		uint32(0x7a468336), uint32(0x635db277), uint32(0xcbfad74e), uint32(0xd2e1e60f), uint32(0xf9ccb5cc),
  3561  		uint32(0xe0d7848d), uint32(0xaf96124a), uint32(0xb68d230b), uint32(0x9da070c8), uint32(0x84bb4189),
  3562  		uint32(0x03235d46), uint32(0x1a386c07), uint32(0x31153fc4), uint32(0x280e0e85), uint32(0x674f9842),
  3563  		uint32(0x7e54a903), uint32(0x5579fac0), uint32(0x4c62cb81), uint32(0x8138c51f), uint32(0x9823f45e),
  3564  		uint32(0xb30ea79d), uint32(0xaa1596dc), uint32(0xe554001b), uint32(0xfc4f315a), uint32(0xd7626299),
  3565  		uint32(0xce7953d8), uint32(0x49e14f17), uint32(0x50fa7e56), uint32(0x7bd72d95), uint32(0x62cc1cd4),
  3566  		uint32(0x2d8d8a13), uint32(0x3496bb52), uint32(0x1fbbe891), uint32(0x06a0d9d0), uint32(0x5e7ef3ec),
  3567  		uint32(0x4765c2ad), uint32(0x6c48916e), uint32(0x7553a02f), uint32(0x3a1236e8), uint32(0x230907a9),
  3568  		uint32(0x0824546a), uint32(0x113f652b), uint32(0x96a779e4), uint32(0x8fbc48a5), uint32(0xa4911b66),
  3569  		uint32(0xbd8a2a27), uint32(0xf2cbbce0), uint32(0xebd08da1), uint32(0xc0fdde62), uint32(0xd9e6ef23),
  3570  		uint32(0x14bce1bd), uint32(0x0da7d0fc), uint32(0x268a833f), uint32(0x3f91b27e), uint32(0x70d024b9),
  3571  		uint32(0x69cb15f8), uint32(0x42e6463b), uint32(0x5bfd777a), uint32(0xdc656bb5), uint32(0xc57e5af4),
  3572  		uint32(0xee530937), uint32(0xf7483876), uint32(0xb809aeb1), uint32(0xa1129ff0), uint32(0x8a3fcc33),
  3573  		uint32(0x9324fd72),
  3574  	},
  3575  	{
  3576  		uint32(0x00000000), uint32(0x01c26a37), uint32(0x0384d46e), uint32(0x0246be59), uint32(0x0709a8dc),
  3577  		uint32(0x06cbc2eb), uint32(0x048d7cb2), uint32(0x054f1685), uint32(0x0e1351b8), uint32(0x0fd13b8f),
  3578  		uint32(0x0d9785d6), uint32(0x0c55efe1), uint32(0x091af964), uint32(0x08d89353), uint32(0x0a9e2d0a),
  3579  		uint32(0x0b5c473d), uint32(0x1c26a370), uint32(0x1de4c947), uint32(0x1fa2771e), uint32(0x1e601d29),
  3580  		uint32(0x1b2f0bac), uint32(0x1aed619b), uint32(0x18abdfc2), uint32(0x1969b5f5), uint32(0x1235f2c8),
  3581  		uint32(0x13f798ff), uint32(0x11b126a6), uint32(0x10734c91), uint32(0x153c5a14), uint32(0x14fe3023),
  3582  		uint32(0x16b88e7a), uint32(0x177ae44d), uint32(0x384d46e0), uint32(0x398f2cd7), uint32(0x3bc9928e),
  3583  		uint32(0x3a0bf8b9), uint32(0x3f44ee3c), uint32(0x3e86840b), uint32(0x3cc03a52), uint32(0x3d025065),
  3584  		uint32(0x365e1758), uint32(0x379c7d6f), uint32(0x35dac336), uint32(0x3418a901), uint32(0x3157bf84),
  3585  		uint32(0x3095d5b3), uint32(0x32d36bea), uint32(0x331101dd), uint32(0x246be590), uint32(0x25a98fa7),
  3586  		uint32(0x27ef31fe), uint32(0x262d5bc9), uint32(0x23624d4c), uint32(0x22a0277b), uint32(0x20e69922),
  3587  		uint32(0x2124f315), uint32(0x2a78b428), uint32(0x2bbade1f), uint32(0x29fc6046), uint32(0x283e0a71),
  3588  		uint32(0x2d711cf4), uint32(0x2cb376c3), uint32(0x2ef5c89a), uint32(0x2f37a2ad), uint32(0x709a8dc0),
  3589  		uint32(0x7158e7f7), uint32(0x731e59ae), uint32(0x72dc3399), uint32(0x7793251c), uint32(0x76514f2b),
  3590  		uint32(0x7417f172), uint32(0x75d59b45), uint32(0x7e89dc78), uint32(0x7f4bb64f), uint32(0x7d0d0816),
  3591  		uint32(0x7ccf6221), uint32(0x798074a4), uint32(0x78421e93), uint32(0x7a04a0ca), uint32(0x7bc6cafd),
  3592  		uint32(0x6cbc2eb0), uint32(0x6d7e4487), uint32(0x6f38fade), uint32(0x6efa90e9), uint32(0x6bb5866c),
  3593  		uint32(0x6a77ec5b), uint32(0x68315202), uint32(0x69f33835), uint32(0x62af7f08), uint32(0x636d153f),
  3594  		uint32(0x612bab66), uint32(0x60e9c151), uint32(0x65a6d7d4), uint32(0x6464bde3), uint32(0x662203ba),
  3595  		uint32(0x67e0698d), uint32(0x48d7cb20), uint32(0x4915a117), uint32(0x4b531f4e), uint32(0x4a917579),
  3596  		uint32(0x4fde63fc), uint32(0x4e1c09cb), uint32(0x4c5ab792), uint32(0x4d98dda5), uint32(0x46c49a98),
  3597  		uint32(0x4706f0af), uint32(0x45404ef6), uint32(0x448224c1), uint32(0x41cd3244), uint32(0x400f5873),
  3598  		uint32(0x4249e62a), uint32(0x438b8c1d), uint32(0x54f16850), uint32(0x55330267), uint32(0x5775bc3e),
  3599  		uint32(0x56b7d609), uint32(0x53f8c08c), uint32(0x523aaabb), uint32(0x507c14e2), uint32(0x51be7ed5),
  3600  		uint32(0x5ae239e8), uint32(0x5b2053df), uint32(0x5966ed86), uint32(0x58a487b1), uint32(0x5deb9134),
  3601  		uint32(0x5c29fb03), uint32(0x5e6f455a), uint32(0x5fad2f6d), uint32(0xe1351b80), uint32(0xe0f771b7),
  3602  		uint32(0xe2b1cfee), uint32(0xe373a5d9), uint32(0xe63cb35c), uint32(0xe7fed96b), uint32(0xe5b86732),
  3603  		uint32(0xe47a0d05), uint32(0xef264a38), uint32(0xeee4200f), uint32(0xeca29e56), uint32(0xed60f461),
  3604  		uint32(0xe82fe2e4), uint32(0xe9ed88d3), uint32(0xebab368a), uint32(0xea695cbd), uint32(0xfd13b8f0),
  3605  		uint32(0xfcd1d2c7), uint32(0xfe976c9e), uint32(0xff5506a9), uint32(0xfa1a102c), uint32(0xfbd87a1b),
  3606  		uint32(0xf99ec442), uint32(0xf85cae75), uint32(0xf300e948), uint32(0xf2c2837f), uint32(0xf0843d26),
  3607  		uint32(0xf1465711), uint32(0xf4094194), uint32(0xf5cb2ba3), uint32(0xf78d95fa), uint32(0xf64fffcd),
  3608  		uint32(0xd9785d60), uint32(0xd8ba3757), uint32(0xdafc890e), uint32(0xdb3ee339), uint32(0xde71f5bc),
  3609  		uint32(0xdfb39f8b), uint32(0xddf521d2), uint32(0xdc374be5), uint32(0xd76b0cd8), uint32(0xd6a966ef),
  3610  		uint32(0xd4efd8b6), uint32(0xd52db281), uint32(0xd062a404), uint32(0xd1a0ce33), uint32(0xd3e6706a),
  3611  		uint32(0xd2241a5d), uint32(0xc55efe10), uint32(0xc49c9427), uint32(0xc6da2a7e), uint32(0xc7184049),
  3612  		uint32(0xc25756cc), uint32(0xc3953cfb), uint32(0xc1d382a2), uint32(0xc011e895), uint32(0xcb4dafa8),
  3613  		uint32(0xca8fc59f), uint32(0xc8c97bc6), uint32(0xc90b11f1), uint32(0xcc440774), uint32(0xcd866d43),
  3614  		uint32(0xcfc0d31a), uint32(0xce02b92d), uint32(0x91af9640), uint32(0x906dfc77), uint32(0x922b422e),
  3615  		uint32(0x93e92819), uint32(0x96a63e9c), uint32(0x976454ab), uint32(0x9522eaf2), uint32(0x94e080c5),
  3616  		uint32(0x9fbcc7f8), uint32(0x9e7eadcf), uint32(0x9c381396), uint32(0x9dfa79a1), uint32(0x98b56f24),
  3617  		uint32(0x99770513), uint32(0x9b31bb4a), uint32(0x9af3d17d), uint32(0x8d893530), uint32(0x8c4b5f07),
  3618  		uint32(0x8e0de15e), uint32(0x8fcf8b69), uint32(0x8a809dec), uint32(0x8b42f7db), uint32(0x89044982),
  3619  		uint32(0x88c623b5), uint32(0x839a6488), uint32(0x82580ebf), uint32(0x801eb0e6), uint32(0x81dcdad1),
  3620  		uint32(0x8493cc54), uint32(0x8551a663), uint32(0x8717183a), uint32(0x86d5720d), uint32(0xa9e2d0a0),
  3621  		uint32(0xa820ba97), uint32(0xaa6604ce), uint32(0xaba46ef9), uint32(0xaeeb787c), uint32(0xaf29124b),
  3622  		uint32(0xad6fac12), uint32(0xacadc625), uint32(0xa7f18118), uint32(0xa633eb2f), uint32(0xa4755576),
  3623  		uint32(0xa5b73f41), uint32(0xa0f829c4), uint32(0xa13a43f3), uint32(0xa37cfdaa), uint32(0xa2be979d),
  3624  		uint32(0xb5c473d0), uint32(0xb40619e7), uint32(0xb640a7be), uint32(0xb782cd89), uint32(0xb2cddb0c),
  3625  		uint32(0xb30fb13b), uint32(0xb1490f62), uint32(0xb08b6555), uint32(0xbbd72268), uint32(0xba15485f),
  3626  		uint32(0xb853f606), uint32(0xb9919c31), uint32(0xbcde8ab4), uint32(0xbd1ce083), uint32(0xbf5a5eda),
  3627  		uint32(0xbe9834ed),
  3628  	},
  3629  	{
  3630  		uint32(0x00000000), uint32(0xb8bc6765), uint32(0xaa09c88b), uint32(0x12b5afee), uint32(0x8f629757),
  3631  		uint32(0x37def032), uint32(0x256b5fdc), uint32(0x9dd738b9), uint32(0xc5b428ef), uint32(0x7d084f8a),
  3632  		uint32(0x6fbde064), uint32(0xd7018701), uint32(0x4ad6bfb8), uint32(0xf26ad8dd), uint32(0xe0df7733),
  3633  		uint32(0x58631056), uint32(0x5019579f), uint32(0xe8a530fa), uint32(0xfa109f14), uint32(0x42acf871),
  3634  		uint32(0xdf7bc0c8), uint32(0x67c7a7ad), uint32(0x75720843), uint32(0xcdce6f26), uint32(0x95ad7f70),
  3635  		uint32(0x2d111815), uint32(0x3fa4b7fb), uint32(0x8718d09e), uint32(0x1acfe827), uint32(0xa2738f42),
  3636  		uint32(0xb0c620ac), uint32(0x087a47c9), uint32(0xa032af3e), uint32(0x188ec85b), uint32(0x0a3b67b5),
  3637  		uint32(0xb28700d0), uint32(0x2f503869), uint32(0x97ec5f0c), uint32(0x8559f0e2), uint32(0x3de59787),
  3638  		uint32(0x658687d1), uint32(0xdd3ae0b4), uint32(0xcf8f4f5a), uint32(0x7733283f), uint32(0xeae41086),
  3639  		uint32(0x525877e3), uint32(0x40edd80d), uint32(0xf851bf68), uint32(0xf02bf8a1), uint32(0x48979fc4),
  3640  		uint32(0x5a22302a), uint32(0xe29e574f), uint32(0x7f496ff6), uint32(0xc7f50893), uint32(0xd540a77d),
  3641  		uint32(0x6dfcc018), uint32(0x359fd04e), uint32(0x8d23b72b), uint32(0x9f9618c5), uint32(0x272a7fa0),
  3642  		uint32(0xbafd4719), uint32(0x0241207c), uint32(0x10f48f92), uint32(0xa848e8f7), uint32(0x9b14583d),
  3643  		uint32(0x23a83f58), uint32(0x311d90b6), uint32(0x89a1f7d3), uint32(0x1476cf6a), uint32(0xaccaa80f),
  3644  		uint32(0xbe7f07e1), uint32(0x06c36084), uint32(0x5ea070d2), uint32(0xe61c17b7), uint32(0xf4a9b859),
  3645  		uint32(0x4c15df3c), uint32(0xd1c2e785), uint32(0x697e80e0), uint32(0x7bcb2f0e), uint32(0xc377486b),
  3646  		uint32(0xcb0d0fa2), uint32(0x73b168c7), uint32(0x6104c729), uint32(0xd9b8a04c), uint32(0x446f98f5),
  3647  		uint32(0xfcd3ff90), uint32(0xee66507e), uint32(0x56da371b), uint32(0x0eb9274d), uint32(0xb6054028),
  3648  		uint32(0xa4b0efc6), uint32(0x1c0c88a3), uint32(0x81dbb01a), uint32(0x3967d77f), uint32(0x2bd27891),
  3649  		uint32(0x936e1ff4), uint32(0x3b26f703), uint32(0x839a9066), uint32(0x912f3f88), uint32(0x299358ed),
  3650  		uint32(0xb4446054), uint32(0x0cf80731), uint32(0x1e4da8df), uint32(0xa6f1cfba), uint32(0xfe92dfec),
  3651  		uint32(0x462eb889), uint32(0x549b1767), uint32(0xec277002), uint32(0x71f048bb), uint32(0xc94c2fde),
  3652  		uint32(0xdbf98030), uint32(0x6345e755), uint32(0x6b3fa09c), uint32(0xd383c7f9), uint32(0xc1366817),
  3653  		uint32(0x798a0f72), uint32(0xe45d37cb), uint32(0x5ce150ae), uint32(0x4e54ff40), uint32(0xf6e89825),
  3654  		uint32(0xae8b8873), uint32(0x1637ef16), uint32(0x048240f8), uint32(0xbc3e279d), uint32(0x21e91f24),
  3655  		uint32(0x99557841), uint32(0x8be0d7af), uint32(0x335cb0ca), uint32(0xed59b63b), uint32(0x55e5d15e),
  3656  		uint32(0x47507eb0), uint32(0xffec19d5), uint32(0x623b216c), uint32(0xda874609), uint32(0xc832e9e7),
  3657  		uint32(0x708e8e82), uint32(0x28ed9ed4), uint32(0x9051f9b1), uint32(0x82e4565f), uint32(0x3a58313a),
  3658  		uint32(0xa78f0983), uint32(0x1f336ee6), uint32(0x0d86c108), uint32(0xb53aa66d), uint32(0xbd40e1a4),
  3659  		uint32(0x05fc86c1), uint32(0x1749292f), uint32(0xaff54e4a), uint32(0x322276f3), uint32(0x8a9e1196),
  3660  		uint32(0x982bbe78), uint32(0x2097d91d), uint32(0x78f4c94b), uint32(0xc048ae2e), uint32(0xd2fd01c0),
  3661  		uint32(0x6a4166a5), uint32(0xf7965e1c), uint32(0x4f2a3979), uint32(0x5d9f9697), uint32(0xe523f1f2),
  3662  		uint32(0x4d6b1905), uint32(0xf5d77e60), uint32(0xe762d18e), uint32(0x5fdeb6eb), uint32(0xc2098e52),
  3663  		uint32(0x7ab5e937), uint32(0x680046d9), uint32(0xd0bc21bc), uint32(0x88df31ea), uint32(0x3063568f),
  3664  		uint32(0x22d6f961), uint32(0x9a6a9e04), uint32(0x07bda6bd), uint32(0xbf01c1d8), uint32(0xadb46e36),
  3665  		uint32(0x15080953), uint32(0x1d724e9a), uint32(0xa5ce29ff), uint32(0xb77b8611), uint32(0x0fc7e174),
  3666  		uint32(0x9210d9cd), uint32(0x2aacbea8), uint32(0x38191146), uint32(0x80a57623), uint32(0xd8c66675),
  3667  		uint32(0x607a0110), uint32(0x72cfaefe), uint32(0xca73c99b), uint32(0x57a4f122), uint32(0xef189647),
  3668  		uint32(0xfdad39a9), uint32(0x45115ecc), uint32(0x764dee06), uint32(0xcef18963), uint32(0xdc44268d),
  3669  		uint32(0x64f841e8), uint32(0xf92f7951), uint32(0x41931e34), uint32(0x5326b1da), uint32(0xeb9ad6bf),
  3670  		uint32(0xb3f9c6e9), uint32(0x0b45a18c), uint32(0x19f00e62), uint32(0xa14c6907), uint32(0x3c9b51be),
  3671  		uint32(0x842736db), uint32(0x96929935), uint32(0x2e2efe50), uint32(0x2654b999), uint32(0x9ee8defc),
  3672  		uint32(0x8c5d7112), uint32(0x34e11677), uint32(0xa9362ece), uint32(0x118a49ab), uint32(0x033fe645),
  3673  		uint32(0xbb838120), uint32(0xe3e09176), uint32(0x5b5cf613), uint32(0x49e959fd), uint32(0xf1553e98),
  3674  		uint32(0x6c820621), uint32(0xd43e6144), uint32(0xc68bceaa), uint32(0x7e37a9cf), uint32(0xd67f4138),
  3675  		uint32(0x6ec3265d), uint32(0x7c7689b3), uint32(0xc4caeed6), uint32(0x591dd66f), uint32(0xe1a1b10a),
  3676  		uint32(0xf3141ee4), uint32(0x4ba87981), uint32(0x13cb69d7), uint32(0xab770eb2), uint32(0xb9c2a15c),
  3677  		uint32(0x017ec639), uint32(0x9ca9fe80), uint32(0x241599e5), uint32(0x36a0360b), uint32(0x8e1c516e),
  3678  		uint32(0x866616a7), uint32(0x3eda71c2), uint32(0x2c6fde2c), uint32(0x94d3b949), uint32(0x090481f0),
  3679  		uint32(0xb1b8e695), uint32(0xa30d497b), uint32(0x1bb12e1e), uint32(0x43d23e48), uint32(0xfb6e592d),
  3680  		uint32(0xe9dbf6c3), uint32(0x516791a6), uint32(0xccb0a91f), uint32(0x740cce7a), uint32(0x66b96194),
  3681  		uint32(0xde0506f1),
  3682  	},
  3683  	{
  3684  		uint32(0x00000000), uint32(0x96300777), uint32(0x2c610eee), uint32(0xba510999), uint32(0x19c46d07),
  3685  		uint32(0x8ff46a70), uint32(0x35a563e9), uint32(0xa395649e), uint32(0x3288db0e), uint32(0xa4b8dc79),
  3686  		uint32(0x1ee9d5e0), uint32(0x88d9d297), uint32(0x2b4cb609), uint32(0xbd7cb17e), uint32(0x072db8e7),
  3687  		uint32(0x911dbf90), uint32(0x6410b71d), uint32(0xf220b06a), uint32(0x4871b9f3), uint32(0xde41be84),
  3688  		uint32(0x7dd4da1a), uint32(0xebe4dd6d), uint32(0x51b5d4f4), uint32(0xc785d383), uint32(0x56986c13),
  3689  		uint32(0xc0a86b64), uint32(0x7af962fd), uint32(0xecc9658a), uint32(0x4f5c0114), uint32(0xd96c0663),
  3690  		uint32(0x633d0ffa), uint32(0xf50d088d), uint32(0xc8206e3b), uint32(0x5e10694c), uint32(0xe44160d5),
  3691  		uint32(0x727167a2), uint32(0xd1e4033c), uint32(0x47d4044b), uint32(0xfd850dd2), uint32(0x6bb50aa5),
  3692  		uint32(0xfaa8b535), uint32(0x6c98b242), uint32(0xd6c9bbdb), uint32(0x40f9bcac), uint32(0xe36cd832),
  3693  		uint32(0x755cdf45), uint32(0xcf0dd6dc), uint32(0x593dd1ab), uint32(0xac30d926), uint32(0x3a00de51),
  3694  		uint32(0x8051d7c8), uint32(0x1661d0bf), uint32(0xb5f4b421), uint32(0x23c4b356), uint32(0x9995bacf),
  3695  		uint32(0x0fa5bdb8), uint32(0x9eb80228), uint32(0x0888055f), uint32(0xb2d90cc6), uint32(0x24e90bb1),
  3696  		uint32(0x877c6f2f), uint32(0x114c6858), uint32(0xab1d61c1), uint32(0x3d2d66b6), uint32(0x9041dc76),
  3697  		uint32(0x0671db01), uint32(0xbc20d298), uint32(0x2a10d5ef), uint32(0x8985b171), uint32(0x1fb5b606),
  3698  		uint32(0xa5e4bf9f), uint32(0x33d4b8e8), uint32(0xa2c90778), uint32(0x34f9000f), uint32(0x8ea80996),
  3699  		uint32(0x18980ee1), uint32(0xbb0d6a7f), uint32(0x2d3d6d08), uint32(0x976c6491), uint32(0x015c63e6),
  3700  		uint32(0xf4516b6b), uint32(0x62616c1c), uint32(0xd8306585), uint32(0x4e0062f2), uint32(0xed95066c),
  3701  		uint32(0x7ba5011b), uint32(0xc1f40882), uint32(0x57c40ff5), uint32(0xc6d9b065), uint32(0x50e9b712),
  3702  		uint32(0xeab8be8b), uint32(0x7c88b9fc), uint32(0xdf1ddd62), uint32(0x492dda15), uint32(0xf37cd38c),
  3703  		uint32(0x654cd4fb), uint32(0x5861b24d), uint32(0xce51b53a), uint32(0x7400bca3), uint32(0xe230bbd4),
  3704  		uint32(0x41a5df4a), uint32(0xd795d83d), uint32(0x6dc4d1a4), uint32(0xfbf4d6d3), uint32(0x6ae96943),
  3705  		uint32(0xfcd96e34), uint32(0x468867ad), uint32(0xd0b860da), uint32(0x732d0444), uint32(0xe51d0333),
  3706  		uint32(0x5f4c0aaa), uint32(0xc97c0ddd), uint32(0x3c710550), uint32(0xaa410227), uint32(0x10100bbe),
  3707  		uint32(0x86200cc9), uint32(0x25b56857), uint32(0xb3856f20), uint32(0x09d466b9), uint32(0x9fe461ce),
  3708  		uint32(0x0ef9de5e), uint32(0x98c9d929), uint32(0x2298d0b0), uint32(0xb4a8d7c7), uint32(0x173db359),
  3709  		uint32(0x810db42e), uint32(0x3b5cbdb7), uint32(0xad6cbac0), uint32(0x2083b8ed), uint32(0xb6b3bf9a),
  3710  		uint32(0x0ce2b603), uint32(0x9ad2b174), uint32(0x3947d5ea), uint32(0xaf77d29d), uint32(0x1526db04),
  3711  		uint32(0x8316dc73), uint32(0x120b63e3), uint32(0x843b6494), uint32(0x3e6a6d0d), uint32(0xa85a6a7a),
  3712  		uint32(0x0bcf0ee4), uint32(0x9dff0993), uint32(0x27ae000a), uint32(0xb19e077d), uint32(0x44930ff0),
  3713  		uint32(0xd2a30887), uint32(0x68f2011e), uint32(0xfec20669), uint32(0x5d5762f7), uint32(0xcb676580),
  3714  		uint32(0x71366c19), uint32(0xe7066b6e), uint32(0x761bd4fe), uint32(0xe02bd389), uint32(0x5a7ada10),
  3715  		uint32(0xcc4add67), uint32(0x6fdfb9f9), uint32(0xf9efbe8e), uint32(0x43beb717), uint32(0xd58eb060),
  3716  		uint32(0xe8a3d6d6), uint32(0x7e93d1a1), uint32(0xc4c2d838), uint32(0x52f2df4f), uint32(0xf167bbd1),
  3717  		uint32(0x6757bca6), uint32(0xdd06b53f), uint32(0x4b36b248), uint32(0xda2b0dd8), uint32(0x4c1b0aaf),
  3718  		uint32(0xf64a0336), uint32(0x607a0441), uint32(0xc3ef60df), uint32(0x55df67a8), uint32(0xef8e6e31),
  3719  		uint32(0x79be6946), uint32(0x8cb361cb), uint32(0x1a8366bc), uint32(0xa0d26f25), uint32(0x36e26852),
  3720  		uint32(0x95770ccc), uint32(0x03470bbb), uint32(0xb9160222), uint32(0x2f260555), uint32(0xbe3bbac5),
  3721  		uint32(0x280bbdb2), uint32(0x925ab42b), uint32(0x046ab35c), uint32(0xa7ffd7c2), uint32(0x31cfd0b5),
  3722  		uint32(0x8b9ed92c), uint32(0x1daede5b), uint32(0xb0c2649b), uint32(0x26f263ec), uint32(0x9ca36a75),
  3723  		uint32(0x0a936d02), uint32(0xa906099c), uint32(0x3f360eeb), uint32(0x85670772), uint32(0x13570005),
  3724  		uint32(0x824abf95), uint32(0x147ab8e2), uint32(0xae2bb17b), uint32(0x381bb60c), uint32(0x9b8ed292),
  3725  		uint32(0x0dbed5e5), uint32(0xb7efdc7c), uint32(0x21dfdb0b), uint32(0xd4d2d386), uint32(0x42e2d4f1),
  3726  		uint32(0xf8b3dd68), uint32(0x6e83da1f), uint32(0xcd16be81), uint32(0x5b26b9f6), uint32(0xe177b06f),
  3727  		uint32(0x7747b718), uint32(0xe65a0888), uint32(0x706a0fff), uint32(0xca3b0666), uint32(0x5c0b0111),
  3728  		uint32(0xff9e658f), uint32(0x69ae62f8), uint32(0xd3ff6b61), uint32(0x45cf6c16), uint32(0x78e20aa0),
  3729  		uint32(0xeed20dd7), uint32(0x5483044e), uint32(0xc2b30339), uint32(0x612667a7), uint32(0xf71660d0),
  3730  		uint32(0x4d476949), uint32(0xdb776e3e), uint32(0x4a6ad1ae), uint32(0xdc5ad6d9), uint32(0x660bdf40),
  3731  		uint32(0xf03bd837), uint32(0x53aebca9), uint32(0xc59ebbde), uint32(0x7fcfb247), uint32(0xe9ffb530),
  3732  		uint32(0x1cf2bdbd), uint32(0x8ac2baca), uint32(0x3093b353), uint32(0xa6a3b424), uint32(0x0536d0ba),
  3733  		uint32(0x9306d7cd), uint32(0x2957de54), uint32(0xbf67d923), uint32(0x2e7a66b3), uint32(0xb84a61c4),
  3734  		uint32(0x021b685d), uint32(0x942b6f2a), uint32(0x37be0bb4), uint32(0xa18e0cc3), uint32(0x1bdf055a),
  3735  		uint32(0x8def022d),
  3736  	},
  3737  	{
  3738  		uint32(0x00000000), uint32(0x41311b19), uint32(0x82623632), uint32(0xc3532d2b), uint32(0x04c56c64),
  3739  		uint32(0x45f4777d), uint32(0x86a75a56), uint32(0xc796414f), uint32(0x088ad9c8), uint32(0x49bbc2d1),
  3740  		uint32(0x8ae8effa), uint32(0xcbd9f4e3), uint32(0x0c4fb5ac), uint32(0x4d7eaeb5), uint32(0x8e2d839e),
  3741  		uint32(0xcf1c9887), uint32(0x5112c24a), uint32(0x1023d953), uint32(0xd370f478), uint32(0x9241ef61),
  3742  		uint32(0x55d7ae2e), uint32(0x14e6b537), uint32(0xd7b5981c), uint32(0x96848305), uint32(0x59981b82),
  3743  		uint32(0x18a9009b), uint32(0xdbfa2db0), uint32(0x9acb36a9), uint32(0x5d5d77e6), uint32(0x1c6c6cff),
  3744  		uint32(0xdf3f41d4), uint32(0x9e0e5acd), uint32(0xa2248495), uint32(0xe3159f8c), uint32(0x2046b2a7),
  3745  		uint32(0x6177a9be), uint32(0xa6e1e8f1), uint32(0xe7d0f3e8), uint32(0x2483dec3), uint32(0x65b2c5da),
  3746  		uint32(0xaaae5d5d), uint32(0xeb9f4644), uint32(0x28cc6b6f), uint32(0x69fd7076), uint32(0xae6b3139),
  3747  		uint32(0xef5a2a20), uint32(0x2c09070b), uint32(0x6d381c12), uint32(0xf33646df), uint32(0xb2075dc6),
  3748  		uint32(0x715470ed), uint32(0x30656bf4), uint32(0xf7f32abb), uint32(0xb6c231a2), uint32(0x75911c89),
  3749  		uint32(0x34a00790), uint32(0xfbbc9f17), uint32(0xba8d840e), uint32(0x79dea925), uint32(0x38efb23c),
  3750  		uint32(0xff79f373), uint32(0xbe48e86a), uint32(0x7d1bc541), uint32(0x3c2ade58), uint32(0x054f79f0),
  3751  		uint32(0x447e62e9), uint32(0x872d4fc2), uint32(0xc61c54db), uint32(0x018a1594), uint32(0x40bb0e8d),
  3752  		uint32(0x83e823a6), uint32(0xc2d938bf), uint32(0x0dc5a038), uint32(0x4cf4bb21), uint32(0x8fa7960a),
  3753  		uint32(0xce968d13), uint32(0x0900cc5c), uint32(0x4831d745), uint32(0x8b62fa6e), uint32(0xca53e177),
  3754  		uint32(0x545dbbba), uint32(0x156ca0a3), uint32(0xd63f8d88), uint32(0x970e9691), uint32(0x5098d7de),
  3755  		uint32(0x11a9ccc7), uint32(0xd2fae1ec), uint32(0x93cbfaf5), uint32(0x5cd76272), uint32(0x1de6796b),
  3756  		uint32(0xdeb55440), uint32(0x9f844f59), uint32(0x58120e16), uint32(0x1923150f), uint32(0xda703824),
  3757  		uint32(0x9b41233d), uint32(0xa76bfd65), uint32(0xe65ae67c), uint32(0x2509cb57), uint32(0x6438d04e),
  3758  		uint32(0xa3ae9101), uint32(0xe29f8a18), uint32(0x21cca733), uint32(0x60fdbc2a), uint32(0xafe124ad),
  3759  		uint32(0xeed03fb4), uint32(0x2d83129f), uint32(0x6cb20986), uint32(0xab2448c9), uint32(0xea1553d0),
  3760  		uint32(0x29467efb), uint32(0x687765e2), uint32(0xf6793f2f), uint32(0xb7482436), uint32(0x741b091d),
  3761  		uint32(0x352a1204), uint32(0xf2bc534b), uint32(0xb38d4852), uint32(0x70de6579), uint32(0x31ef7e60),
  3762  		uint32(0xfef3e6e7), uint32(0xbfc2fdfe), uint32(0x7c91d0d5), uint32(0x3da0cbcc), uint32(0xfa368a83),
  3763  		uint32(0xbb07919a), uint32(0x7854bcb1), uint32(0x3965a7a8), uint32(0x4b98833b), uint32(0x0aa99822),
  3764  		uint32(0xc9fab509), uint32(0x88cbae10), uint32(0x4f5def5f), uint32(0x0e6cf446), uint32(0xcd3fd96d),
  3765  		uint32(0x8c0ec274), uint32(0x43125af3), uint32(0x022341ea), uint32(0xc1706cc1), uint32(0x804177d8),
  3766  		uint32(0x47d73697), uint32(0x06e62d8e), uint32(0xc5b500a5), uint32(0x84841bbc), uint32(0x1a8a4171),
  3767  		uint32(0x5bbb5a68), uint32(0x98e87743), uint32(0xd9d96c5a), uint32(0x1e4f2d15), uint32(0x5f7e360c),
  3768  		uint32(0x9c2d1b27), uint32(0xdd1c003e), uint32(0x120098b9), uint32(0x533183a0), uint32(0x9062ae8b),
  3769  		uint32(0xd153b592), uint32(0x16c5f4dd), uint32(0x57f4efc4), uint32(0x94a7c2ef), uint32(0xd596d9f6),
  3770  		uint32(0xe9bc07ae), uint32(0xa88d1cb7), uint32(0x6bde319c), uint32(0x2aef2a85), uint32(0xed796bca),
  3771  		uint32(0xac4870d3), uint32(0x6f1b5df8), uint32(0x2e2a46e1), uint32(0xe136de66), uint32(0xa007c57f),
  3772  		uint32(0x6354e854), uint32(0x2265f34d), uint32(0xe5f3b202), uint32(0xa4c2a91b), uint32(0x67918430),
  3773  		uint32(0x26a09f29), uint32(0xb8aec5e4), uint32(0xf99fdefd), uint32(0x3accf3d6), uint32(0x7bfde8cf),
  3774  		uint32(0xbc6ba980), uint32(0xfd5ab299), uint32(0x3e099fb2), uint32(0x7f3884ab), uint32(0xb0241c2c),
  3775  		uint32(0xf1150735), uint32(0x32462a1e), uint32(0x73773107), uint32(0xb4e17048), uint32(0xf5d06b51),
  3776  		uint32(0x3683467a), uint32(0x77b25d63), uint32(0x4ed7facb), uint32(0x0fe6e1d2), uint32(0xccb5ccf9),
  3777  		uint32(0x8d84d7e0), uint32(0x4a1296af), uint32(0x0b238db6), uint32(0xc870a09d), uint32(0x8941bb84),
  3778  		uint32(0x465d2303), uint32(0x076c381a), uint32(0xc43f1531), uint32(0x850e0e28), uint32(0x42984f67),
  3779  		uint32(0x03a9547e), uint32(0xc0fa7955), uint32(0x81cb624c), uint32(0x1fc53881), uint32(0x5ef42398),
  3780  		uint32(0x9da70eb3), uint32(0xdc9615aa), uint32(0x1b0054e5), uint32(0x5a314ffc), uint32(0x996262d7),
  3781  		uint32(0xd85379ce), uint32(0x174fe149), uint32(0x567efa50), uint32(0x952dd77b), uint32(0xd41ccc62),
  3782  		uint32(0x138a8d2d), uint32(0x52bb9634), uint32(0x91e8bb1f), uint32(0xd0d9a006), uint32(0xecf37e5e),
  3783  		uint32(0xadc26547), uint32(0x6e91486c), uint32(0x2fa05375), uint32(0xe836123a), uint32(0xa9070923),
  3784  		uint32(0x6a542408), uint32(0x2b653f11), uint32(0xe479a796), uint32(0xa548bc8f), uint32(0x661b91a4),
  3785  		uint32(0x272a8abd), uint32(0xe0bccbf2), uint32(0xa18dd0eb), uint32(0x62defdc0), uint32(0x23efe6d9),
  3786  		uint32(0xbde1bc14), uint32(0xfcd0a70d), uint32(0x3f838a26), uint32(0x7eb2913f), uint32(0xb924d070),
  3787  		uint32(0xf815cb69), uint32(0x3b46e642), uint32(0x7a77fd5b), uint32(0xb56b65dc), uint32(0xf45a7ec5),
  3788  		uint32(0x370953ee), uint32(0x763848f7), uint32(0xb1ae09b8), uint32(0xf09f12a1), uint32(0x33cc3f8a),
  3789  		uint32(0x72fd2493),
  3790  	},
  3791  	{
  3792  		uint32(0x00000000), uint32(0x376ac201), uint32(0x6ed48403), uint32(0x59be4602), uint32(0xdca80907),
  3793  		uint32(0xebc2cb06), uint32(0xb27c8d04), uint32(0x85164f05), uint32(0xb851130e), uint32(0x8f3bd10f),
  3794  		uint32(0xd685970d), uint32(0xe1ef550c), uint32(0x64f91a09), uint32(0x5393d808), uint32(0x0a2d9e0a),
  3795  		uint32(0x3d475c0b), uint32(0x70a3261c), uint32(0x47c9e41d), uint32(0x1e77a21f), uint32(0x291d601e),
  3796  		uint32(0xac0b2f1b), uint32(0x9b61ed1a), uint32(0xc2dfab18), uint32(0xf5b56919), uint32(0xc8f23512),
  3797  		uint32(0xff98f713), uint32(0xa626b111), uint32(0x914c7310), uint32(0x145a3c15), uint32(0x2330fe14),
  3798  		uint32(0x7a8eb816), uint32(0x4de47a17), uint32(0xe0464d38), uint32(0xd72c8f39), uint32(0x8e92c93b),
  3799  		uint32(0xb9f80b3a), uint32(0x3cee443f), uint32(0x0b84863e), uint32(0x523ac03c), uint32(0x6550023d),
  3800  		uint32(0x58175e36), uint32(0x6f7d9c37), uint32(0x36c3da35), uint32(0x01a91834), uint32(0x84bf5731),
  3801  		uint32(0xb3d59530), uint32(0xea6bd332), uint32(0xdd011133), uint32(0x90e56b24), uint32(0xa78fa925),
  3802  		uint32(0xfe31ef27), uint32(0xc95b2d26), uint32(0x4c4d6223), uint32(0x7b27a022), uint32(0x2299e620),
  3803  		uint32(0x15f32421), uint32(0x28b4782a), uint32(0x1fdeba2b), uint32(0x4660fc29), uint32(0x710a3e28),
  3804  		uint32(0xf41c712d), uint32(0xc376b32c), uint32(0x9ac8f52e), uint32(0xada2372f), uint32(0xc08d9a70),
  3805  		uint32(0xf7e75871), uint32(0xae591e73), uint32(0x9933dc72), uint32(0x1c259377), uint32(0x2b4f5176),
  3806  		uint32(0x72f11774), uint32(0x459bd575), uint32(0x78dc897e), uint32(0x4fb64b7f), uint32(0x16080d7d),
  3807  		uint32(0x2162cf7c), uint32(0xa4748079), uint32(0x931e4278), uint32(0xcaa0047a), uint32(0xfdcac67b),
  3808  		uint32(0xb02ebc6c), uint32(0x87447e6d), uint32(0xdefa386f), uint32(0xe990fa6e), uint32(0x6c86b56b),
  3809  		uint32(0x5bec776a), uint32(0x02523168), uint32(0x3538f369), uint32(0x087faf62), uint32(0x3f156d63),
  3810  		uint32(0x66ab2b61), uint32(0x51c1e960), uint32(0xd4d7a665), uint32(0xe3bd6464), uint32(0xba032266),
  3811  		uint32(0x8d69e067), uint32(0x20cbd748), uint32(0x17a11549), uint32(0x4e1f534b), uint32(0x7975914a),
  3812  		uint32(0xfc63de4f), uint32(0xcb091c4e), uint32(0x92b75a4c), uint32(0xa5dd984d), uint32(0x989ac446),
  3813  		uint32(0xaff00647), uint32(0xf64e4045), uint32(0xc1248244), uint32(0x4432cd41), uint32(0x73580f40),
  3814  		uint32(0x2ae64942), uint32(0x1d8c8b43), uint32(0x5068f154), uint32(0x67023355), uint32(0x3ebc7557),
  3815  		uint32(0x09d6b756), uint32(0x8cc0f853), uint32(0xbbaa3a52), uint32(0xe2147c50), uint32(0xd57ebe51),
  3816  		uint32(0xe839e25a), uint32(0xdf53205b), uint32(0x86ed6659), uint32(0xb187a458), uint32(0x3491eb5d),
  3817  		uint32(0x03fb295c), uint32(0x5a456f5e), uint32(0x6d2fad5f), uint32(0x801b35e1), uint32(0xb771f7e0),
  3818  		uint32(0xeecfb1e2), uint32(0xd9a573e3), uint32(0x5cb33ce6), uint32(0x6bd9fee7), uint32(0x3267b8e5),
  3819  		uint32(0x050d7ae4), uint32(0x384a26ef), uint32(0x0f20e4ee), uint32(0x569ea2ec), uint32(0x61f460ed),
  3820  		uint32(0xe4e22fe8), uint32(0xd388ede9), uint32(0x8a36abeb), uint32(0xbd5c69ea), uint32(0xf0b813fd),
  3821  		uint32(0xc7d2d1fc), uint32(0x9e6c97fe), uint32(0xa90655ff), uint32(0x2c101afa), uint32(0x1b7ad8fb),
  3822  		uint32(0x42c49ef9), uint32(0x75ae5cf8), uint32(0x48e900f3), uint32(0x7f83c2f2), uint32(0x263d84f0),
  3823  		uint32(0x115746f1), uint32(0x944109f4), uint32(0xa32bcbf5), uint32(0xfa958df7), uint32(0xcdff4ff6),
  3824  		uint32(0x605d78d9), uint32(0x5737bad8), uint32(0x0e89fcda), uint32(0x39e33edb), uint32(0xbcf571de),
  3825  		uint32(0x8b9fb3df), uint32(0xd221f5dd), uint32(0xe54b37dc), uint32(0xd80c6bd7), uint32(0xef66a9d6),
  3826  		uint32(0xb6d8efd4), uint32(0x81b22dd5), uint32(0x04a462d0), uint32(0x33cea0d1), uint32(0x6a70e6d3),
  3827  		uint32(0x5d1a24d2), uint32(0x10fe5ec5), uint32(0x27949cc4), uint32(0x7e2adac6), uint32(0x494018c7),
  3828  		uint32(0xcc5657c2), uint32(0xfb3c95c3), uint32(0xa282d3c1), uint32(0x95e811c0), uint32(0xa8af4dcb),
  3829  		uint32(0x9fc58fca), uint32(0xc67bc9c8), uint32(0xf1110bc9), uint32(0x740744cc), uint32(0x436d86cd),
  3830  		uint32(0x1ad3c0cf), uint32(0x2db902ce), uint32(0x4096af91), uint32(0x77fc6d90), uint32(0x2e422b92),
  3831  		uint32(0x1928e993), uint32(0x9c3ea696), uint32(0xab546497), uint32(0xf2ea2295), uint32(0xc580e094),
  3832  		uint32(0xf8c7bc9f), uint32(0xcfad7e9e), uint32(0x9613389c), uint32(0xa179fa9d), uint32(0x246fb598),
  3833  		uint32(0x13057799), uint32(0x4abb319b), uint32(0x7dd1f39a), uint32(0x3035898d), uint32(0x075f4b8c),
  3834  		uint32(0x5ee10d8e), uint32(0x698bcf8f), uint32(0xec9d808a), uint32(0xdbf7428b), uint32(0x82490489),
  3835  		uint32(0xb523c688), uint32(0x88649a83), uint32(0xbf0e5882), uint32(0xe6b01e80), uint32(0xd1dadc81),
  3836  		uint32(0x54cc9384), uint32(0x63a65185), uint32(0x3a181787), uint32(0x0d72d586), uint32(0xa0d0e2a9),
  3837  		uint32(0x97ba20a8), uint32(0xce0466aa), uint32(0xf96ea4ab), uint32(0x7c78ebae), uint32(0x4b1229af),
  3838  		uint32(0x12ac6fad), uint32(0x25c6adac), uint32(0x1881f1a7), uint32(0x2feb33a6), uint32(0x765575a4),
  3839  		uint32(0x413fb7a5), uint32(0xc429f8a0), uint32(0xf3433aa1), uint32(0xaafd7ca3), uint32(0x9d97bea2),
  3840  		uint32(0xd073c4b5), uint32(0xe71906b4), uint32(0xbea740b6), uint32(0x89cd82b7), uint32(0x0cdbcdb2),
  3841  		uint32(0x3bb10fb3), uint32(0x620f49b1), uint32(0x55658bb0), uint32(0x6822d7bb), uint32(0x5f4815ba),
  3842  		uint32(0x06f653b8), uint32(0x319c91b9), uint32(0xb48adebc), uint32(0x83e01cbd), uint32(0xda5e5abf),
  3843  		uint32(0xed3498be),
  3844  	},
  3845  	{
  3846  		uint32(0x00000000), uint32(0x6567bcb8), uint32(0x8bc809aa), uint32(0xeeafb512), uint32(0x5797628f),
  3847  		uint32(0x32f0de37), uint32(0xdc5f6b25), uint32(0xb938d79d), uint32(0xef28b4c5), uint32(0x8a4f087d),
  3848  		uint32(0x64e0bd6f), uint32(0x018701d7), uint32(0xb8bfd64a), uint32(0xddd86af2), uint32(0x3377dfe0),
  3849  		uint32(0x56106358), uint32(0x9f571950), uint32(0xfa30a5e8), uint32(0x149f10fa), uint32(0x71f8ac42),
  3850  		uint32(0xc8c07bdf), uint32(0xada7c767), uint32(0x43087275), uint32(0x266fcecd), uint32(0x707fad95),
  3851  		uint32(0x1518112d), uint32(0xfbb7a43f), uint32(0x9ed01887), uint32(0x27e8cf1a), uint32(0x428f73a2),
  3852  		uint32(0xac20c6b0), uint32(0xc9477a08), uint32(0x3eaf32a0), uint32(0x5bc88e18), uint32(0xb5673b0a),
  3853  		uint32(0xd00087b2), uint32(0x6938502f), uint32(0x0c5fec97), uint32(0xe2f05985), uint32(0x8797e53d),
  3854  		uint32(0xd1878665), uint32(0xb4e03add), uint32(0x5a4f8fcf), uint32(0x3f283377), uint32(0x8610e4ea),
  3855  		uint32(0xe3775852), uint32(0x0dd8ed40), uint32(0x68bf51f8), uint32(0xa1f82bf0), uint32(0xc49f9748),
  3856  		uint32(0x2a30225a), uint32(0x4f579ee2), uint32(0xf66f497f), uint32(0x9308f5c7), uint32(0x7da740d5),
  3857  		uint32(0x18c0fc6d), uint32(0x4ed09f35), uint32(0x2bb7238d), uint32(0xc518969f), uint32(0xa07f2a27),
  3858  		uint32(0x1947fdba), uint32(0x7c204102), uint32(0x928ff410), uint32(0xf7e848a8), uint32(0x3d58149b),
  3859  		uint32(0x583fa823), uint32(0xb6901d31), uint32(0xd3f7a189), uint32(0x6acf7614), uint32(0x0fa8caac),
  3860  		uint32(0xe1077fbe), uint32(0x8460c306), uint32(0xd270a05e), uint32(0xb7171ce6), uint32(0x59b8a9f4),
  3861  		uint32(0x3cdf154c), uint32(0x85e7c2d1), uint32(0xe0807e69), uint32(0x0e2fcb7b), uint32(0x6b4877c3),
  3862  		uint32(0xa20f0dcb), uint32(0xc768b173), uint32(0x29c70461), uint32(0x4ca0b8d9), uint32(0xf5986f44),
  3863  		uint32(0x90ffd3fc), uint32(0x7e5066ee), uint32(0x1b37da56), uint32(0x4d27b90e), uint32(0x284005b6),
  3864  		uint32(0xc6efb0a4), uint32(0xa3880c1c), uint32(0x1ab0db81), uint32(0x7fd76739), uint32(0x9178d22b),
  3865  		uint32(0xf41f6e93), uint32(0x03f7263b), uint32(0x66909a83), uint32(0x883f2f91), uint32(0xed589329),
  3866  		uint32(0x546044b4), uint32(0x3107f80c), uint32(0xdfa84d1e), uint32(0xbacff1a6), uint32(0xecdf92fe),
  3867  		uint32(0x89b82e46), uint32(0x67179b54), uint32(0x027027ec), uint32(0xbb48f071), uint32(0xde2f4cc9),
  3868  		uint32(0x3080f9db), uint32(0x55e74563), uint32(0x9ca03f6b), uint32(0xf9c783d3), uint32(0x176836c1),
  3869  		uint32(0x720f8a79), uint32(0xcb375de4), uint32(0xae50e15c), uint32(0x40ff544e), uint32(0x2598e8f6),
  3870  		uint32(0x73888bae), uint32(0x16ef3716), uint32(0xf8408204), uint32(0x9d273ebc), uint32(0x241fe921),
  3871  		uint32(0x41785599), uint32(0xafd7e08b), uint32(0xcab05c33), uint32(0x3bb659ed), uint32(0x5ed1e555),
  3872  		uint32(0xb07e5047), uint32(0xd519ecff), uint32(0x6c213b62), uint32(0x094687da), uint32(0xe7e932c8),
  3873  		uint32(0x828e8e70), uint32(0xd49eed28), uint32(0xb1f95190), uint32(0x5f56e482), uint32(0x3a31583a),
  3874  		uint32(0x83098fa7), uint32(0xe66e331f), uint32(0x08c1860d), uint32(0x6da63ab5), uint32(0xa4e140bd),
  3875  		uint32(0xc186fc05), uint32(0x2f294917), uint32(0x4a4ef5af), uint32(0xf3762232), uint32(0x96119e8a),
  3876  		uint32(0x78be2b98), uint32(0x1dd99720), uint32(0x4bc9f478), uint32(0x2eae48c0), uint32(0xc001fdd2),
  3877  		uint32(0xa566416a), uint32(0x1c5e96f7), uint32(0x79392a4f), uint32(0x97969f5d), uint32(0xf2f123e5),
  3878  		uint32(0x05196b4d), uint32(0x607ed7f5), uint32(0x8ed162e7), uint32(0xebb6de5f), uint32(0x528e09c2),
  3879  		uint32(0x37e9b57a), uint32(0xd9460068), uint32(0xbc21bcd0), uint32(0xea31df88), uint32(0x8f566330),
  3880  		uint32(0x61f9d622), uint32(0x049e6a9a), uint32(0xbda6bd07), uint32(0xd8c101bf), uint32(0x366eb4ad),
  3881  		uint32(0x53090815), uint32(0x9a4e721d), uint32(0xff29cea5), uint32(0x11867bb7), uint32(0x74e1c70f),
  3882  		uint32(0xcdd91092), uint32(0xa8beac2a), uint32(0x46111938), uint32(0x2376a580), uint32(0x7566c6d8),
  3883  		uint32(0x10017a60), uint32(0xfeaecf72), uint32(0x9bc973ca), uint32(0x22f1a457), uint32(0x479618ef),
  3884  		uint32(0xa939adfd), uint32(0xcc5e1145), uint32(0x06ee4d76), uint32(0x6389f1ce), uint32(0x8d2644dc),
  3885  		uint32(0xe841f864), uint32(0x51792ff9), uint32(0x341e9341), uint32(0xdab12653), uint32(0xbfd69aeb),
  3886  		uint32(0xe9c6f9b3), uint32(0x8ca1450b), uint32(0x620ef019), uint32(0x07694ca1), uint32(0xbe519b3c),
  3887  		uint32(0xdb362784), uint32(0x35999296), uint32(0x50fe2e2e), uint32(0x99b95426), uint32(0xfcdee89e),
  3888  		uint32(0x12715d8c), uint32(0x7716e134), uint32(0xce2e36a9), uint32(0xab498a11), uint32(0x45e63f03),
  3889  		uint32(0x208183bb), uint32(0x7691e0e3), uint32(0x13f65c5b), uint32(0xfd59e949), uint32(0x983e55f1),
  3890  		uint32(0x2106826c), uint32(0x44613ed4), uint32(0xaace8bc6), uint32(0xcfa9377e), uint32(0x38417fd6),
  3891  		uint32(0x5d26c36e), uint32(0xb389767c), uint32(0xd6eecac4), uint32(0x6fd61d59), uint32(0x0ab1a1e1),
  3892  		uint32(0xe41e14f3), uint32(0x8179a84b), uint32(0xd769cb13), uint32(0xb20e77ab), uint32(0x5ca1c2b9),
  3893  		uint32(0x39c67e01), uint32(0x80fea99c), uint32(0xe5991524), uint32(0x0b36a036), uint32(0x6e511c8e),
  3894  		uint32(0xa7166686), uint32(0xc271da3e), uint32(0x2cde6f2c), uint32(0x49b9d394), uint32(0xf0810409),
  3895  		uint32(0x95e6b8b1), uint32(0x7b490da3), uint32(0x1e2eb11b), uint32(0x483ed243), uint32(0x2d596efb),
  3896  		uint32(0xc3f6dbe9), uint32(0xa6916751), uint32(0x1fa9b0cc), uint32(0x7ace0c74), uint32(0x9461b966),
  3897  		uint32(0xf10605de),
  3898  	},
  3899  } /* crc32.h:5:25 */
  3900  
  3901  // =========================================================================
  3902  // This function can be used by asm versions of crc32()
  3903  func Xget_crc_table(tls *libc.TLS) uintptr { /* crc32.c:188:19: */
  3904  	return uintptr(uintptr(unsafe.Pointer(&crc_table)))
  3905  }
  3906  
  3907  // =========================================================================
  3908  
  3909  // =========================================================================
  3910  func Xcrc32_z(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:202:23: */
  3911  	bp := tls.Alloc(4)
  3912  	defer tls.Free(4)
  3913  
  3914  	if buf == uintptr(Z_NULL) {
  3915  		return 0
  3916  	}
  3917  
  3918  	if uint64(unsafe.Sizeof(uintptr(0))) == uint64(unsafe.Sizeof(Ptrdiff_t(0))) {
  3919  		// var endian Z_crc_t at bp, 4
  3920  
  3921  		*(*Z_crc_t)(unsafe.Pointer(bp /* endian */)) = Z_crc_t(1)
  3922  		if *(*uint8)(unsafe.Pointer(bp /* &endian */)) != 0 {
  3923  			return crc32_little(tls, crc, buf, len)
  3924  		} else {
  3925  			return crc32_big(tls, crc, buf, len)
  3926  		}
  3927  	}
  3928  	crc = (crc ^ 0xffffffff)
  3929  	for len >= uint64(8) {
  3930  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3931  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3932  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3933  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3934  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3935  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3936  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3937  		crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3938  		len = len - (uint64(8))
  3939  	}
  3940  	if len != 0 {
  3941  		for ok := true; ok; ok = libc.PreDecUint64(&len, 1) != 0 {
  3942  			crc = (uint64(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  3943  		}
  3944  	}
  3945  	return (crc ^ 0xffffffff)
  3946  }
  3947  
  3948  // =========================================================================
  3949  func Xcrc32(tls *libc.TLS, crc uint64, buf uintptr, len UInt) uint64 { /* crc32.c:237:23: */
  3950  	return Xcrc32_z(tls, crc, buf, uint64(len))
  3951  }
  3952  
  3953  //
  3954  //    This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
  3955  //    integer pointer type. This violates the strict aliasing rule, where a
  3956  //    compiler can assume, for optimization purposes, that two pointers to
  3957  //    fundamentally different types won't ever point to the same memory. This can
  3958  //    manifest as a problem only if one of the pointers is written to. This code
  3959  //    only reads from those pointers. So long as this code remains isolated in
  3960  //    this compilation unit, there won't be a problem. For this reason, this code
  3961  //    should not be copied and pasted into a compilation unit in which other code
  3962  //    writes to the buffer that is passed to these routines.
  3963  //
  3964  
  3965  // =========================================================================
  3966  
  3967  // =========================================================================
  3968  func crc32_little(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:266:21: */
  3969  	var c Z_crc_t
  3970  	var buf4 uintptr
  3971  
  3972  	c = Z_crc_t(crc)
  3973  	c = ^c
  3974  	for (len != 0) && ((Ptrdiff_t(buf) & int64(3)) != 0) {
  3975  		c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((c^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&Z_crc_t(0xff)))*4)) ^ (c >> 8))
  3976  		len--
  3977  	}
  3978  
  3979  	buf4 = buf
  3980  	for len >= uint64(32) {
  3981  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3982  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3983  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3984  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3985  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3986  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3987  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3988  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3989  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3990  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3991  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3992  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3993  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3994  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3995  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  3996  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  3997  		len = len - (uint64(32))
  3998  	}
  3999  	for len >= uint64(4) {
  4000  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4001  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  4002  		len = len - (uint64(4))
  4003  	}
  4004  	buf = buf4
  4005  
  4006  	if len != 0 {
  4007  		for ok := true; ok; ok = libc.PreDecUint64(&len, 1) != 0 {
  4008  			c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((c^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&Z_crc_t(0xff)))*4)) ^ (c >> 8))
  4009  		}
  4010  	}
  4011  	c = ^c
  4012  	return uint64(c)
  4013  }
  4014  
  4015  // =========================================================================
  4016  
  4017  // =========================================================================
  4018  func crc32_big(tls *libc.TLS, crc uint64, buf uintptr, len Z_size_t) uint64 { /* crc32.c:306:21: */
  4019  	var c Z_crc_t
  4020  	var buf4 uintptr
  4021  
  4022  	c = ((((((Z_crc_t(crc)) >> 24) & Z_crc_t(0xff)) + (((Z_crc_t(crc)) >> 8) & Z_crc_t(0xff00))) + (((Z_crc_t(crc)) & Z_crc_t(0xff00)) << 8)) + (((Z_crc_t(crc)) & Z_crc_t(0xff)) << 24))
  4023  	c = ^c
  4024  	for (len != 0) && ((Ptrdiff_t(buf) & int64(3)) != 0) {
  4025  		c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr(((c>>24)^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))*4)) ^ (c << 8))
  4026  		len--
  4027  	}
  4028  
  4029  	buf4 = buf
  4030  	for len >= uint64(32) {
  4031  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4032  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4033  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4034  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4035  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4036  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4037  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4038  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4039  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4040  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4041  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4042  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4043  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4044  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4045  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4046  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4047  		len = len - (uint64(32))
  4048  	}
  4049  	for len >= uint64(4) {
  4050  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  4051  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  4052  		len = len - (uint64(4))
  4053  	}
  4054  	buf = buf4
  4055  
  4056  	if len != 0 {
  4057  		for ok := true; ok; ok = libc.PreDecUint64(&len, 1) != 0 {
  4058  			c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr(((c>>24)^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))*4)) ^ (c << 8))
  4059  		}
  4060  	}
  4061  	c = ^c
  4062  	return (uint64((((((c) >> 24) & Z_crc_t(0xff)) + (((c) >> 8) & Z_crc_t(0xff00))) + (((c) & Z_crc_t(0xff00)) << 8)) + (((c) & Z_crc_t(0xff)) << 24)))
  4063  }
  4064  
  4065  // =========================================================================
  4066  func gf2_matrix_times(tls *libc.TLS, mat uintptr, vec uint64) uint64 { /* crc32.c:344:21: */
  4067  	var sum uint64
  4068  
  4069  	sum = uint64(0)
  4070  	for vec != 0 {
  4071  		if (vec & uint64(1)) != 0 {
  4072  			sum = sum ^ (*(*uint64)(unsafe.Pointer(mat)))
  4073  		}
  4074  		vec >>= 1
  4075  		mat += 8
  4076  	}
  4077  	return sum
  4078  }
  4079  
  4080  // =========================================================================
  4081  func gf2_matrix_square(tls *libc.TLS, square uintptr, mat uintptr) { /* crc32.c:361:12: */
  4082  	var n int32
  4083  
  4084  	for n = 0; n < GF2_DIM; n++ {
  4085  		*(*uint64)(unsafe.Pointer(square + uintptr(n)*8)) = gf2_matrix_times(tls, mat, *(*uint64)(unsafe.Pointer(mat + uintptr(n)*8)))
  4086  	}
  4087  }
  4088  
  4089  // =========================================================================
  4090  func crc32_combine_(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:372:13: */
  4091  	bp := tls.Alloc(512)
  4092  	defer tls.Free(512)
  4093  
  4094  	var n int32
  4095  	var row uint64
  4096  	// var even [32]uint64 at bp+256, 256
  4097  	// even-power-of-two zeros operator
  4098  	// var odd [32]uint64 at bp, 256
  4099  	// odd-power-of-two zeros operator
  4100  
  4101  	// degenerate case (also disallow negative lengths)
  4102  	if len2 <= int64(0) {
  4103  		return crc1
  4104  	}
  4105  
  4106  	// put operator for one zero bit in odd
  4107  	*(*uint64)(unsafe.Pointer(bp /* &odd[0] */)) = 0xedb88320 // CRC-32 polynomial
  4108  	row = uint64(1)
  4109  	for n = 1; n < GF2_DIM; n++ {
  4110  		*(*uint64)(unsafe.Pointer(bp /* &odd[0] */ + uintptr(n)*8)) = row
  4111  		row <<= 1
  4112  	}
  4113  
  4114  	// put operator for two zero bits in even
  4115  	gf2_matrix_square(tls, bp+256 /* &even[0] */, bp /* &odd[0] */)
  4116  
  4117  	// put operator for four zero bits in odd
  4118  	gf2_matrix_square(tls, bp /* &odd[0] */, bp+256 /* &even[0] */)
  4119  
  4120  	// apply len2 zeros to crc1 (first square will put the operator for one
  4121  	//        zero byte, eight zero bits, in even)
  4122  	for ok := true; ok; ok = (len2 != int64(0)) {
  4123  		// apply zeros operator for this bit of len2
  4124  		gf2_matrix_square(tls, bp+256 /* &even[0] */, bp /* &odd[0] */)
  4125  		if (len2 & int64(1)) != 0 {
  4126  			crc1 = gf2_matrix_times(tls, bp+256 /* &even[0] */, crc1)
  4127  		}
  4128  		len2 >>= 1
  4129  
  4130  		// if no more bits set, then done
  4131  		if len2 == int64(0) {
  4132  			break
  4133  		}
  4134  
  4135  		// another iteration of the loop with odd and even swapped
  4136  		gf2_matrix_square(tls, bp /* &odd[0] */, bp+256 /* &even[0] */)
  4137  		if (len2 & int64(1)) != 0 {
  4138  			crc1 = gf2_matrix_times(tls, bp /* &odd[0] */, crc1)
  4139  		}
  4140  		len2 >>= 1
  4141  
  4142  		// if no more bits set, then done
  4143  	}
  4144  
  4145  	// return combined crc
  4146  	crc1 = crc1 ^ (crc2)
  4147  	return crc1
  4148  }
  4149  
  4150  // =========================================================================
  4151  func Xcrc32_combine(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:428:15: */
  4152  	return crc32_combine_(tls, crc1, crc2, len2)
  4153  }
  4154  
  4155  func Xcrc32_combine64(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:436:15: */
  4156  	return crc32_combine_(tls, crc1, crc2, len2)
  4157  }
  4158  
  4159  // Reverse the bytes in a 32-bit value
  4160  
  4161  // define NO_GZIP when compiling if you want to disable gzip header and
  4162  //    trailer creation by deflate().  NO_GZIP would be used to avoid linking in
  4163  //    the crc code when it is not needed.  For shared libraries, gzip encoding
  4164  //    should be left enabled.
  4165  
  4166  // ===========================================================================
  4167  // Internal compression state.
  4168  
  4169  // number of length codes, not counting the special END_BLOCK code
  4170  
  4171  // number of literal bytes 0..255
  4172  
  4173  // number of Literal or Length codes, including the END_BLOCK code
  4174  
  4175  // number of distance codes
  4176  
  4177  // number of codes used to transfer the bit lengths
  4178  
  4179  // maximum heap size
  4180  
  4181  // All codes must not exceed MAX_BITS bits
  4182  
  4183  // size of bit buffer in bi_buf
  4184  
  4185  // Stream status
  4186  
  4187  // Data structure describing a single value and its code string.
  4188  type Ct_data_s = struct {
  4189  	Ffc struct{ Ffreq Ush }
  4190  	Fdl struct{ Fdad Ush }
  4191  } /* zlib.h:84:1 */
  4192  
  4193  // Reverse the bytes in a 32-bit value
  4194  
  4195  // define NO_GZIP when compiling if you want to disable gzip header and
  4196  //    trailer creation by deflate().  NO_GZIP would be used to avoid linking in
  4197  //    the crc code when it is not needed.  For shared libraries, gzip encoding
  4198  //    should be left enabled.
  4199  
  4200  // ===========================================================================
  4201  // Internal compression state.
  4202  
  4203  // number of length codes, not counting the special END_BLOCK code
  4204  
  4205  // number of literal bytes 0..255
  4206  
  4207  // number of Literal or Length codes, including the END_BLOCK code
  4208  
  4209  // number of distance codes
  4210  
  4211  // number of codes used to transfer the bit lengths
  4212  
  4213  // maximum heap size
  4214  
  4215  // All codes must not exceed MAX_BITS bits
  4216  
  4217  // size of bit buffer in bi_buf
  4218  
  4219  // Stream status
  4220  
  4221  // Data structure describing a single value and its code string.
  4222  type Ct_data = Ct_data_s /* deflate.h:77:7 */
  4223  
  4224  type Static_tree_desc_s = struct {
  4225  	Fstatic_tree uintptr
  4226  	Fextra_bits  uintptr
  4227  	Fextra_base  int32
  4228  	Felems       int32
  4229  	Fmax_length  int32
  4230  	F__ccgo_pad1 [4]byte
  4231  } /* deflate.h:84:9 */
  4232  
  4233  type Tree_desc_s = struct {
  4234  	Fdyn_tree    uintptr
  4235  	Fmax_code    int32
  4236  	F__ccgo_pad1 [4]byte
  4237  	Fstat_desc   uintptr
  4238  } /* zlib.h:84:1 */
  4239  
  4240  type Tree_desc = Tree_desc_s /* deflate.h:90:7 */
  4241  
  4242  type Pos = Ush     /* deflate.h:92:13 */
  4243  type Posf = Pos    /* deflate.h:93:17 */
  4244  type IPos = uint32 /* deflate.h:94:18 */
  4245  
  4246  // A Pos is an index in the character window. We use short instead of int to
  4247  // save space in the various tables. IPos is used only for parameter passing.
  4248  
  4249  type Deflate_state = Internal_state /* deflate.h:276:7 */
  4250  
  4251  var Xdeflate_copyright = *(*[69]int8)(unsafe.Pointer(ts + 7 /* " deflate 1.2.11 ..." */)) /* deflate.c:54:12 */
  4252  //
  4253  //   If you use the zlib library in a product, an acknowledgment is welcome
  4254  //   in the documentation of your product. If for some reason you cannot
  4255  //   include such an acknowledgment, I would appreciate that you keep this
  4256  //   copyright string in the executable of your product.
  4257  //
  4258  
  4259  // ===========================================================================
  4260  //  Function prototypes.
  4261  type Block_state = uint32 /* deflate.c:71:3 */
  4262  
  4263  type Compress_func = uintptr /* deflate.c:73:21 */
  4264  
  4265  // ===========================================================================
  4266  // Local data
  4267  
  4268  // Tail of hash chains
  4269  
  4270  // Matches of length 3 are discarded if their distance exceeds TOO_FAR
  4271  
  4272  // Values for max_lazy_match, good_match and max_chain_length, depending on
  4273  // the desired pack level (0..9). The values given below have been tuned to
  4274  // exclude worst case performance for pathological files. Better values may be
  4275  // found for specific files.
  4276  type Config_s = struct {
  4277  	Fgood_length Ush
  4278  	Fmax_lazy    Ush
  4279  	Fnice_length Ush
  4280  	Fmax_chain   Ush
  4281  	Ffunc        Compress_func
  4282  } /* deflate.c:120:9 */
  4283  
  4284  // ===========================================================================
  4285  // Local data
  4286  
  4287  // Tail of hash chains
  4288  
  4289  // Matches of length 3 are discarded if their distance exceeds TOO_FAR
  4290  
  4291  // Values for max_lazy_match, good_match and max_chain_length, depending on
  4292  // the desired pack level (0..9). The values given below have been tuned to
  4293  // exclude worst case performance for pathological files. Better values may be
  4294  // found for specific files.
  4295  type Config = Config_s /* deflate.c:126:3 */
  4296  
  4297  var configuration_table = [10]Config{
  4298  	//      good lazy nice chain
  4299  	/* 0 */ {Ffunc: 0}, // store only
  4300  	/* 1 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(8), Fmax_chain: Ush(4), Ffunc: 0}, // max speed, no lazy matches
  4301  	/* 2 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(5), Fnice_length: Ush(16), Fmax_chain: Ush(8), Ffunc: 0},
  4302  	/* 3 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(6), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0},
  4303  
  4304  	/* 4 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(16), Fmax_chain: Ush(16), Ffunc: 0}, // lazy matches
  4305  	/* 5 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0},
  4306  	/* 6 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(128), Fmax_chain: Ush(128), Ffunc: 0},
  4307  	/* 7 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(32), Fnice_length: Ush(128), Fmax_chain: Ush(256), Ffunc: 0},
  4308  	/* 8 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(128), Fnice_length: Ush(258), Fmax_chain: Ush(1024), Ffunc: 0},
  4309  	/* 9 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(258), Fnice_length: Ush(258), Fmax_chain: Ush(4096), Ffunc: 0}} /* deflate.c:134:20 */
  4310  
  4311  // max compression
  4312  
  4313  // Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
  4314  // For deflate_fast() (levels <= 3) good is ignored and lazy has a different
  4315  // meaning.
  4316  
  4317  // rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH
  4318  
  4319  // ===========================================================================
  4320  // Update a hash value with the given input byte
  4321  // IN  assertion: all calls to UPDATE_HASH are made with consecutive input
  4322  //    characters, so that a running hash key can be computed from the previous
  4323  //    key instead of complete recalculation each time.
  4324  
  4325  // ===========================================================================
  4326  // Insert string str in the dictionary and set match_head to the previous head
  4327  // of the hash chain (the most recent string with same hash key). Return
  4328  // the previous length of the hash chain.
  4329  // If this file is compiled with -DFASTEST, the compression level is forced
  4330  // to 1, and no hash chains are maintained.
  4331  // IN  assertion: all calls to INSERT_STRING are made with consecutive input
  4332  //    characters and the first MIN_MATCH bytes of str are valid (except for
  4333  //    the last MIN_MATCH-1 bytes of the input file).
  4334  
  4335  // ===========================================================================
  4336  // Initialize the hash table (avoiding 64K overflow for 16 bit systems).
  4337  // prev[] will be initialized on the fly.
  4338  
  4339  // ===========================================================================
  4340  // Slide the hash table when sliding the window down (could be avoided with 32
  4341  // bit values at the expense of memory usage). We slide even when level == 0 to
  4342  // keep the hash table consistent if we switch back to level > 0 later.
  4343  func slide_hash(tls *libc.TLS, s uintptr) { /* deflate.c:201:12: */
  4344  	var n uint32
  4345  	var m uint32
  4346  	var p uintptr
  4347  	var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  4348  
  4349  	n = (*Deflate_state)(unsafe.Pointer(s)).Fhash_size
  4350  	p = ((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(n)*2)
  4351  	for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  4352  		m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2))))
  4353  		*(*Posf)(unsafe.Pointer(p)) = func() uint16 {
  4354  			if m >= wsize {
  4355  				return (uint16(m - wsize))
  4356  			}
  4357  			return uint16(NIL)
  4358  		}()
  4359  	}
  4360  	n = wsize
  4361  	p = ((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr(n)*2)
  4362  	for ok1 := true; ok1; ok1 = libc.PreDecUint32(&n, 1) != 0 {
  4363  		m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2))))
  4364  		*(*Posf)(unsafe.Pointer(p)) = func() uint16 {
  4365  			if m >= wsize {
  4366  				return (uint16(m - wsize))
  4367  			}
  4368  			return uint16(NIL)
  4369  		}()
  4370  		// If n is not on any hash chain, prev[n] is garbage but
  4371  		// its value will never be used.
  4372  	}
  4373  }
  4374  
  4375  // =========================================================================
  4376  func XdeflateInit_(tls *libc.TLS, strm Z_streamp, level int32, version uintptr, stream_size int32) int32 { /* deflate.c:228:13: */
  4377  	return XdeflateInit2_(tls, strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
  4378  		Z_DEFAULT_STRATEGY, version, stream_size)
  4379  	// To do: ignore strm->next_in if we use it as window
  4380  }
  4381  
  4382  // =========================================================================
  4383  func XdeflateInit2_(tls *libc.TLS, strm Z_streamp, level int32, method int32, windowBits int32, memLevel int32, strategy int32, version uintptr, stream_size int32) int32 { /* deflate.c:240:13: */
  4384  	var s uintptr
  4385  	var wrap int32 = 1
  4386  	var overlay uintptr
  4387  	// We overlay pending_buf and d_buf+l_buf. This works since the average
  4388  	// output size for (length,distance) codes is <= 24 bits.
  4389  
  4390  	if ((version == uintptr(Z_NULL)) || (int32(*(*int8)(unsafe.Pointer(version))) != int32(my_version[0]))) || (uint64(stream_size) != uint64(unsafe.Sizeof(Z_stream{}))) {
  4391  		return -6
  4392  	}
  4393  	if strm == uintptr(Z_NULL) {
  4394  		return -2
  4395  	}
  4396  
  4397  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL)
  4398  	if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) {
  4399  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct {
  4400  			f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf
  4401  		}{Xzcalloc}))
  4402  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0)
  4403  	}
  4404  	if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) {
  4405  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct {
  4406  			f func(*libc.TLS, Voidpf, Voidpf)
  4407  		}{Xzcfree}))
  4408  	}
  4409  
  4410  	if level == (-1) {
  4411  		level = 6
  4412  	}
  4413  
  4414  	if windowBits < 0 { // suppress zlib wrapper
  4415  		wrap = 0
  4416  		windowBits = -windowBits
  4417  	} else if windowBits > 15 {
  4418  		wrap = 2 // write gzip wrapper instead
  4419  		windowBits = windowBits - (16)
  4420  	}
  4421  	if (((((((((memLevel < 1) || (memLevel > MAX_MEM_LEVEL)) || (method != Z_DEFLATED)) || (windowBits < 8)) || (windowBits > 15)) || (level < 0)) || (level > 9)) || (strategy < 0)) || (strategy > Z_FIXED)) || ((windowBits == 8) && (wrap != 1)) {
  4422  		return -2
  4423  	}
  4424  	if windowBits == 8 {
  4425  		windowBits = 9
  4426  	} // until 256-byte window bug fixed
  4427  	s = (*struct {
  4428  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  4429  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Deflate_state{})))
  4430  	if s == uintptr(Z_NULL) {
  4431  		return -4
  4432  	}
  4433  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = s
  4434  	(*Deflate_state)(unsafe.Pointer(s)).Fstrm = strm
  4435  	(*Deflate_state)(unsafe.Pointer(s)).Fstatus = INIT_STATE // to pass state test in deflateReset()
  4436  
  4437  	(*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap
  4438  	(*Deflate_state)(unsafe.Pointer(s)).Fgzhead = Gz_headerp(Z_NULL)
  4439  	(*Deflate_state)(unsafe.Pointer(s)).Fw_bits = UInt(windowBits)
  4440  	(*Deflate_state)(unsafe.Pointer(s)).Fw_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fw_bits))
  4441  	(*Deflate_state)(unsafe.Pointer(s)).Fw_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - UInt(1))
  4442  
  4443  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_bits = (UInt(memLevel) + UInt(7))
  4444  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits))
  4445  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))
  4446  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_shift = ((((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits + UInt(MIN_MATCH)) - UInt(1)) / UInt(MIN_MATCH))
  4447  
  4448  	(*Deflate_state)(unsafe.Pointer(s)).Fwindow = (*struct {
  4449  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  4450  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fw_size, (uint32(uint64(2) * uint64(unsafe.Sizeof(Byte(0))))))
  4451  	(*Deflate_state)(unsafe.Pointer(s)).Fprev = (*struct {
  4452  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  4453  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fw_size, uint32(unsafe.Sizeof(Pos(0))))
  4454  	(*Deflate_state)(unsafe.Pointer(s)).Fhead = (*struct {
  4455  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  4456  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fhash_size, uint32(unsafe.Sizeof(Pos(0))))
  4457  
  4458  	(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = uint64(0) // nothing written to s->window yet
  4459  
  4460  	(*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize = (UInt(int32(1) << (memLevel + 6))) // 16K elements by default
  4461  
  4462  	overlay = (*struct {
  4463  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  4464  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize, (uint32(uint64(unsafe.Sizeof(Ush(0))) + uint64(2))))
  4465  	(*Deflate_state)(unsafe.Pointer(s)).Fpending_buf = overlay
  4466  	(*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize) * (uint64(unsafe.Sizeof(Ush(0))) + uint64(2)))
  4467  
  4468  	if ((((*Deflate_state)(unsafe.Pointer(s)).Fwindow == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(s)).Fprev == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(s)).Fhead == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf == uintptr(Z_NULL)) {
  4469  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE
  4470  		(*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-4))]
  4471  		XdeflateEnd(tls, strm)
  4472  		return -4
  4473  	}
  4474  	(*Deflate_state)(unsafe.Pointer(s)).Fd_buf = (overlay + uintptr((uint64((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize)/uint64(unsafe.Sizeof(Ush(0)))))*2)
  4475  	(*Deflate_state)(unsafe.Pointer(s)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((uint64(1) + uint64(unsafe.Sizeof(Ush(0)))) * uint64((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize))))
  4476  
  4477  	(*Deflate_state)(unsafe.Pointer(s)).Flevel = level
  4478  	(*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy
  4479  	(*Deflate_state)(unsafe.Pointer(s)).Fmethod = Byte(method)
  4480  
  4481  	return XdeflateReset(tls, strm)
  4482  }
  4483  
  4484  var my_version = *(*[7]int8)(unsafe.Pointer(ts /* "1.2.11" */)) /* deflate.c:253:23 */
  4485  
  4486  // =========================================================================
  4487  // Check for a valid deflate stream state. Return 0 if ok, 1 if not.
  4488  func deflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:353:11: */
  4489  	var s uintptr
  4490  	if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) {
  4491  		return 1
  4492  	}
  4493  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4494  	if ((s == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(s)).Fstrm != strm)) || (((((((((*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != GZIP_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != EXTRA_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != NAME_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != COMMENT_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != HCRC_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != BUSY_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != FINISH_STATE)) {
  4495  		return 1
  4496  	}
  4497  	return 0
  4498  }
  4499  
  4500  // =========================================================================
  4501  func XdeflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* deflate.c:376:13: */
  4502  	var s uintptr
  4503  	var str UInt
  4504  	var n UInt
  4505  	var wrap int32
  4506  	var avail uint32
  4507  	var next uintptr
  4508  
  4509  	if (deflateStateCheck(tls, strm) != 0) || (dictionary == uintptr(Z_NULL)) {
  4510  		return -2
  4511  	}
  4512  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4513  	wrap = (*Deflate_state)(unsafe.Pointer(s)).Fwrap
  4514  	if ((wrap == 2) || ((wrap == 1) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE))) || ((*Deflate_state)(unsafe.Pointer(s)).Flookahead != 0) {
  4515  		return -2
  4516  	}
  4517  
  4518  	// when using zlib wrappers, compute Adler-32 for provided dictionary
  4519  	if wrap == 1 {
  4520  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, dictionary, dictLength)
  4521  	}
  4522  	(*Deflate_state)(unsafe.Pointer(s)).Fwrap = 0 // avoid computing Adler-32 in read_buf
  4523  
  4524  	// if dictionary would fill window, just replace the history
  4525  	if dictLength >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size {
  4526  		if wrap == 0 { // already empty otherwise
  4527  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  4528  			libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0)))))
  4529  
  4530  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0)
  4531  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0
  4532  			(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  4533  		}
  4534  		dictionary += (uintptr(dictLength - (*Deflate_state)(unsafe.Pointer(s)).Fw_size)) // use the tail
  4535  		dictLength = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  4536  	}
  4537  
  4538  	// insert dictionary into window and hash
  4539  	avail = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  4540  	next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
  4541  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = dictLength
  4542  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = dictionary
  4543  	fill_window(tls, s)
  4544  	for (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) {
  4545  		str = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart
  4546  		n = ((*Deflate_state)(unsafe.Pointer(s)).Flookahead - (UInt(MIN_MATCH - 1)))
  4547  		for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  4548  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((str + UInt(MIN_MATCH)) - UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  4549  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr((str&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2)) = *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))
  4550  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str)
  4551  			str++
  4552  		}
  4553  		(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = str
  4554  		(*Deflate_state)(unsafe.Pointer(s)).Flookahead = (UInt(MIN_MATCH - 1))
  4555  		fill_window(tls, s)
  4556  	}
  4557  	*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Flookahead)
  4558  	(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  4559  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = (*Deflate_state)(unsafe.Pointer(s)).Flookahead
  4560  	(*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0)
  4561  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+184 /* &.prev_length */, (UInt(MIN_MATCH - 1)))
  4562  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  4563  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
  4564  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = avail
  4565  	(*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap
  4566  	return Z_OK
  4567  }
  4568  
  4569  // =========================================================================
  4570  func XdeflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* deflate.c:445:13: */
  4571  	var s uintptr
  4572  	var len UInt
  4573  
  4574  	if deflateStateCheck(tls, strm) != 0 {
  4575  		return -2
  4576  	}
  4577  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4578  	len = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead)
  4579  	if len > (*Deflate_state)(unsafe.Pointer(s)).Fw_size {
  4580  		len = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  4581  	}
  4582  	if (dictionary != uintptr(Z_NULL)) && (len != 0) {
  4583  		libc.Xmemcpy(tls, dictionary, ((((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flookahead)) - uintptr(len)), uint64(len))
  4584  	}
  4585  	if dictLength != uintptr(Z_NULL) {
  4586  		*(*UInt)(unsafe.Pointer(dictLength)) = len
  4587  	}
  4588  	return Z_OK
  4589  }
  4590  
  4591  // =========================================================================
  4592  func XdeflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:467:13: */
  4593  	var s uintptr
  4594  
  4595  	if deflateStateCheck(tls, strm) != 0 {
  4596  		return -2
  4597  	}
  4598  
  4599  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint64(strm+40 /* &.total_out */, uint64(0))
  4600  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // use zfree if we ever allocate msg dynamically
  4601  	(*Z_stream)(unsafe.Pointer(strm)).Fdata_type = Z_UNKNOWN
  4602  
  4603  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4604  	(*Deflate_state)(unsafe.Pointer(s)).Fpending = uint64(0)
  4605  	(*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf
  4606  
  4607  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap < 0 {
  4608  		(*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap // was made negative by deflate(..., Z_FINISH);
  4609  	}
  4610  	(*Deflate_state)(unsafe.Pointer(s)).Fstatus = func() int32 {
  4611  		if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 {
  4612  			return GZIP_STATE
  4613  		}
  4614  		return func() int32 {
  4615  			if (*Deflate_state)(unsafe.Pointer(s)).Fwrap != 0 {
  4616  				return INIT_STATE
  4617  			}
  4618  			return BUSY_STATE
  4619  		}()
  4620  	}()
  4621  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = func() uint64 {
  4622  		if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 {
  4623  			return Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0))
  4624  		}
  4625  		return Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0))
  4626  	}()
  4627  	(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = Z_NO_FLUSH
  4628  
  4629  	X_tr_init(tls, s)
  4630  
  4631  	return Z_OK
  4632  }
  4633  
  4634  // =========================================================================
  4635  func XdeflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:505:13: */
  4636  	var ret int32
  4637  
  4638  	ret = XdeflateResetKeep(tls, strm)
  4639  	if ret == Z_OK {
  4640  		lm_init(tls, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
  4641  	}
  4642  	return ret
  4643  }
  4644  
  4645  // =========================================================================
  4646  func XdeflateSetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* deflate.c:517:13: */
  4647  	if (deflateStateCheck(tls, strm) != 0) || ((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap != 2) {
  4648  		return -2
  4649  	}
  4650  	(*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fgzhead = head
  4651  	return Z_OK
  4652  }
  4653  
  4654  // =========================================================================
  4655  func XdeflatePending(tls *libc.TLS, strm Z_streamp, pending uintptr, bits uintptr) int32 { /* deflate.c:528:13: */
  4656  	if deflateStateCheck(tls, strm) != 0 {
  4657  		return -2
  4658  	}
  4659  	if pending != uintptr(Z_NULL) {
  4660  		*(*uint32)(unsafe.Pointer(pending)) = uint32((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending)
  4661  	}
  4662  	if bits != uintptr(Z_NULL) {
  4663  		*(*int32)(unsafe.Pointer(bits)) = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fbi_valid
  4664  	}
  4665  	return Z_OK
  4666  }
  4667  
  4668  // =========================================================================
  4669  func XdeflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* deflate.c:542:13: */
  4670  	var s uintptr
  4671  	var put int32
  4672  
  4673  	if deflateStateCheck(tls, strm) != 0 {
  4674  		return -2
  4675  	}
  4676  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4677  	if ((*Deflate_state)(unsafe.Pointer(s)).Fd_buf) < ((*Deflate_state)(unsafe.Pointer(s)).Fpending_out + uintptr((int32((Buf_size + 7)) >> 3))) {
  4678  		return -5
  4679  	}
  4680  	for ok := true; ok; ok = bits != 0 {
  4681  		put = (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)
  4682  		if put > bits {
  4683  			put = bits
  4684  		}
  4685  		*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((value & ((int32(1) << put) - 1)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))))
  4686  		*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (put)
  4687  		X_tr_flush_bits(tls, s)
  4688  		value >>= put
  4689  		bits = bits - (put)
  4690  	}
  4691  	return Z_OK
  4692  }
  4693  
  4694  // =========================================================================
  4695  func XdeflateParams(tls *libc.TLS, strm Z_streamp, level int32, strategy int32) int32 { /* deflate.c:568:13: */
  4696  	var s uintptr
  4697  	var func1 Compress_func
  4698  
  4699  	if deflateStateCheck(tls, strm) != 0 {
  4700  		return -2
  4701  	}
  4702  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4703  
  4704  	if level == (-1) {
  4705  		level = 6
  4706  	}
  4707  	if (((level < 0) || (level > 9)) || (strategy < 0)) || (strategy > Z_FIXED) {
  4708  		return -2
  4709  	}
  4710  	func1 = configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc
  4711  
  4712  	if ((strategy != (*Deflate_state)(unsafe.Pointer(s)).Fstrategy) || (func1 != configuration_table[level].Ffunc)) && ((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water != 0) {
  4713  		// Flush the last buffer:
  4714  		var err int32 = Xdeflate(tls, strm, Z_BLOCK)
  4715  		if err == (-2) {
  4716  			return err
  4717  		}
  4718  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  4719  			return -5
  4720  		}
  4721  	}
  4722  	if (*Deflate_state)(unsafe.Pointer(s)).Flevel != level {
  4723  		if ((*Deflate_state)(unsafe.Pointer(s)).Flevel == 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fmatches != UInt(0)) {
  4724  			if (*Deflate_state)(unsafe.Pointer(s)).Fmatches == UInt(1) {
  4725  				slide_hash(tls, s)
  4726  			} else {
  4727  				*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  4728  			}
  4729  			libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0)))))
  4730  
  4731  			(*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(0)
  4732  		}
  4733  		(*Deflate_state)(unsafe.Pointer(s)).Flevel = level
  4734  		(*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[level].Fmax_lazy)
  4735  		(*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[level].Fgood_length)
  4736  		(*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[level].Fnice_length)
  4737  		(*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[level].Fmax_chain)
  4738  	}
  4739  	(*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy
  4740  	return Z_OK
  4741  }
  4742  
  4743  // =========================================================================
  4744  func XdeflateTune(tls *libc.TLS, strm Z_streamp, good_length int32, max_lazy int32, nice_length int32, max_chain int32) int32 { /* deflate.c:617:13: */
  4745  	var s uintptr
  4746  
  4747  	if deflateStateCheck(tls, strm) != 0 {
  4748  		return -2
  4749  	}
  4750  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4751  	(*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(good_length)
  4752  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(max_lazy)
  4753  	(*Deflate_state)(unsafe.Pointer(s)).Fnice_match = nice_length
  4754  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(max_chain)
  4755  	return Z_OK
  4756  }
  4757  
  4758  // =========================================================================
  4759  // For the default windowBits of 15 and memLevel of 8, this function returns
  4760  // a close to exact, as well as small, upper bound on the compressed size.
  4761  // They are coded as constants here for a reason--if the #define's are
  4762  // changed, then this function needs to be changed as well.  The return
  4763  // value for 15 and 8 only works for those exact settings.
  4764  //
  4765  // For any setting other than those defaults for windowBits and memLevel,
  4766  // the value returned is a conservative worst case for the maximum expansion
  4767  // resulting from using fixed blocks instead of stored blocks, which deflate
  4768  // can emit on compressed data for some combinations of the parameters.
  4769  //
  4770  // This function could be more sophisticated to provide closer upper bounds for
  4771  // every combination of windowBits and memLevel.  But even the conservative
  4772  // upper bound of about 14% expansion does not seem onerous for output buffer
  4773  // allocation.
  4774  func XdeflateBound(tls *libc.TLS, strm Z_streamp, sourceLen ULong) ULong { /* deflate.c:652:15: */
  4775  	var s uintptr
  4776  	var complen ULong
  4777  	var wraplen ULong
  4778  
  4779  	// conservative upper bound for compressed data
  4780  	complen = (((sourceLen + ((sourceLen + uint64(7)) >> 3)) + ((sourceLen + uint64(63)) >> 6)) + uint64(5))
  4781  
  4782  	// if can't get parameters, return conservative bound plus zlib wrapper
  4783  	if deflateStateCheck(tls, strm) != 0 {
  4784  		return (complen + uint64(6))
  4785  	}
  4786  
  4787  	// compute wrapper length
  4788  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4789  	switch (*Deflate_state)(unsafe.Pointer(s)).Fwrap {
  4790  	case 0: // raw deflate
  4791  		wraplen = uint64(0)
  4792  		break
  4793  	case 1: // zlib wrapper
  4794  		wraplen = (ULong(6 + (func() int32 {
  4795  			if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != 0 {
  4796  				return 4
  4797  			}
  4798  			return 0
  4799  		}())))
  4800  		break
  4801  	case 2: // gzip wrapper
  4802  		wraplen = uint64(18)
  4803  		if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead != uintptr(Z_NULL) { // user-supplied gzip header
  4804  			var str uintptr
  4805  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) {
  4806  				wraplen = wraplen + (ULong(UInt(2) + (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len))
  4807  			}
  4808  			str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname
  4809  			if str != uintptr(Z_NULL) {
  4810  				for ok := true; ok; ok = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 {
  4811  					wraplen++
  4812  				}
  4813  			}
  4814  			str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment
  4815  			if str != uintptr(Z_NULL) {
  4816  				for ok1 := true; ok1; ok1 = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 {
  4817  					wraplen++
  4818  				}
  4819  			}
  4820  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  4821  				wraplen = wraplen + (uint64(2))
  4822  			}
  4823  		}
  4824  		break
  4825  	default: // for compiler happiness
  4826  		wraplen = uint64(6)
  4827  	}
  4828  
  4829  	// if not default parameters, return conservative bound
  4830  	if ((*Deflate_state)(unsafe.Pointer(s)).Fw_bits != UInt(15)) || ((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits != (UInt(8 + 7))) {
  4831  		return (complen + wraplen)
  4832  	}
  4833  
  4834  	// default settings: return tight bound for that case
  4835  	return ((((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + uint64(13)) - uint64(6)) + wraplen)
  4836  }
  4837  
  4838  // =========================================================================
  4839  // Put a short in the pending buffer. The 16-bit value is put in MSB order.
  4840  // IN assertion: the stream state is correct and there is enough room in
  4841  // pending_buf.
  4842  func putShortMSB(tls *libc.TLS, s uintptr, b UInt) { /* deflate.c:716:12: */
  4843  	{
  4844  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b >> 8))
  4845  	}
  4846  
  4847  	{
  4848  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b & UInt(0xff)))
  4849  	}
  4850  
  4851  }
  4852  
  4853  // =========================================================================
  4854  // Flush as much pending output as possible. All deflate() output, except for
  4855  // some deflate_stored() output, goes through this function so some
  4856  // applications may wish to modify it to avoid allocating a large
  4857  // strm->next_out buffer and copying into it. (See also read_buf()).
  4858  func flush_pending(tls *libc.TLS, strm Z_streamp) { /* deflate.c:730:12: */
  4859  	var len uint32
  4860  	var s uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4861  
  4862  	X_tr_flush_bits(tls, s)
  4863  	len = uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending)
  4864  	if len > (*Z_stream)(unsafe.Pointer(strm)).Favail_out {
  4865  		len = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
  4866  	}
  4867  	if len == uint32(0) {
  4868  		return
  4869  	}
  4870  
  4871  	libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (*Deflate_state)(unsafe.Pointer(s)).Fpending_out, uint64(len))
  4872  	*(*uintptr)(unsafe.Pointer(strm + 24 /* &.next_out */)) += (uintptr(len))
  4873  	*(*uintptr)(unsafe.Pointer(s + 32 /* &.pending_out */)) += (uintptr(len))
  4874  	*(*ULong)(unsafe.Pointer(strm + 40 /* &.total_out */)) += (ULong(len))
  4875  	*(*UInt)(unsafe.Pointer(strm + 32 /* &.avail_out */)) -= (len)
  4876  	*(*Ulg)(unsafe.Pointer(s + 40 /* &.pending */)) -= (Ulg(len))
  4877  	if (*Deflate_state)(unsafe.Pointer(s)).Fpending == uint64(0) {
  4878  		(*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf
  4879  	}
  4880  }
  4881  
  4882  // ===========================================================================
  4883  // Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1].
  4884  
  4885  // =========================================================================
  4886  func Xdeflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* deflate.c:763:13: */
  4887  	var old_flush int32 // value of flush param for previous deflate call
  4888  	var s uintptr
  4889  
  4890  	if ((deflateStateCheck(tls, strm) != 0) || (flush > Z_BLOCK)) || (flush < 0) {
  4891  		return -2
  4892  	}
  4893  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  4894  
  4895  	if (((*Z_stream)(unsafe.Pointer(strm)).Fnext_out == uintptr(Z_NULL)) || (((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) && ((*Z_stream)(unsafe.Pointer(strm)).Fnext_in == uintptr(Z_NULL)))) || (((*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE) && (flush != Z_FINISH)) {
  4896  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-2))]; return -2 }()
  4897  	}
  4898  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  4899  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }()
  4900  	}
  4901  
  4902  	old_flush = (*Deflate_state)(unsafe.Pointer(s)).Flast_flush
  4903  	(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = flush
  4904  
  4905  	// Flush as much pending output as possible
  4906  	if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  4907  		flush_pending(tls, strm)
  4908  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  4909  			// Since avail_out is 0, deflate will be called again with
  4910  			// more output space, but possibly with both pending and
  4911  			// avail_in equal to zero. There won't be anything to do,
  4912  			// but this is not an error situation so make sure we
  4913  			// return OK instead of BUF_ERROR at next call of deflate:
  4914  			(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  4915  			return Z_OK
  4916  		}
  4917  
  4918  		// Make sure there is something to do and avoid duplicate consecutive
  4919  		// flushes. For repeated and useless calls with Z_FINISH, we keep
  4920  		// returning Z_STREAM_END instead of Z_BUF_ERROR.
  4921  	} else if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((((flush) * 2) - (func() int32 {
  4922  		if (flush) > 4 {
  4923  			return 9
  4924  		}
  4925  		return 0
  4926  	}())) <= (((old_flush) * 2) - (func() int32 {
  4927  		if (old_flush) > 4 {
  4928  			return 9
  4929  		}
  4930  		return 0
  4931  	}())))) && (flush != Z_FINISH) {
  4932  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }()
  4933  	}
  4934  
  4935  	// User must not provide more input after the first FINISH:
  4936  	if ((*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE) && ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) {
  4937  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }()
  4938  	}
  4939  
  4940  	// Write the header
  4941  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == INIT_STATE {
  4942  		// zlib header
  4943  		var header UInt = ((UInt(Z_DEFLATED) + (((*Deflate_state)(unsafe.Pointer(s)).Fw_bits - UInt(8)) << 4)) << 8)
  4944  		var level_flags UInt
  4945  
  4946  		if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) {
  4947  			level_flags = UInt(0)
  4948  		} else if (*Deflate_state)(unsafe.Pointer(s)).Flevel < 6 {
  4949  			level_flags = UInt(1)
  4950  		} else if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 6 {
  4951  			level_flags = UInt(2)
  4952  		} else {
  4953  			level_flags = UInt(3)
  4954  		}
  4955  		header = header | (level_flags << 6)
  4956  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) {
  4957  			header = header | (UInt(PRESET_DICT))
  4958  		}
  4959  		header = header + (UInt(31) - (header % UInt(31)))
  4960  
  4961  		putShortMSB(tls, s, header)
  4962  
  4963  		// Save the adler32 of the preset dictionary:
  4964  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) {
  4965  			putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16)))
  4966  			putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xffff))))
  4967  		}
  4968  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0))
  4969  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE
  4970  
  4971  		// Compression must start with an empty pending buffer
  4972  		flush_pending(tls, strm)
  4973  		if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  4974  			(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  4975  			return Z_OK
  4976  		}
  4977  	}
  4978  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == GZIP_STATE {
  4979  		// gzip header
  4980  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0))
  4981  		{
  4982  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(31)
  4983  		}
  4984  
  4985  		{
  4986  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(139)
  4987  		}
  4988  
  4989  		{
  4990  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(8)
  4991  		}
  4992  
  4993  		if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead == uintptr(Z_NULL) {
  4994  			{
  4995  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  4996  			}
  4997  
  4998  			{
  4999  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  5000  			}
  5001  
  5002  			{
  5003  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  5004  			}
  5005  
  5006  			{
  5007  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  5008  			}
  5009  
  5010  			{
  5011  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  5012  			}
  5013  
  5014  			{
  5015  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 {
  5016  					if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 {
  5017  						return uint8(2)
  5018  					}
  5019  					return func() uint8 {
  5020  						if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) {
  5021  							return uint8(4)
  5022  						}
  5023  						return uint8(0)
  5024  					}()
  5025  				}()
  5026  			}
  5027  
  5028  			{
  5029  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(OS_CODE)
  5030  			}
  5031  
  5032  			(*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE
  5033  
  5034  			// Compression must start with an empty pending buffer
  5035  			flush_pending(tls, strm)
  5036  			if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  5037  				(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  5038  				return Z_OK
  5039  			}
  5040  		} else {
  5041  			{
  5042  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((((func() int32 {
  5043  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftext != 0 {
  5044  						return 1
  5045  					}
  5046  					return 0
  5047  				}()) + (func() int32 {
  5048  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  5049  						return 2
  5050  					}
  5051  					return 0
  5052  				}())) + (func() int32 {
  5053  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra == uintptr(Z_NULL) {
  5054  						return 0
  5055  					}
  5056  					return 4
  5057  				}())) + (func() int32 {
  5058  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname == uintptr(Z_NULL) {
  5059  						return 0
  5060  					}
  5061  					return 8
  5062  				}())) + (func() int32 {
  5063  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment == uintptr(Z_NULL) {
  5064  						return 0
  5065  					}
  5066  					return 16
  5067  				}())))
  5068  			}
  5069  
  5070  			{
  5071  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime & uint64(0xff)))
  5072  			}
  5073  
  5074  			{
  5075  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 8) & uint64(0xff)))
  5076  			}
  5077  
  5078  			{
  5079  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 16) & uint64(0xff)))
  5080  			}
  5081  
  5082  			{
  5083  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 24) & uint64(0xff)))
  5084  			}
  5085  
  5086  			{
  5087  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 {
  5088  					if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 {
  5089  						return uint8(2)
  5090  					}
  5091  					return func() uint8 {
  5092  						if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) {
  5093  							return uint8(4)
  5094  						}
  5095  						return uint8(0)
  5096  					}()
  5097  				}()
  5098  			}
  5099  
  5100  			{
  5101  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fos & 0xff))
  5102  			}
  5103  
  5104  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) {
  5105  				{
  5106  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xff)))
  5107  				}
  5108  
  5109  				{
  5110  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len >> 8) & UInt(0xff)))
  5111  				}
  5112  
  5113  			}
  5114  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  5115  				(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf,
  5116  					uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending))
  5117  			}
  5118  			(*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0)
  5119  			(*Deflate_state)(unsafe.Pointer(s)).Fstatus = EXTRA_STATE
  5120  		}
  5121  	}
  5122  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == EXTRA_STATE {
  5123  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) {
  5124  			var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc
  5125  			var left UInt = (UInt((Ulg((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xffff))) - (*Deflate_state)(unsafe.Pointer(s)).Fgzindex))
  5126  			for ((*Deflate_state)(unsafe.Pointer(s)).Fpending + Ulg(left)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  5127  				var copy UInt = (UInt((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fpending))
  5128  				libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)),
  5129  					((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), uint64(copy))
  5130  				(*Deflate_state)(unsafe.Pointer(s)).Fpending = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size
  5131  				for ok := true; ok; ok = 0 != 0 {
  5132  					if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  5133  						(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  5134  					}
  5135  				}
  5136  				*(*Ulg)(unsafe.Pointer(s + 64 /* &.gzindex */)) += (Ulg(copy))
  5137  				flush_pending(tls, strm)
  5138  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  5139  					(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  5140  					return Z_OK
  5141  				}
  5142  				beg = uint64(0)
  5143  				left = left - (copy)
  5144  			}
  5145  			libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)),
  5146  				((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), uint64(left))
  5147  			*(*Ulg)(unsafe.Pointer(s + 40 /* &.pending */)) += (Ulg(left))
  5148  			for ok1 := true; ok1; ok1 = 0 != 0 {
  5149  				if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  5150  					(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  5151  				}
  5152  			}
  5153  			(*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0)
  5154  		}
  5155  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = NAME_STATE
  5156  	}
  5157  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == NAME_STATE {
  5158  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname != uintptr(Z_NULL) {
  5159  			var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc
  5160  			var val int32
  5161  			for ok2 := true; ok2; ok2 = (val != 0) {
  5162  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  5163  					for ok3 := true; ok3; ok3 = 0 != 0 {
  5164  						if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  5165  							(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  5166  						}
  5167  					}
  5168  					flush_pending(tls, strm)
  5169  					if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  5170  						(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  5171  						return Z_OK
  5172  					}
  5173  					beg = uint64(0)
  5174  				}
  5175  				val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1)))))
  5176  				{
  5177  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val)
  5178  				}
  5179  
  5180  			}
  5181  			for ok4 := true; ok4; ok4 = 0 != 0 {
  5182  				if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  5183  					(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  5184  				}
  5185  			}
  5186  			(*Deflate_state)(unsafe.Pointer(s)).Fgzindex = uint64(0)
  5187  		}
  5188  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = COMMENT_STATE
  5189  	}
  5190  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == COMMENT_STATE {
  5191  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment != uintptr(Z_NULL) {
  5192  			var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc
  5193  			var val int32
  5194  			for ok5 := true; ok5; ok5 = (val != 0) {
  5195  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  5196  					for ok6 := true; ok6; ok6 = 0 != 0 {
  5197  						if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  5198  							(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  5199  						}
  5200  					}
  5201  					flush_pending(tls, strm)
  5202  					if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  5203  						(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  5204  						return Z_OK
  5205  					}
  5206  					beg = uint64(0)
  5207  				}
  5208  				val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1)))))
  5209  				{
  5210  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val)
  5211  				}
  5212  
  5213  			}
  5214  			for ok7 := true; ok7; ok7 = 0 != 0 {
  5215  				if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  5216  					(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  5217  				}
  5218  			}
  5219  		}
  5220  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = HCRC_STATE
  5221  	}
  5222  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == HCRC_STATE {
  5223  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  5224  			if ((*Deflate_state)(unsafe.Pointer(s)).Fpending + uint64(2)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  5225  				flush_pending(tls, strm)
  5226  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  5227  					(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  5228  					return Z_OK
  5229  				}
  5230  			}
  5231  			{
  5232  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xff)))
  5233  			}
  5234  
  5235  			{
  5236  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & uint64(0xff)))
  5237  			}
  5238  
  5239  			(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0))
  5240  		}
  5241  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE
  5242  
  5243  		// Compression must start with an empty pending buffer
  5244  		flush_pending(tls, strm)
  5245  		if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  5246  			(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  5247  			return Z_OK
  5248  		}
  5249  	}
  5250  
  5251  	// Start a new block or continue the current one.
  5252  	if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) || ((*Deflate_state)(unsafe.Pointer(s)).Flookahead != UInt(0))) || ((flush != Z_NO_FLUSH) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != FINISH_STATE)) {
  5253  		var bstate Block_state
  5254  
  5255  		if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 0 {
  5256  			bstate = deflate_stored(tls, s, flush)
  5257  		} else {
  5258  			if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_HUFFMAN_ONLY {
  5259  				bstate = deflate_huff(tls, s, flush)
  5260  			} else {
  5261  				if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_RLE {
  5262  					bstate = deflate_rle(tls, s, flush)
  5263  				} else {
  5264  					bstate = (*struct {
  5265  						f func(*libc.TLS, uintptr, int32) Block_state
  5266  					})(unsafe.Pointer(&struct{ uintptr }{configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc})).f(tls, s, flush)
  5267  				}
  5268  			}
  5269  		}
  5270  
  5271  		if (bstate == Finish_started) || (bstate == Finish_done) {
  5272  			(*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE
  5273  		}
  5274  		if (bstate == Need_more) || (bstate == Finish_started) {
  5275  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  5276  				(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR next call, see above
  5277  			}
  5278  			return Z_OK
  5279  			// If flush != Z_NO_FLUSH && avail_out == 0, the next call
  5280  			// of deflate should use the same flush parameter to make sure
  5281  			// that the flush is complete. So we don't have to output an
  5282  			// empty block here, this will be done at next call. This also
  5283  			// ensures that for a very small output buffer, we emit at most
  5284  			// one empty block.
  5285  		}
  5286  		if bstate == Block_done {
  5287  			if flush == Z_PARTIAL_FLUSH {
  5288  				X_tr_align(tls, s)
  5289  			} else if flush != Z_BLOCK { // FULL_FLUSH or SYNC_FLUSH
  5290  				X_tr_stored_block(tls, s, uintptr(0), uint64(0), 0)
  5291  				// For a full flush, this empty block will be recognized
  5292  				// as a special marker by inflate_sync().
  5293  				if flush == Z_FULL_FLUSH {
  5294  					*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  5295  					libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0)))))
  5296  					// forget history
  5297  					if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  5298  						(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0)
  5299  						(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0
  5300  						(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  5301  					}
  5302  				}
  5303  			}
  5304  			flush_pending(tls, strm)
  5305  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  5306  				(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR at next call, see above
  5307  				return Z_OK
  5308  			}
  5309  		}
  5310  	}
  5311  
  5312  	if flush != Z_FINISH {
  5313  		return Z_OK
  5314  	}
  5315  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap <= 0 {
  5316  		return Z_STREAM_END
  5317  	}
  5318  
  5319  	// Write the trailer
  5320  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 {
  5321  		{
  5322  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xff)))
  5323  		}
  5324  
  5325  		{
  5326  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & uint64(0xff)))
  5327  		}
  5328  
  5329  		{
  5330  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16) & uint64(0xff)))
  5331  		}
  5332  
  5333  		{
  5334  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 24) & uint64(0xff)))
  5335  		}
  5336  
  5337  		{
  5338  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in & uint64(0xff)))
  5339  		}
  5340  
  5341  		{
  5342  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 8) & uint64(0xff)))
  5343  		}
  5344  
  5345  		{
  5346  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 16) & uint64(0xff)))
  5347  		}
  5348  
  5349  		{
  5350  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 24) & uint64(0xff)))
  5351  		}
  5352  
  5353  	} else {
  5354  		putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16)))
  5355  		putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & uint64(0xffff))))
  5356  	}
  5357  	flush_pending(tls, strm)
  5358  	// If avail_out is zero, the application will call deflate again
  5359  	// to flush the rest.
  5360  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap > 0 {
  5361  		(*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap
  5362  	} // write the trailer only once!
  5363  	if (*Deflate_state)(unsafe.Pointer(s)).Fpending != uint64(0) {
  5364  		return Z_OK
  5365  	}
  5366  	return Z_STREAM_END
  5367  }
  5368  
  5369  // =========================================================================
  5370  func XdeflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:1076:13: */
  5371  	var status int32
  5372  
  5373  	if deflateStateCheck(tls, strm) != 0 {
  5374  		return -2
  5375  	}
  5376  
  5377  	status = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fstatus
  5378  
  5379  	/* Deallocate in reverse order of allocations: */
  5380  	{
  5381  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf != 0 {
  5382  			(*struct {
  5383  				f func(*libc.TLS, Voidpf, Voidpf)
  5384  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf)
  5385  		}
  5386  	}
  5387  
  5388  	{
  5389  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead != 0 {
  5390  			(*struct {
  5391  				f func(*libc.TLS, Voidpf, Voidpf)
  5392  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead)
  5393  		}
  5394  	}
  5395  
  5396  	{
  5397  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev != 0 {
  5398  			(*struct {
  5399  				f func(*libc.TLS, Voidpf, Voidpf)
  5400  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev)
  5401  		}
  5402  	}
  5403  
  5404  	{
  5405  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow != 0 {
  5406  			(*struct {
  5407  				f func(*libc.TLS, Voidpf, Voidpf)
  5408  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow)
  5409  		}
  5410  	}
  5411  
  5412  	(*struct {
  5413  		f func(*libc.TLS, Voidpf, Voidpf)
  5414  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
  5415  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
  5416  
  5417  	if status == BUSY_STATE {
  5418  		return -3
  5419  	}
  5420  	return Z_OK
  5421  }
  5422  
  5423  // =========================================================================
  5424  // Copy the source state to the destination state.
  5425  // To simplify the source, this is not supported for 16-bit MSDOS (which
  5426  // doesn't have enough memory anyway to duplicate compression states).
  5427  func XdeflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* deflate.c:1102:13: */
  5428  	var ds uintptr
  5429  	var ss uintptr
  5430  	var overlay uintptr
  5431  
  5432  	if (deflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) {
  5433  		return -2
  5434  	}
  5435  
  5436  	ss = (*Z_stream)(unsafe.Pointer(source)).Fstate
  5437  
  5438  	libc.Xmemcpy(tls, dest, source, uint64(unsafe.Sizeof(Z_stream{})))
  5439  
  5440  	ds = (*struct {
  5441  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  5442  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Deflate_state{})))
  5443  	if ds == uintptr(Z_NULL) {
  5444  		return -4
  5445  	}
  5446  	(*Z_stream)(unsafe.Pointer(dest)).Fstate = ds
  5447  	libc.Xmemcpy(tls, ds, ss, uint64(unsafe.Sizeof(Deflate_state{})))
  5448  	(*Deflate_state)(unsafe.Pointer(ds)).Fstrm = dest
  5449  
  5450  	(*Deflate_state)(unsafe.Pointer(ds)).Fwindow = (*struct {
  5451  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  5452  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fw_size, (uint32(uint64(2) * uint64(unsafe.Sizeof(Byte(0))))))
  5453  	(*Deflate_state)(unsafe.Pointer(ds)).Fprev = (*struct {
  5454  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  5455  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fw_size, uint32(unsafe.Sizeof(Pos(0))))
  5456  	(*Deflate_state)(unsafe.Pointer(ds)).Fhead = (*struct {
  5457  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  5458  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fhash_size, uint32(unsafe.Sizeof(Pos(0))))
  5459  	overlay = (*struct {
  5460  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  5461  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize, (uint32(uint64(unsafe.Sizeof(Ush(0))) + uint64(2))))
  5462  	(*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf = overlay
  5463  
  5464  	if ((((*Deflate_state)(unsafe.Pointer(ds)).Fwindow == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(ds)).Fprev == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(ds)).Fhead == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf == uintptr(Z_NULL)) {
  5465  		XdeflateEnd(tls, dest)
  5466  		return -4
  5467  	}
  5468  	// following zmemcpy do not work for 16-bit MSDOS
  5469  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fwindow, (*Deflate_state)(unsafe.Pointer(ss)).Fwindow, ((uint64((*Deflate_state)(unsafe.Pointer(ds)).Fw_size * UInt(2))) * uint64(unsafe.Sizeof(Byte(0)))))
  5470  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fprev, (*Deflate_state)(unsafe.Pointer(ss)).Fprev, (uint64((*Deflate_state)(unsafe.Pointer(ds)).Fw_size) * uint64(unsafe.Sizeof(Pos(0)))))
  5471  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fhead, (*Deflate_state)(unsafe.Pointer(ss)).Fhead, (uint64((*Deflate_state)(unsafe.Pointer(ds)).Fhash_size) * uint64(unsafe.Sizeof(Pos(0)))))
  5472  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf, (*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf, uint64(UInt((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf_size)))
  5473  
  5474  	(*Deflate_state)(unsafe.Pointer(ds)).Fpending_out = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((int64((*Deflate_state)(unsafe.Pointer(ss)).Fpending_out) - int64((*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf)) / 1)))
  5475  	(*Deflate_state)(unsafe.Pointer(ds)).Fd_buf = (overlay + uintptr((uint64((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize)/uint64(unsafe.Sizeof(Ush(0)))))*2)
  5476  	(*Deflate_state)(unsafe.Pointer(ds)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((uint64(1) + uint64(unsafe.Sizeof(Ush(0)))) * uint64((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize))))
  5477  
  5478  	(*Deflate_state)(unsafe.Pointer(ds)).Fl_desc.Fdyn_tree = ds + 212   /* &.dyn_ltree */
  5479  	(*Deflate_state)(unsafe.Pointer(ds)).Fd_desc.Fdyn_tree = ds + 2504  /* &.dyn_dtree */
  5480  	(*Deflate_state)(unsafe.Pointer(ds)).Fbl_desc.Fdyn_tree = ds + 2748 /* &.bl_tree */
  5481  
  5482  	return Z_OK
  5483  }
  5484  
  5485  // ===========================================================================
  5486  // Read a new buffer from the current input stream, update the adler32
  5487  // and total number of bytes read.  All deflate() input goes through
  5488  // this function so some applications may wish to modify it to avoid
  5489  // allocating a large strm->next_in buffer and copying from it.
  5490  // (See also flush_pending()).
  5491  func read_buf(tls *libc.TLS, strm Z_streamp, buf uintptr, size uint32) uint32 { /* deflate.c:1164:16: */
  5492  	var len uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  5493  
  5494  	if len > size {
  5495  		len = size
  5496  	}
  5497  	if len == uint32(0) {
  5498  		return uint32(0)
  5499  	}
  5500  
  5501  	*(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) -= (len)
  5502  
  5503  	libc.Xmemcpy(tls, buf, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64(len))
  5504  	if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 1 {
  5505  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len)
  5506  	} else if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 2 {
  5507  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len)
  5508  	}
  5509  	*(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len))
  5510  	*(*ULong)(unsafe.Pointer(strm + 16 /* &.total_in */)) += (ULong(len))
  5511  
  5512  	return len
  5513  }
  5514  
  5515  // ===========================================================================
  5516  // Initialize the "longest match" routines for a new zlib stream
  5517  func lm_init(tls *libc.TLS, s uintptr) { /* deflate.c:1194:12: */
  5518  	(*Deflate_state)(unsafe.Pointer(s)).Fwindow_size = (uint64(2) * Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size))
  5519  
  5520  	*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  5521  	libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (uint64(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))) * uint64(unsafe.Sizeof(Posf(0)))))
  5522  
  5523  	// Set the default configuration parameters:
  5524  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_lazy)
  5525  	(*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fgood_length)
  5526  	(*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fnice_length)
  5527  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_chain)
  5528  
  5529  	(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0)
  5530  	(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0
  5531  	(*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0)
  5532  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  5533  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+184 /* &.prev_length */, (UInt(MIN_MATCH - 1)))
  5534  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  5535  	(*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(0)
  5536  }
  5537  
  5538  // ===========================================================================
  5539  // Set match_start to the longest match starting at the given string and
  5540  // return its length. Matches shorter or equal to prev_length are discarded,
  5541  // in which case the result is equal to prev_length and match_start is
  5542  // garbage.
  5543  // IN assertions: cur_match is the head of the hash chain for the current
  5544  //   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
  5545  // OUT assertion: the match length is not greater than s->lookahead.
  5546  // For 80x86 and 680x0, an optimized version will be provided in match.asm or
  5547  // match.S. The code will be functionally equivalent.
  5548  func longest_match(tls *libc.TLS, s uintptr, cur_match IPos) UInt { /* deflate.c:1236:12: */
  5549  	var chain_length uint32 = (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length                                           // max hash chain length
  5550  	var scan uintptr = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) // current string
  5551  	var match uintptr                                                                                                         // matched string
  5552  	var len int32                                                                                                             // length of current match
  5553  	var best_len int32 = int32((*Deflate_state)(unsafe.Pointer(s)).Fprev_length)                                              // best match length so far
  5554  	var nice_match int32 = (*Deflate_state)(unsafe.Pointer(s)).Fnice_match                                                    // stop if match long enough
  5555  	var limit IPos
  5556  	if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart > ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1))) {
  5557  		limit = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1))))
  5558  	} else {
  5559  		limit = uint32(NIL)
  5560  	}
  5561  	// Stop when cur_match becomes <= limit. To simplify the code,
  5562  	// we prevent matches with the string of window index 0.
  5563  	var prev uintptr = (*Deflate_state)(unsafe.Pointer(s)).Fprev
  5564  	var wmask UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_mask
  5565  
  5566  	var strend uintptr = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH))
  5567  	var scan_end1 Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1))))
  5568  	var scan_end Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len)))
  5569  
  5570  	// The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
  5571  	// It is easy to get rid of this optimization if necessary.
  5572  
  5573  	// Do not waste too much time if we already have a good match:
  5574  	if (*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= (*Deflate_state)(unsafe.Pointer(s)).Fgood_match {
  5575  		chain_length >>= 2
  5576  	}
  5577  	// Do not look for matches beyond the end of the input. This is necessary
  5578  	// to make deflate deterministic.
  5579  	if UInt(nice_match) > (*Deflate_state)(unsafe.Pointer(s)).Flookahead {
  5580  		nice_match = int32((*Deflate_state)(unsafe.Pointer(s)).Flookahead)
  5581  	}
  5582  
  5583  	for ok := true; ok; ok = (((libc.AssignUint32(&cur_match, IPos(*(*Posf)(unsafe.Pointer(prev + uintptr((cur_match&wmask))*2))))) > limit) &&
  5584  		(libc.PreDecUint32(&chain_length, 1) != uint32(0))) {
  5585  
  5586  		match = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(cur_match))
  5587  
  5588  		// Skip to next match if the match length cannot increase
  5589  		// or if the match length is less than 2.  Note that the checks below
  5590  		// for insufficient lookahead only occur occasionally for performance
  5591  		// reasons.  Therefore uninitialized memory will be accessed, and
  5592  		// conditional jumps will be made that depend on those values.
  5593  		// However the length of the match is limited to the lookahead, so
  5594  		// the output of deflate is not affected by the uninitialized values.
  5595  
  5596  		if (((int32(*(*Bytef)(unsafe.Pointer(match + uintptr(best_len)))) != int32(scan_end)) || (int32(*(*Bytef)(unsafe.Pointer(match + uintptr((best_len - 1))))) != int32(scan_end1))) || (int32(*(*Bytef)(unsafe.Pointer(match))) != int32(*(*Bytef)(unsafe.Pointer(scan))))) || (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))) != int32(*(*Bytef)(unsafe.Pointer(scan + 1)))) {
  5597  			continue
  5598  		}
  5599  
  5600  		// The check at best_len-1 can be removed because it will be made
  5601  		// again later. (This heuristic is not always a win.)
  5602  		// It is not necessary to compare scan[2] and match[2] since they
  5603  		// are always equal when the other bytes match, given that
  5604  		// the hash keys are equal and that HASH_BITS >= 8.
  5605  		scan += uintptr(2)
  5606  		match++
  5607  
  5608  		// We check for insufficient lookahead only every 8th comparison;
  5609  		// the 256th check will be made at strstart+258.
  5610  		for ok1 := true; ok1; ok1 = (((((((((int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (scan < strend)) {
  5611  		}
  5612  
  5613  		len = (MAX_MATCH - (int32((int64(strend) - int64(scan)) / 1)))
  5614  		scan = (strend - uintptr(MAX_MATCH))
  5615  
  5616  		if len > best_len {
  5617  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_start = cur_match
  5618  			best_len = len
  5619  			if len >= nice_match {
  5620  				break
  5621  			}
  5622  			scan_end1 = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1))))
  5623  			scan_end = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len)))
  5624  		}
  5625  	}
  5626  
  5627  	if UInt(best_len) <= (*Deflate_state)(unsafe.Pointer(s)).Flookahead {
  5628  		return UInt(best_len)
  5629  	}
  5630  	return (*Deflate_state)(unsafe.Pointer(s)).Flookahead
  5631  }
  5632  
  5633  // ===========================================================================
  5634  // Fill the window when the lookahead becomes insufficient.
  5635  // Updates strstart and lookahead.
  5636  //
  5637  // IN assertion: lookahead < MIN_LOOKAHEAD
  5638  // OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
  5639  //    At least one byte has been read, or avail_in == 0; reads are
  5640  //    performed for at least two bytes (required for the zip translate_eol
  5641  //    option -- not supported here).
  5642  func fill_window(tls *libc.TLS, s uintptr) { /* deflate.c:1482:12: */
  5643  	var n uint32
  5644  	var more uint32 // Amount of free space at the end of the window.
  5645  	var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  5646  
  5647  	for ok := true; ok; ok = (((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in != UInt(0))) {
  5648  		more = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead)) - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  5649  
  5650  		// Deal with !@#$% 64K limit:
  5651  		if uint64(unsafe.Sizeof(int32(0))) <= uint64(2) {
  5652  			if ((more == uint32(0)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart == UInt(0))) && ((*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0)) {
  5653  				more = wsize
  5654  
  5655  			} else if more == libc.Uint32(libc.Uint32FromInt32(-1)) {
  5656  				// Very unlikely, but possible on 16 bit machine if
  5657  				// strstart == 0 && lookahead == 1 (input done a byte at time)
  5658  				more--
  5659  			}
  5660  		}
  5661  
  5662  		// If the window is almost full and there is insufficient lookahead,
  5663  		// move the upper half to the lower one to make room in the upper half.
  5664  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart >= (wsize + ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) {
  5665  
  5666  			libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(wsize)), (uint64(wsize - more)))
  5667  			*(*UInt)(unsafe.Pointer(s + 176 /* &.match_start */)) -= (wsize)
  5668  			*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) -= (wsize) // we now have strstart >= MAX_DIST
  5669  			*(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) -= (int64(wsize))
  5670  			slide_hash(tls, s)
  5671  			more = more + (wsize)
  5672  		}
  5673  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0) {
  5674  			break
  5675  		}
  5676  
  5677  		// If there was no sliding:
  5678  		//    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
  5679  		//    more == window_size - lookahead - strstart
  5680  		// => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
  5681  		// => more >= window_size - 2*WSIZE + 2
  5682  		// In the BIG_MEM or MMAP case (not yet supported),
  5683  		//   window_size == input_size + MIN_LOOKAHEAD  &&
  5684  		//   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
  5685  		// Otherwise, window_size == 2*WSIZE so more >= 2.
  5686  		// If there was sliding, more >= WSIZE. So in all cases, more >= 2.
  5687  
  5688  		n = read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flookahead)), more)
  5689  		*(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) += (n)
  5690  
  5691  		// Initialize the hash value now that we have some input:
  5692  		if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) >= UInt(MIN_MATCH) {
  5693  			var str UInt = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Finsert)
  5694  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(str))))
  5695  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((str + UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  5696  			for (*Deflate_state)(unsafe.Pointer(s)).Finsert != 0 {
  5697  				(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((str + UInt(MIN_MATCH)) - UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  5698  				*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr((str&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2)) = *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))
  5699  				*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str)
  5700  				str++
  5701  				(*Deflate_state)(unsafe.Pointer(s)).Finsert--
  5702  				if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) < UInt(MIN_MATCH) {
  5703  					break
  5704  				}
  5705  			}
  5706  		}
  5707  		// If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
  5708  		// but this is not important since only literal bytes will be emitted.
  5709  
  5710  	}
  5711  
  5712  	// If the WIN_INIT bytes after the end of the current data have never been
  5713  	// written, then zero those bytes in order to avoid memory check reports of
  5714  	// the use of uninitialized (or uninitialised as Julian writes) bytes by
  5715  	// the longest match routines.  Update the high water mark for the next
  5716  	// time through here.  WIN_INIT is set to MAX_MATCH since the longest match
  5717  	// routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
  5718  	if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size {
  5719  		var curr Ulg = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead)))
  5720  		var init1 Ulg
  5721  
  5722  		if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < curr {
  5723  			// Previous high water mark below current data -- zero WIN_INIT
  5724  			// bytes or up to end of window, whichever is less.
  5725  			init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - curr)
  5726  			if init1 > uint64(MAX_MATCH) {
  5727  				init1 = uint64(MAX_MATCH)
  5728  			}
  5729  			libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(curr)), 0, uint64(uint32(init1)))
  5730  			(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = (curr + init1)
  5731  		} else if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (curr + uint64(MAX_MATCH)) {
  5732  			// High water mark at or above current data, but below current data
  5733  			// plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
  5734  			// to end of window, whichever is less.
  5735  			init1 = ((curr + uint64(MAX_MATCH)) - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)
  5736  			if init1 > ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) {
  5737  				init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)
  5738  			}
  5739  			libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)), 0, uint64(uint32(init1)))
  5740  			*(*Ulg)(unsafe.Pointer(s + 5944 /* &.high_water */)) += (init1)
  5741  		}
  5742  	}
  5743  
  5744  }
  5745  
  5746  // ===========================================================================
  5747  // Flush the current block, with given end-of-file flag.
  5748  // IN assertion: strstart is set to the end of the current match.
  5749  
  5750  // Same but force premature exit if necessary.
  5751  
  5752  // Maximum stored block length in deflate format (not including header).
  5753  
  5754  // Minimum of a and b.
  5755  
  5756  // ===========================================================================
  5757  // Copy without compression as much as possible from the input stream, return
  5758  // the current block state.
  5759  //
  5760  // In case deflateParams() is used to later switch to a non-zero compression
  5761  // level, s->matches (otherwise unused when storing) keeps track of the number
  5762  // of hash table slides to perform. If s->matches is 1, then one hash table
  5763  // slide will be done when switching. If s->matches is 2, the maximum value
  5764  // allowed here, then the hash table will be cleared, since two or more slides
  5765  // is the same as a clear.
  5766  //
  5767  // deflate_stored() is written to minimize the number of times an input byte is
  5768  // copied. It is most efficient with large input and output buffers, which
  5769  // maximizes the opportunites to have a single copy from next_in to next_out.
  5770  func deflate_stored(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1643:19: */
  5771  	// Smallest worthy block size when not flushing or finishing. By default
  5772  	// this is 32K. This can be as small as 507 bytes for memLevel == 1. For
  5773  	// large input and output buffers, the stored block size will be larger.
  5774  	var min_block uint32 = func() uint32 {
  5775  		if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - uint64(5)) > (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) {
  5776  			return (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  5777  		}
  5778  		return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - uint64(5)))
  5779  	}()
  5780  
  5781  	// Copy as many min_block or larger stored blocks directly to next_out as
  5782  	// possible. If flushing, copy the remaining available input to next_out as
  5783  	// stored blocks, if there is enough space.
  5784  	var len uint32
  5785  	var left uint32
  5786  	var have uint32
  5787  	var last uint32 = uint32(0)
  5788  	var used uint32 = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in
  5789  	for ok := true; ok; ok = (last == uint32(0)) {
  5790  		// Set len to the maximum size block that we can copy directly with the
  5791  		// available input data and output space. Set left to how much of that
  5792  		// would be copied from what's left in the window.
  5793  		len = uint32(MAX_STORED)                                                                      // maximum deflate stored block length
  5794  		have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3))                    // number of header bytes
  5795  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out < have { // need room for header
  5796  			break
  5797  		}
  5798  		// maximum stored block length that will fit in avail_out:
  5799  		have = ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out - have)
  5800  		left = (uint32(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)) // bytes left in window
  5801  		if Ulg(len) > (Ulg(left) + Ulg((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) {
  5802  			len = (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)
  5803  		} // limit len to the input
  5804  		if len > have {
  5805  			len = have
  5806  		} // limit len to the output
  5807  
  5808  		// If the stored block would be less than min_block in length, or if
  5809  		// unable to copy all of the available input when flushing, then try
  5810  		// copying to the window and the pending buffer instead. Also don't
  5811  		// write an empty block when flushing -- deflate() does that.
  5812  		if (len < min_block) && ((((len == uint32(0)) && (flush != Z_FINISH)) || (flush == Z_NO_FLUSH)) || (len != (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in))) {
  5813  			break
  5814  		}
  5815  
  5816  		// Make a dummy stored block in pending to get the header bytes,
  5817  		// including any pending bits. This also updates the debugging counts.
  5818  		if (flush == Z_FINISH) && (len == (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) {
  5819  			last = uint32(1)
  5820  		} else {
  5821  			last = uint32(0)
  5822  		}
  5823  		X_tr_stored_block(tls, s, uintptr(0), uint64(0), int32(last))
  5824  
  5825  		// Replace the lengths in the dummy stored block with len.
  5826  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(4))))) = Bytef(len)
  5827  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(3))))) = (Bytef(len >> 8))
  5828  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(2))))) = Bytef(^len)
  5829  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - uint64(1))))) = (Bytef(^len >> 8))
  5830  
  5831  		// Write the stored block header bytes.
  5832  		flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  5833  
  5834  		// Copy uncompressed bytes from the window to next_out.
  5835  		if left != 0 {
  5836  			if left > len {
  5837  				left = len
  5838  			}
  5839  			libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), uint64(left))
  5840  			*(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 24 /* &.next_out */)) += (uintptr(left))
  5841  			*(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 32 /* &.avail_out */)) -= (left)
  5842  			*(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 40 /* &.total_out */)) += (ULong(left))
  5843  			*(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) += (int64(left))
  5844  			len = len - (left)
  5845  		}
  5846  
  5847  		// Copy uncompressed bytes directly from next_in to next_out, updating
  5848  		// the check value.
  5849  		if len != 0 {
  5850  			read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, len)
  5851  			*(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 24 /* &.next_out */)) += (uintptr(len))
  5852  			*(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 32 /* &.avail_out */)) -= (len)
  5853  			*(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 40 /* &.total_out */)) += (ULong(len))
  5854  		}
  5855  	}
  5856  
  5857  	// Update the sliding window with the last s->w_size bytes of the copied
  5858  	// data, or append all of the copied data to the existing window if less
  5859  	// than s->w_size bytes were copied. Also update the number of bytes to
  5860  	// insert in the hash tables, in the event that deflateParams() switches to
  5861  	// a non-zero compression level.
  5862  	used = used - ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in) // number of input bytes directly copied
  5863  	if used != 0 {
  5864  		// If any input was used, then no unused input remains in the window,
  5865  		// therefore s->block_start == s->strstart.
  5866  		if used >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { // supplant the previous history
  5867  			(*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(2) // clear hash
  5868  			libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in - uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), uint64((*Deflate_state)(unsafe.Pointer(s)).Fw_size))
  5869  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  5870  		} else {
  5871  			if ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) <= Ulg(used) {
  5872  				// Slide the window down.
  5873  				*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size)
  5874  				libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), uint64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))
  5875  				if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) {
  5876  					(*Deflate_state)(unsafe.Pointer(s)).Fmatches++
  5877  				} // add a pending slide_hash()
  5878  			}
  5879  			libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)), ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in - uintptr(used)), uint64(used))
  5880  			*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += (used)
  5881  		}
  5882  		(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  5883  		*(*UInt)(unsafe.Pointer(s + 5932 /* &.insert */)) += (func() uint32 {
  5884  			if (used) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert) {
  5885  				return ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert)
  5886  			}
  5887  			return used
  5888  		}())
  5889  	}
  5890  	if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) {
  5891  		(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  5892  	}
  5893  
  5894  	// If the last block was written to next_out, then done.
  5895  	if last != 0 {
  5896  		return Finish_done
  5897  	}
  5898  
  5899  	// If flushing and all input has been consumed, then done.
  5900  	if (((flush != Z_NO_FLUSH) && (flush != Z_FINISH)) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) == (*Deflate_state)(unsafe.Pointer(s)).Fblock_start) {
  5901  		return Block_done
  5902  	}
  5903  
  5904  	// Fill the window with any remaining input.
  5905  	have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - uint64(1)))
  5906  	if ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in > have) && ((*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= int64((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) {
  5907  		// Slide the window down.
  5908  		*(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) -= (int64((*Deflate_state)(unsafe.Pointer(s)).Fw_size))
  5909  		*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size)
  5910  		libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), uint64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))
  5911  		if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) {
  5912  			(*Deflate_state)(unsafe.Pointer(s)).Fmatches++
  5913  		} // add a pending slide_hash()
  5914  		have = have + ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) // more space now
  5915  	}
  5916  	if have > (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in {
  5917  		have = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in
  5918  	}
  5919  	if have != 0 {
  5920  		read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)), have)
  5921  		*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += (have)
  5922  	}
  5923  	if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) {
  5924  		(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  5925  	}
  5926  
  5927  	// There was not enough avail_out to write a complete worthy or flushed
  5928  	// stored block to next_out. Write a stored block to pending instead, if we
  5929  	// have enough input for a worthy block, or if flushing and there is enough
  5930  	// room for the remaining input as a stored block in the pending buffer.
  5931  	have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3)) // number of header bytes
  5932  	// maximum stored block length that will fit in pending:
  5933  	have = func() uint32 {
  5934  		if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have)) > (uint64(MAX_STORED)) {
  5935  			return uint32(MAX_STORED)
  5936  		}
  5937  		return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have)))
  5938  	}()
  5939  	min_block = func() uint32 {
  5940  		if (have) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) {
  5941  			return (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  5942  		}
  5943  		return have
  5944  	}()
  5945  	left = (uint32(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start))
  5946  	if (left >= min_block) || (((((left != 0) || (flush == Z_FINISH)) && (flush != Z_NO_FLUSH)) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (left <= have)) {
  5947  		len = func() uint32 {
  5948  			if (left) > (have) {
  5949  				return have
  5950  			}
  5951  			return left
  5952  		}()
  5953  		if ((flush == Z_FINISH) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (len == left) {
  5954  			last = uint32(1)
  5955  		} else {
  5956  			last = uint32(0)
  5957  		}
  5958  		X_tr_stored_block(tls, s, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), uint64(len), int32(last))
  5959  		*(*int64)(unsafe.Pointer(s + 152 /* &.block_start */)) += (int64(len))
  5960  		flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  5961  	}
  5962  
  5963  	// We've done all we can with the available input and output.
  5964  	if last != 0 {
  5965  		return Finish_started
  5966  	}
  5967  	return Need_more
  5968  }
  5969  
  5970  // ===========================================================================
  5971  // Compress as much as possible from the input stream, return the current
  5972  // block state.
  5973  // This function does not perform lazy evaluation of matches and inserts
  5974  // new strings in the dictionary only for unmatched strings or for short
  5975  // matches. It is used only for the fast compression options.
  5976  func deflate_fast(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1824:19: */
  5977  	var hash_head IPos // head of the hash chain
  5978  	var bflush int32   // set if current block must be flushed
  5979  
  5980  	for {
  5981  		// Make sure that we always have enough lookahead, except
  5982  		// at the end of the input file. We need MAX_MATCH bytes
  5983  		// for the next match, plus MIN_MATCH bytes to insert the
  5984  		// string following the next match.
  5985  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) {
  5986  			fill_window(tls, s)
  5987  			if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) {
  5988  				return Need_more
  5989  			}
  5990  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  5991  				break
  5992  			} // flush the current block
  5993  		}
  5994  
  5995  		// Insert the string window[strstart .. strstart+2] in the
  5996  		// dictionary, and set hash_head to the head of the hash chain:
  5997  		hash_head = IPos(NIL)
  5998  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) {
  5999  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  6000  			hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  6001  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6002  		}
  6003  
  6004  		// Find the longest match, discarding those <= prev_length.
  6005  		// At this point we have always match_length < MIN_MATCH
  6006  		if (hash_head != IPos(NIL)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - hash_head) <= ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) {
  6007  			// To simplify the code, we prevent matches with the string
  6008  			// of window index 0 (in particular we have to avoid a match
  6009  			// of the string with itself at the start of the input file).
  6010  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head)
  6011  			// longest_match() sets match_start
  6012  		}
  6013  		if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) {
  6014  
  6015  			{
  6016  				var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH)))
  6017  				var dist Ush = (Ush((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start))
  6018  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist
  6019  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len
  6020  				dist--
  6021  				*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++
  6022  				*(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 {
  6023  					if (int32(dist)) < 256 {
  6024  						return int32(X_dist_code[dist])
  6025  					}
  6026  					return int32(X_dist_code[(256 + ((int32(dist)) >> 7))])
  6027  				}()))*4 /* &.fc */))++
  6028  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6029  			}
  6030  
  6031  			*(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  6032  
  6033  			// Insert new strings in the hash table only if the match length
  6034  			// is not too large. This saves time but degrades compression.
  6035  			if ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match) && ((*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH)) {
  6036  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length-- // string at strstart already in table
  6037  				for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length, 1) != UInt(0)) {
  6038  					(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6039  					(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  6040  					hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  6041  					*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6042  					// strstart never exceeds WSIZE-MAX_MATCH, so there are
  6043  					// always MIN_MATCH bytes ahead.
  6044  				}
  6045  				(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6046  			} else {
  6047  				*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  6048  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  6049  				(*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))))
  6050  				(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  6051  				// If lookahead < MIN_MATCH, ins_h is garbage, but it does not
  6052  				// matter since it will be recomputed at next deflate call.
  6053  			}
  6054  		} else {
  6055  			// No match, output a literal byte
  6056  
  6057  			{
  6058  				var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  6059  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  6060  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  6061  				*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  6062  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6063  			}
  6064  
  6065  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  6066  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6067  		}
  6068  		if bflush != 0 {
  6069  			{
  6070  				X_tr_flush_block(tls, s, func() uintptr {
  6071  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6072  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6073  					}
  6074  					return uintptr(Z_NULL)
  6075  				}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6076  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6077  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6078  			}
  6079  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6080  				if 0 != 0 {
  6081  					return Finish_started
  6082  				}
  6083  				return Need_more
  6084  			}
  6085  		}
  6086  
  6087  	}
  6088  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 {
  6089  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) {
  6090  			return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart
  6091  		}
  6092  		return (uint32(MIN_MATCH - 1))
  6093  	}()
  6094  	if flush == Z_FINISH {
  6095  		{
  6096  			{
  6097  				X_tr_flush_block(tls, s, func() uintptr {
  6098  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6099  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6100  					}
  6101  					return uintptr(Z_NULL)
  6102  				}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  6103  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6104  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6105  			}
  6106  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6107  				if 1 != 0 {
  6108  					return Finish_started
  6109  				}
  6110  				return Need_more
  6111  			}
  6112  		}
  6113  
  6114  		return Finish_done
  6115  	}
  6116  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  6117  		{
  6118  			X_tr_flush_block(tls, s, func() uintptr {
  6119  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6120  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6121  				}
  6122  				return uintptr(Z_NULL)
  6123  			}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6124  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6125  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6126  		}
  6127  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6128  			if 0 != 0 {
  6129  				return Finish_started
  6130  			}
  6131  			return Need_more
  6132  		}
  6133  	}
  6134  
  6135  	return Block_done
  6136  }
  6137  
  6138  // ===========================================================================
  6139  // Same as above, but achieves better compression. We use a lazy
  6140  // evaluation for matches: a match is finally adopted only if there is
  6141  // no better match at the next window position.
  6142  func deflate_slow(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1926:19: */
  6143  	var hash_head IPos // head of hash chain
  6144  	var bflush int32   // set if current block must be flushed
  6145  
  6146  	// Process the input block.
  6147  	for {
  6148  		// Make sure that we always have enough lookahead, except
  6149  		// at the end of the input file. We need MAX_MATCH bytes
  6150  		// for the next match, plus MIN_MATCH bytes to insert the
  6151  		// string following the next match.
  6152  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) {
  6153  			fill_window(tls, s)
  6154  			if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) {
  6155  				return Need_more
  6156  			}
  6157  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  6158  				break
  6159  			} // flush the current block
  6160  		}
  6161  
  6162  		// Insert the string window[strstart .. strstart+2] in the
  6163  		// dictionary, and set hash_head to the head of the hash chain:
  6164  		hash_head = IPos(NIL)
  6165  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) {
  6166  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  6167  			hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  6168  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6169  		}
  6170  
  6171  		// Find the longest match, discarding those <= prev_length.
  6172  		(*Deflate_state)(unsafe.Pointer(s)).Fprev_length = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length
  6173  		(*Deflate_state)(unsafe.Pointer(s)).Fprev_match = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start
  6174  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1))
  6175  
  6176  		if ((hash_head != IPos(NIL)) && ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length < (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - hash_head) <= ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) {
  6177  			// To simplify the code, we prevent matches with the string
  6178  			// of window index 0 (in particular we have to avoid a match
  6179  			// of the string with itself at the start of the input file).
  6180  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head)
  6181  			// longest_match() sets match_start
  6182  
  6183  			if ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= UInt(5)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FILTERED) ||
  6184  				(((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length == UInt(MIN_MATCH)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start) > UInt(TOO_FAR)))) {
  6185  
  6186  				// If prev_match is also MIN_MATCH, match_start is garbage
  6187  				// but we will ignore the current match anyway.
  6188  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1))
  6189  			}
  6190  		}
  6191  		// If there was a match at the previous step and the current
  6192  		// match is not better, output the previous match:
  6193  		if ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= UInt(MIN_MATCH)) && ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= (*Deflate_state)(unsafe.Pointer(s)).Fprev_length) {
  6194  			var max_insert UInt = (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead) - UInt(MIN_MATCH))
  6195  			// Do not insert strings in hash table beyond this.
  6196  
  6197  			{
  6198  				var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(MIN_MATCH)))
  6199  				var dist Ush = (Ush(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)) - (*Deflate_state)(unsafe.Pointer(s)).Fprev_match))
  6200  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist
  6201  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len
  6202  				dist--
  6203  				*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++
  6204  				*(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 {
  6205  					if (int32(dist)) < 256 {
  6206  						return int32(X_dist_code[dist])
  6207  					}
  6208  					return int32(X_dist_code[(256 + ((int32(dist)) >> 7))])
  6209  				}()))*4 /* &.fc */))++
  6210  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6211  			}
  6212  
  6213  			// Insert in hash table all strings up to the end of the match.
  6214  			// strstart-1 and strstart are already inserted. If there is not
  6215  			// enough lookahead, the last two strings are not inserted in
  6216  			// the hash table.
  6217  			*(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(1))
  6218  			*(*UInt)(unsafe.Pointer(s + 184 /* &.prev_length */)) -= (UInt(2))
  6219  			for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fprev_length, 1) != UInt(0)) {
  6220  				if libc.PreIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fstrstart, 1) <= max_insert {
  6221  					(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  6222  					hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  6223  					*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6224  				}
  6225  			}
  6226  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  6227  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1))
  6228  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6229  
  6230  			if bflush != 0 {
  6231  				{
  6232  					X_tr_flush_block(tls, s, func() uintptr {
  6233  						if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6234  							return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6235  						}
  6236  						return uintptr(Z_NULL)
  6237  					}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6238  					(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6239  					flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6240  				}
  6241  				if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6242  					if 0 != 0 {
  6243  						return Finish_started
  6244  					}
  6245  					return Need_more
  6246  				}
  6247  			}
  6248  
  6249  		} else if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 {
  6250  			// If there was no match at the previous position, output a
  6251  			// single literal. If there was a match but the current match
  6252  			// is longer, truncate the previous match to a single literal.
  6253  
  6254  			{
  6255  				var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)))))
  6256  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  6257  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  6258  				*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  6259  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6260  			}
  6261  
  6262  			if bflush != 0 {
  6263  				{
  6264  					X_tr_flush_block(tls, s, func() uintptr {
  6265  						if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6266  							return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6267  						}
  6268  						return uintptr(Z_NULL)
  6269  					}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6270  					(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6271  					flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6272  				}
  6273  
  6274  			}
  6275  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6276  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  6277  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6278  				return Need_more
  6279  			}
  6280  		} else {
  6281  			// There is no previous match to compare with, wait for
  6282  			// the next step to decide.
  6283  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 1
  6284  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6285  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  6286  		}
  6287  	}
  6288  
  6289  	if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 {
  6290  
  6291  		{
  6292  			var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)))))
  6293  			*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  6294  			*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  6295  			*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  6296  			bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6297  		}
  6298  
  6299  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  6300  	}
  6301  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 {
  6302  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) {
  6303  			return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart
  6304  		}
  6305  		return (uint32(MIN_MATCH - 1))
  6306  	}()
  6307  	if flush == Z_FINISH {
  6308  		{
  6309  			{
  6310  				X_tr_flush_block(tls, s, func() uintptr {
  6311  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6312  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6313  					}
  6314  					return uintptr(Z_NULL)
  6315  				}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  6316  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6317  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6318  			}
  6319  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6320  				if 1 != 0 {
  6321  					return Finish_started
  6322  				}
  6323  				return Need_more
  6324  			}
  6325  		}
  6326  
  6327  		return Finish_done
  6328  	}
  6329  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  6330  		{
  6331  			X_tr_flush_block(tls, s, func() uintptr {
  6332  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6333  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6334  				}
  6335  				return uintptr(Z_NULL)
  6336  			}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6337  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6338  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6339  		}
  6340  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6341  			if 0 != 0 {
  6342  				return Finish_started
  6343  			}
  6344  			return Need_more
  6345  		}
  6346  	}
  6347  
  6348  	return Block_done
  6349  }
  6350  
  6351  // ===========================================================================
  6352  // For Z_RLE, simply look for runs of bytes, generate matches only of distance
  6353  // one.  Do not maintain a hash table.  (It will be regenerated if this run of
  6354  // deflate switches away from Z_RLE.)
  6355  func deflate_rle(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2057:19: */
  6356  	var bflush int32 // set if current block must be flushed
  6357  	var prev UInt    // byte at distance one to match
  6358  	var scan uintptr
  6359  	var strend uintptr // scan goes up to strend for length of run
  6360  
  6361  	for {
  6362  		// Make sure that we always have enough lookahead, except
  6363  		// at the end of the input file. We need MAX_MATCH bytes
  6364  		// for the longest run, plus one for the unrolled loop.
  6365  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH) {
  6366  			fill_window(tls, s)
  6367  			if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH)) && (flush == Z_NO_FLUSH) {
  6368  				return Need_more
  6369  			}
  6370  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  6371  				break
  6372  			} // flush the current block
  6373  		}
  6374  
  6375  		// See how many times the previous byte repeats
  6376  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  6377  		if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart > UInt(0)) {
  6378  			scan = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - uintptr(1))
  6379  			prev = UInt(*(*Bytef)(unsafe.Pointer(scan)))
  6380  			if ((prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) {
  6381  				strend = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH))
  6382  				for ok := true; ok; ok = (((((((((prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (scan < strend)) {
  6383  				}
  6384  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MAX_MATCH) - (UInt((int64(strend) - int64(scan)) / 1)))
  6385  				if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length > (*Deflate_state)(unsafe.Pointer(s)).Flookahead {
  6386  					(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (*Deflate_state)(unsafe.Pointer(s)).Flookahead
  6387  				}
  6388  			}
  6389  
  6390  		}
  6391  
  6392  		// Emit match if have run of MIN_MATCH or longer, else emit literal
  6393  		if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) {
  6394  
  6395  			{
  6396  				var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH)))
  6397  				var dist Ush = Ush(1)
  6398  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist
  6399  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len
  6400  				dist--
  6401  				*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++
  6402  				*(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 {
  6403  					if (int32(dist)) < 256 {
  6404  						return int32(X_dist_code[dist])
  6405  					}
  6406  					return int32(X_dist_code[(256 + ((int32(dist)) >> 7))])
  6407  				}()))*4 /* &.fc */))++
  6408  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6409  			}
  6410  
  6411  			*(*UInt)(unsafe.Pointer(s + 180 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  6412  			*(*UInt)(unsafe.Pointer(s + 172 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  6413  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  6414  		} else {
  6415  			// No match, output a literal byte
  6416  
  6417  			{
  6418  				var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  6419  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  6420  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  6421  				*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  6422  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6423  			}
  6424  
  6425  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  6426  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6427  		}
  6428  		if bflush != 0 {
  6429  			{
  6430  				X_tr_flush_block(tls, s, func() uintptr {
  6431  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6432  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6433  					}
  6434  					return uintptr(Z_NULL)
  6435  				}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6436  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6437  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6438  			}
  6439  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6440  				if 0 != 0 {
  6441  					return Finish_started
  6442  				}
  6443  				return Need_more
  6444  			}
  6445  		}
  6446  
  6447  	}
  6448  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  6449  	if flush == Z_FINISH {
  6450  		{
  6451  			{
  6452  				X_tr_flush_block(tls, s, func() uintptr {
  6453  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6454  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6455  					}
  6456  					return uintptr(Z_NULL)
  6457  				}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  6458  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6459  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6460  			}
  6461  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6462  				if 1 != 0 {
  6463  					return Finish_started
  6464  				}
  6465  				return Need_more
  6466  			}
  6467  		}
  6468  
  6469  		return Finish_done
  6470  	}
  6471  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  6472  		{
  6473  			X_tr_flush_block(tls, s, func() uintptr {
  6474  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6475  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6476  				}
  6477  				return uintptr(Z_NULL)
  6478  			}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6479  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6480  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6481  		}
  6482  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6483  			if 0 != 0 {
  6484  				return Finish_started
  6485  			}
  6486  			return Need_more
  6487  		}
  6488  	}
  6489  
  6490  	return Block_done
  6491  }
  6492  
  6493  // ===========================================================================
  6494  // For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
  6495  // (It will be regenerated if this run of deflate switches away from Huffman.)
  6496  func deflate_huff(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2130:19: */
  6497  	var bflush int32 // set if current block must be flushed
  6498  
  6499  	for {
  6500  		// Make sure that we have a literal to write.
  6501  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  6502  			fill_window(tls, s)
  6503  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  6504  				if flush == Z_NO_FLUSH {
  6505  					return Need_more
  6506  				}
  6507  				break // flush the current block
  6508  			}
  6509  		}
  6510  
  6511  		// Output a literal byte
  6512  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  6513  
  6514  		{
  6515  			var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  6516  			*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  6517  			*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  6518  			*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  6519  			bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  6520  		}
  6521  
  6522  		(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  6523  		(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  6524  		if bflush != 0 {
  6525  			{
  6526  				X_tr_flush_block(tls, s, func() uintptr {
  6527  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6528  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6529  					}
  6530  					return uintptr(Z_NULL)
  6531  				}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6532  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6533  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6534  			}
  6535  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6536  				if 0 != 0 {
  6537  					return Finish_started
  6538  				}
  6539  				return Need_more
  6540  			}
  6541  		}
  6542  
  6543  	}
  6544  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  6545  	if flush == Z_FINISH {
  6546  		{
  6547  			{
  6548  				X_tr_flush_block(tls, s, func() uintptr {
  6549  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6550  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6551  					}
  6552  					return uintptr(Z_NULL)
  6553  				}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  6554  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6555  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6556  			}
  6557  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6558  				if 1 != 0 {
  6559  					return Finish_started
  6560  				}
  6561  				return Need_more
  6562  			}
  6563  		}
  6564  
  6565  		return Finish_done
  6566  	}
  6567  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  6568  		{
  6569  			X_tr_flush_block(tls, s, func() uintptr {
  6570  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  6571  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  6572  				}
  6573  				return uintptr(Z_NULL)
  6574  			}(), (Ulg(int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  6575  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int64((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6576  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  6577  		}
  6578  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  6579  			if 0 != 0 {
  6580  				return Finish_started
  6581  			}
  6582  			return Need_more
  6583  		}
  6584  	}
  6585  
  6586  	return Block_done
  6587  }
  6588  
  6589  // compatibility w/GNU headers
  6590  
  6591  // When the following macro is defined, the system uses 64-bit inode numbers.
  6592  // Programs can use this to avoid including <sys/param.h>, with its associated
  6593  // namespace pollution.
  6594  
  6595  type Fpos_t = X__off_t /* stdio.h:47:18 */
  6596  
  6597  // NB: to fit things in six character monocase externals, the stdio
  6598  // code uses the prefix `__s' for stdio objects, typically followed
  6599  // by a three-character attempt at a mnemonic.
  6600  
  6601  // stdio buffers
  6602  type X__sbuf = struct {
  6603  	F_base       uintptr
  6604  	F_size       int32
  6605  	F__ccgo_pad1 [4]byte
  6606  } /* stdio.h:91:1 */
  6607  
  6608  // stdio state variables.
  6609  //
  6610  // The following always hold:
  6611  //
  6612  //	if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR),
  6613  //		_lbfsize is -_bf._size, else _lbfsize is 0
  6614  //	if _flags&__SRD, _w is 0
  6615  //	if _flags&__SWR, _r is 0
  6616  //
  6617  // This ensures that the getc and putc macros (or inline functions) never
  6618  // try to write or read from a file that is in `read' or `write' mode.
  6619  // (Moreover, they can, and do, automatically switch from read mode to
  6620  // write mode, and back, on "r+" and "w+" files.)
  6621  //
  6622  // _lbfsize is used only to make the inline line-buffered output stream
  6623  // code as compact as possible.
  6624  //
  6625  // _ub, _up, and _ur are used when ungetc() pushes back more characters
  6626  // than fit in the current _bf, or when ungetc() pushes back a character
  6627  // that does not match the previous one in _bf.  When this happens,
  6628  // _ub._base becomes non-nil (i.e., a stream has ungetc() data iff
  6629  // _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
  6630  //
  6631  // Certain members of __sFILE are accessed directly via macros or
  6632  // inline functions.  To preserve ABI compat, these members must not
  6633  // be disturbed.  These members are marked below with (*).
  6634  type X__sFILE = struct {
  6635  	F_p          uintptr
  6636  	F_r          int32
  6637  	F_w          int32
  6638  	F_flags      int16
  6639  	F_file       int16
  6640  	F__ccgo_pad1 [4]byte
  6641  	F_bf         struct {
  6642  		F_base       uintptr
  6643  		F_size       int32
  6644  		F__ccgo_pad1 [4]byte
  6645  	}
  6646  	F_lbfsize    int32
  6647  	F__ccgo_pad2 [4]byte
  6648  	F_cookie     uintptr
  6649  	F_close      uintptr
  6650  	F_read       uintptr
  6651  	F_seek       uintptr
  6652  	F_write      uintptr
  6653  	F_ub         struct {
  6654  		F_base       uintptr
  6655  		F_size       int32
  6656  		F__ccgo_pad1 [4]byte
  6657  	}
  6658  	F_up   uintptr
  6659  	F_ur   int32
  6660  	F_ubuf [3]uint8
  6661  	F_nbuf [1]uint8
  6662  	F_lb   struct {
  6663  		F_base       uintptr
  6664  		F_size       int32
  6665  		F__ccgo_pad1 [4]byte
  6666  	}
  6667  	F_blksize     int32
  6668  	F__ccgo_pad3  [4]byte
  6669  	F_offset      Fpos_t
  6670  	F_fl_mutex    uintptr
  6671  	F_fl_owner    uintptr
  6672  	F_fl_count    int32
  6673  	F_orientation int32
  6674  	F_mbstate     X__mbstate_t
  6675  	F_flags2      int32
  6676  	F__ccgo_pad4  [4]byte
  6677  } /* stdio.h:124:1 */
  6678  
  6679  type FILE = X__sFILE /* stdio.h:165:24 */
  6680  type Cookie_io_functions_t = struct {
  6681  	Fread  uintptr
  6682  	Fwrite uintptr
  6683  	Fseek  uintptr
  6684  	Fclose uintptr
  6685  } /* stdio.h:428:3 */
  6686  
  6687  // -
  6688  // SPDX-License-Identifier: BSD-3-Clause
  6689  //
  6690  // Copyright (c) 1988, 1993
  6691  //	The Regents of the University of California.  All rights reserved.
  6692  //
  6693  // Redistribution and use in source and binary forms, with or without
  6694  // modification, are permitted provided that the following conditions
  6695  // are met:
  6696  // 1. Redistributions of source code must retain the above copyright
  6697  //    notice, this list of conditions and the following disclaimer.
  6698  // 2. Redistributions in binary form must reproduce the above copyright
  6699  //    notice, this list of conditions and the following disclaimer in the
  6700  //    documentation and/or other materials provided with the distribution.
  6701  // 3. Neither the name of the University nor the names of its contributors
  6702  //    may be used to endorse or promote products derived from this software
  6703  //    without specific prior written permission.
  6704  //
  6705  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  6706  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  6707  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  6708  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  6709  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  6710  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  6711  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  6712  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  6713  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  6714  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  6715  // SUCH DAMAGE.
  6716  //
  6717  //	@(#)limits.h	8.2 (Berkeley) 1/4/94
  6718  // $FreeBSD$
  6719  
  6720  // -
  6721  // SPDX-License-Identifier: BSD-3-Clause
  6722  //
  6723  // Copyright (c) 1983, 1990, 1993
  6724  //	The Regents of the University of California.  All rights reserved.
  6725  // (c) UNIX System Laboratories, Inc.
  6726  // All or some portions of this file are derived from material licensed
  6727  // to the University of California by American Telephone and Telegraph
  6728  // Co. or Unix System Laboratories, Inc. and are reproduced herein with
  6729  // the permission of UNIX System Laboratories, Inc.
  6730  //
  6731  // Redistribution and use in source and binary forms, with or without
  6732  // modification, are permitted provided that the following conditions
  6733  // are met:
  6734  // 1. Redistributions of source code must retain the above copyright
  6735  //    notice, this list of conditions and the following disclaimer.
  6736  // 2. Redistributions in binary form must reproduce the above copyright
  6737  //    notice, this list of conditions and the following disclaimer in the
  6738  //    documentation and/or other materials provided with the distribution.
  6739  // 3. Neither the name of the University nor the names of its contributors
  6740  //    may be used to endorse or promote products derived from this software
  6741  //    without specific prior written permission.
  6742  //
  6743  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  6744  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  6745  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  6746  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  6747  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  6748  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  6749  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  6750  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  6751  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  6752  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  6753  // SUCH DAMAGE.
  6754  //
  6755  //	@(#)fcntl.h	8.3 (Berkeley) 1/21/94
  6756  // $FreeBSD$
  6757  
  6758  // This file includes the definitions for open and fcntl
  6759  // described by POSIX for <fcntl.h>; it also includes
  6760  // related kernel definitions.
  6761  
  6762  // -
  6763  // SPDX-License-Identifier: BSD-3-Clause
  6764  //
  6765  // Copyright (c) 1991, 1993
  6766  //	The Regents of the University of California.  All rights reserved.
  6767  //
  6768  // This code is derived from software contributed to Berkeley by
  6769  // Berkeley Software Design, Inc.
  6770  //
  6771  // Redistribution and use in source and binary forms, with or without
  6772  // modification, are permitted provided that the following conditions
  6773  // are met:
  6774  // 1. Redistributions of source code must retain the above copyright
  6775  //    notice, this list of conditions and the following disclaimer.
  6776  // 2. Redistributions in binary form must reproduce the above copyright
  6777  //    notice, this list of conditions and the following disclaimer in the
  6778  //    documentation and/or other materials provided with the distribution.
  6779  // 3. Neither the name of the University nor the names of its contributors
  6780  //    may be used to endorse or promote products derived from this software
  6781  //    without specific prior written permission.
  6782  //
  6783  // THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  6784  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  6785  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  6786  // ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  6787  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  6788  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  6789  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  6790  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  6791  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  6792  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  6793  // SUCH DAMAGE.
  6794  //
  6795  //	@(#)cdefs.h	8.8 (Berkeley) 1/9/95
  6796  // $FreeBSD$
  6797  
  6798  // -
  6799  // SPDX-License-Identifier: BSD-2-Clause-FreeBSD
  6800  //
  6801  // Copyright (c) 2002 Mike Barcroft <mike@FreeBSD.org>
  6802  // All rights reserved.
  6803  //
  6804  // Redistribution and use in source and binary forms, with or without
  6805  // modification, are permitted provided that the following conditions
  6806  // are met:
  6807  // 1. Redistributions of source code must retain the above copyright
  6808  //    notice, this list of conditions and the following disclaimer.
  6809  // 2. Redistributions in binary form must reproduce the above copyright
  6810  //    notice, this list of conditions and the following disclaimer in the
  6811  //    documentation and/or other materials provided with the distribution.
  6812  //
  6813  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  6814  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  6815  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  6816  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  6817  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  6818  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  6819  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  6820  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  6821  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  6822  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  6823  // SUCH DAMAGE.
  6824  //
  6825  // $FreeBSD$
  6826  
  6827  // File status flags: these are used by open(2), fcntl(2).
  6828  // They are also used (indirectly) in the kernel file structure f_flags,
  6829  // which is a superset of the open/fcntl flags.  Open flags and f_flags
  6830  // are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).
  6831  // Open/fcntl flags begin with O_; kernel-internal flags begin with F.
  6832  // open-only flags
  6833  
  6834  // Kernel encoding of open mode; separate read and write bits that are
  6835  // independently testable: 1 greater than the above.
  6836  //
  6837  // XXX
  6838  // FREAD and FWRITE are excluded from the #ifdef _KERNEL so that TIOCFLUSH,
  6839  // which was documented to use FREAD/FWRITE, continues to work.
  6840  
  6841  // Defined by POSIX 1003.1; BSD default, but must be distinct from O_RDONLY.
  6842  
  6843  // Attempt to bypass buffer cache
  6844  
  6845  // Defined by POSIX 1003.1-2008; BSD default, but reserve for future use.
  6846  
  6847  /* #define O_UNUSED1	0x00400000   */ // Was O_BENEATH
  6848  
  6849  // XXX missing O_RSYNC.
  6850  
  6851  // The O_* flags used to have only F* names, which were used in the kernel
  6852  // and by fcntl.  We retain the F* names for the kernel f_flag field
  6853  // and for backward compatibility for fcntl.  These flags are deprecated.
  6854  
  6855  // Historically, we ran out of bits in f_flag (which was once a short).
  6856  // However, the flag bits not set in FMASK are only meaningful in the
  6857  // initial open syscall.  Those bits were thus given a
  6858  // different meaning for fcntl(2).
  6859  // Read ahead
  6860  
  6861  // Magic value that specify the use of the current working directory
  6862  // to determine the target of relative file paths in the openat() and
  6863  // similar syscalls.
  6864  
  6865  // Miscellaneous flags for the *at() syscalls.
  6866  /* #define AT_UNUSED1		0x1000 */ // Was AT_BENEATH
  6867  
  6868  // Constants used for fcntl(2)
  6869  
  6870  // command values
  6871  
  6872  // Seals (F_ADD_SEALS, F_GET_SEALS).
  6873  
  6874  // file descriptor flags (F_GETFD, F_SETFD)
  6875  
  6876  // record locking flags (F_GETLK, F_SETLK, F_SETLKW)
  6877  
  6878  // Advisory file segment locking data type -
  6879  // information passed to system by user
  6880  type Flock = struct {
  6881  	Fl_start     Off_t
  6882  	Fl_len       Off_t
  6883  	Fl_pid       Pid_t
  6884  	Fl_type      int16
  6885  	Fl_whence    int16
  6886  	Fl_sysid     int32
  6887  	F__ccgo_pad1 [4]byte
  6888  } /* fcntl.h:294:1 */
  6889  
  6890  // Old advisory file segment locking data type,
  6891  // before adding l_sysid.
  6892  type X__oflock = struct {
  6893  	Fl_start  Off_t
  6894  	Fl_len    Off_t
  6895  	Fl_pid    Pid_t
  6896  	Fl_type   int16
  6897  	Fl_whence int16
  6898  } /* fcntl.h:308:1 */
  6899  
  6900  // default memLevel
  6901  
  6902  // default i/o buffer size -- double this for output when reading (this and
  6903  //    twice this must be able to fit in an unsigned type)
  6904  
  6905  // gzip modes, also provide a little integrity check on the passed structure
  6906  
  6907  // values for gz_state how
  6908  
  6909  // internal gzip file state data structure
  6910  type Gz_state = struct {
  6911  	Fx        GzFile_s
  6912  	Fmode     int32
  6913  	Ffd       int32
  6914  	Fpath     uintptr
  6915  	Fsize     uint32
  6916  	Fwant     uint32
  6917  	Fin       uintptr
  6918  	Fout      uintptr
  6919  	Fdirect   int32
  6920  	Fhow      int32
  6921  	Fstart    Off_t
  6922  	Feof      int32
  6923  	Fpast     int32
  6924  	Flevel    int32
  6925  	Fstrategy int32
  6926  	Fskip     Off_t
  6927  	Fseek     int32
  6928  	Ferr      int32
  6929  	Fmsg      uintptr
  6930  	Fstrm     Z_stream
  6931  }                        /* gzguts.h:201:3 */
  6932  type Gz_statep = uintptr /* gzguts.h:202:22 */
  6933  
  6934  // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
  6935  //    value -- needed when comparing unsigned to z_off64_t, which is signed
  6936  //    (possible z_off64_t types off_t, off64_t, and long are all signed)
  6937  
  6938  // gzclose() is in a separate file so that it is linked in only if it is used.
  6939  //    That way the other gzclose functions can be used instead to avoid linking in
  6940  //    unneeded compression or decompression routines.
  6941  func Xgzclose(tls *libc.TLS, file GzFile) int32 { /* gzclose.c:11:13: */
  6942  	var state Gz_statep
  6943  
  6944  	if file == (uintptr(0)) {
  6945  		return -2
  6946  	}
  6947  	state = file
  6948  
  6949  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  6950  		return Xgzclose_r(tls, file)
  6951  	}
  6952  	return Xgzclose_w(tls, file)
  6953  }
  6954  
  6955  // Reset gzip file state
  6956  func gz_reset(tls *libc.TLS, state Gz_statep) { /* gzlib.c:75:12: */
  6957  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)  // no output data available
  6958  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // for reading ...
  6959  		(*Gz_state)(unsafe.Pointer(state)).Feof = 0    // not at end of file
  6960  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0   // have not read past end yet
  6961  		(*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK // look for gzip header
  6962  	}
  6963  	(*Gz_state)(unsafe.Pointer(state)).Fseek = 0                 // no seek request pending
  6964  	Xgz_error(tls, state, Z_OK, uintptr(0))                      // clear error
  6965  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos = int64(0)        // no uncompressed data yet
  6966  	(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) // no input data yet
  6967  }
  6968  
  6969  // Open a gzip file either by name or file descriptor.
  6970  func gz_open(tls *libc.TLS, path uintptr, fd int32, mode uintptr) GzFile { /* gzlib.c:91:14: */
  6971  	bp := tls.Alloc(16)
  6972  	defer tls.Free(16)
  6973  
  6974  	var state Gz_statep
  6975  	var len Z_size_t
  6976  	var oflag int32
  6977  	var cloexec int32 = 0
  6978  	var exclusive int32 = 0
  6979  
  6980  	// check input
  6981  	if path == (uintptr(0)) {
  6982  		return uintptr(0)
  6983  	}
  6984  
  6985  	// allocate gzFile structure to return
  6986  	state = libc.Xmalloc(tls, uint64(unsafe.Sizeof(Gz_state{})))
  6987  	if state == (uintptr(0)) {
  6988  		return uintptr(0)
  6989  	}
  6990  	(*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0)         // no buffers allocated yet
  6991  	(*Gz_state)(unsafe.Pointer(state)).Fwant = uint32(GZBUFSIZE) // requested buffer size
  6992  	(*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0)         // no error message yet
  6993  
  6994  	// interpret mode
  6995  	(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_NONE
  6996  	(*Gz_state)(unsafe.Pointer(state)).Flevel = -1
  6997  	(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_DEFAULT_STRATEGY
  6998  	(*Gz_state)(unsafe.Pointer(state)).Fdirect = 0
  6999  	for *(*int8)(unsafe.Pointer(mode)) != 0 {
  7000  		if (int32(*(*int8)(unsafe.Pointer(mode))) >= '0') && (int32(*(*int8)(unsafe.Pointer(mode))) <= '9') {
  7001  			(*Gz_state)(unsafe.Pointer(state)).Flevel = (int32(*(*int8)(unsafe.Pointer(mode))) - '0')
  7002  		} else {
  7003  			switch int32(*(*int8)(unsafe.Pointer(mode))) {
  7004  			case 'r':
  7005  				(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_READ
  7006  				break
  7007  				fallthrough
  7008  			case 'w':
  7009  				(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE
  7010  				break
  7011  				fallthrough
  7012  			case 'a':
  7013  				(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_APPEND
  7014  				break
  7015  				fallthrough
  7016  			case '+': // can't read and write at the same time
  7017  				libc.Xfree(tls, state)
  7018  				return uintptr(0)
  7019  				fallthrough
  7020  			case 'b': // ignore -- will request binary anyway
  7021  				break
  7022  				fallthrough
  7023  			case 'e':
  7024  				cloexec = 1
  7025  				break
  7026  				fallthrough
  7027  			case 'x':
  7028  				exclusive = 1
  7029  				break
  7030  				fallthrough
  7031  			case 'f':
  7032  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FILTERED
  7033  				break
  7034  				fallthrough
  7035  			case 'h':
  7036  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_HUFFMAN_ONLY
  7037  				break
  7038  				fallthrough
  7039  			case 'R':
  7040  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_RLE
  7041  				break
  7042  				fallthrough
  7043  			case 'F':
  7044  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FIXED
  7045  				break
  7046  				fallthrough
  7047  			case 'T':
  7048  				(*Gz_state)(unsafe.Pointer(state)).Fdirect = 1
  7049  				break
  7050  				fallthrough
  7051  			default: // could consider as an error, but just ignore
  7052  
  7053  			}
  7054  		}
  7055  		mode++
  7056  	}
  7057  
  7058  	// must provide an "r", "w", or "a"
  7059  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_NONE {
  7060  		libc.Xfree(tls, state)
  7061  		return uintptr(0)
  7062  	}
  7063  
  7064  	// can't force transparent read
  7065  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  7066  		if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 {
  7067  			libc.Xfree(tls, state)
  7068  			return uintptr(0)
  7069  		}
  7070  		(*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 // for empty file
  7071  	}
  7072  
  7073  	// save the path name for error messages
  7074  	len = libc.Xstrlen(tls, path)
  7075  	(*Gz_state)(unsafe.Pointer(state)).Fpath = libc.Xmalloc(tls, (len + uint64(1)))
  7076  	if (*Gz_state)(unsafe.Pointer(state)).Fpath == (uintptr(0)) {
  7077  		libc.Xfree(tls, state)
  7078  		return uintptr(0)
  7079  	}
  7080  	libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath, (len + uint64(1)), ts+76 /* "%s" */, libc.VaList(bp, path))
  7081  
  7082  	// compute the flags for open()
  7083  	oflag = ((func() int32 {
  7084  		if cloexec != 0 {
  7085  			return O_CLOEXEC
  7086  		}
  7087  		return 0
  7088  	}()) | (func() int32 {
  7089  		if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  7090  			return O_RDONLY
  7091  		}
  7092  		return (((O_WRONLY | O_CREAT) | (func() int32 {
  7093  			if exclusive != 0 {
  7094  				return O_EXCL
  7095  			}
  7096  			return 0
  7097  		}())) | (func() int32 {
  7098  			if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_WRITE {
  7099  				return O_TRUNC
  7100  			}
  7101  			return O_APPEND
  7102  		}()))
  7103  	}()))
  7104  
  7105  	// open the file with the appropriate flags (or just use fd)
  7106  	(*Gz_state)(unsafe.Pointer(state)).Ffd = func() int32 {
  7107  		if fd > -1 {
  7108  			return fd
  7109  		}
  7110  		return libc.Xopen(tls, path, oflag, libc.VaList(bp+8, 0666))
  7111  	}()
  7112  	if (*Gz_state)(unsafe.Pointer(state)).Ffd == -1 {
  7113  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)
  7114  		libc.Xfree(tls, state)
  7115  		return uintptr(0)
  7116  	}
  7117  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_APPEND {
  7118  		libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_END) // so gzoffset() is correct
  7119  		(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE                          // simplify later checks
  7120  	}
  7121  
  7122  	// save the current position for rewinding (only if reading)
  7123  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  7124  		(*Gz_state)(unsafe.Pointer(state)).Fstart = libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR)
  7125  		if (*Gz_state)(unsafe.Pointer(state)).Fstart == int64(-1) {
  7126  			(*Gz_state)(unsafe.Pointer(state)).Fstart = int64(0)
  7127  		}
  7128  	}
  7129  
  7130  	// initialize stream
  7131  	gz_reset(tls, state)
  7132  
  7133  	// return stream
  7134  	return state
  7135  }
  7136  
  7137  // -- see zlib.h --
  7138  func Xgzopen(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:270:16: */
  7139  	return gz_open(tls, path, -1, mode)
  7140  }
  7141  
  7142  // -- see zlib.h --
  7143  func Xgzopen64(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:278:16: */
  7144  	return gz_open(tls, path, -1, mode)
  7145  }
  7146  
  7147  // -- see zlib.h --
  7148  func Xgzdopen(tls *libc.TLS, fd int32, mode uintptr) GzFile { /* gzlib.c:286:16: */
  7149  	bp := tls.Alloc(8)
  7150  	defer tls.Free(8)
  7151  
  7152  	var path uintptr // identifier for error messages
  7153  	var gz GzFile
  7154  
  7155  	if (fd == -1) || ((libc.AssignUintptr(&path, libc.Xmalloc(tls, (uint64(7)+(uint64(3)*uint64(unsafe.Sizeof(int32(0)))))))) == (uintptr(0))) {
  7156  		return uintptr(0)
  7157  	}
  7158  	libc.Xsnprintf(tls, path, (uint64(7) + (uint64(3) * uint64(unsafe.Sizeof(int32(0))))), ts+79 /* "<fd:%d>" */, libc.VaList(bp, fd))
  7159  	gz = gz_open(tls, path, fd, mode)
  7160  	libc.Xfree(tls, path)
  7161  	return gz
  7162  }
  7163  
  7164  // -- see zlib.h --
  7165  
  7166  // -- see zlib.h --
  7167  func Xgzbuffer(tls *libc.TLS, file GzFile, size uint32) int32 { /* gzlib.c:316:13: */
  7168  	var state Gz_statep
  7169  
  7170  	// get internal structure and check integrity
  7171  	if file == (uintptr(0)) {
  7172  		return -1
  7173  	}
  7174  	state = file
  7175  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  7176  		return -1
  7177  	}
  7178  
  7179  	// make sure we haven't already allocated memory
  7180  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != uint32(0) {
  7181  		return -1
  7182  	}
  7183  
  7184  	// check and set requested size
  7185  	if (size << 1) < size {
  7186  		return -1
  7187  	} // need to be able to double it
  7188  	if size < uint32(2) {
  7189  		size = uint32(2)
  7190  	} // need two bytes to check magic header
  7191  	(*Gz_state)(unsafe.Pointer(state)).Fwant = size
  7192  	return 0
  7193  }
  7194  
  7195  // -- see zlib.h --
  7196  func Xgzrewind(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:343:13: */
  7197  	var state Gz_statep
  7198  
  7199  	// get internal structure
  7200  	if file == (uintptr(0)) {
  7201  		return -1
  7202  	}
  7203  	state = file
  7204  
  7205  	// check that we're reading and that there's no error
  7206  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  7207  		return -1
  7208  	}
  7209  
  7210  	// back up and start over
  7211  	if libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fstart, SEEK_SET) == int64(-1) {
  7212  		return -1
  7213  	}
  7214  	gz_reset(tls, state)
  7215  	return 0
  7216  }
  7217  
  7218  // -- see zlib.h --
  7219  func Xgzseek64(tls *libc.TLS, file GzFile, offset Off_t, whence int32) Off_t { /* gzlib.c:366:19: */
  7220  	var n uint32
  7221  	var ret Off_t
  7222  	var state Gz_statep
  7223  
  7224  	// get internal structure and check integrity
  7225  	if file == (uintptr(0)) {
  7226  		return int64(-1)
  7227  	}
  7228  	state = file
  7229  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  7230  		return int64(-1)
  7231  	}
  7232  
  7233  	// check that there's no error
  7234  	if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) {
  7235  		return int64(-1)
  7236  	}
  7237  
  7238  	// can only seek from start or relative to current position
  7239  	if (whence != SEEK_SET) && (whence != SEEK_CUR) {
  7240  		return int64(-1)
  7241  	}
  7242  
  7243  	// normalize offset to a SEEK_CUR specification
  7244  	if whence == SEEK_SET {
  7245  		offset = offset - ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos)
  7246  	} else if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  7247  		offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fskip)
  7248  	}
  7249  	(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  7250  
  7251  	// if within raw area while reading, just go there
  7252  	if (((*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1)) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset) >= int64(0)) {
  7253  		ret = libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (offset - Off_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)), SEEK_CUR)
  7254  		if ret == int64(-1) {
  7255  			return int64(-1)
  7256  		}
  7257  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  7258  		(*Gz_state)(unsafe.Pointer(state)).Feof = 0
  7259  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  7260  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  7261  		Xgz_error(tls, state, Z_OK, uintptr(0))
  7262  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0)
  7263  		*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (offset)
  7264  		return (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos
  7265  	}
  7266  
  7267  	// calculate skip amount, rewinding if needed for back seek when reading
  7268  	if offset < int64(0) {
  7269  		if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { // writing -- can't go backwards
  7270  			return int64(-1)
  7271  		}
  7272  		offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos)
  7273  		if offset < int64(0) { // before start of file!
  7274  			return int64(-1)
  7275  		}
  7276  		if Xgzrewind(tls, file) == -1 { // rewind, then skip to offset
  7277  			return int64(-1)
  7278  		}
  7279  	}
  7280  
  7281  	// if reading, skip what's in output buffer (one less gzgetc() check)
  7282  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  7283  		if ((uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > offset) {
  7284  			n = uint32(offset)
  7285  		} else {
  7286  			n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  7287  		}
  7288  		*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n)
  7289  		*(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(n))
  7290  		*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n))
  7291  		offset = offset - (Off_t(n))
  7292  	}
  7293  
  7294  	// request skip (if not zero)
  7295  	if offset != 0 {
  7296  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 1
  7297  		(*Gz_state)(unsafe.Pointer(state)).Fskip = offset
  7298  	}
  7299  	return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset)
  7300  }
  7301  
  7302  // -- see zlib.h --
  7303  func Xgzseek(tls *libc.TLS, file GzFile, offset Off_t, whence int32) Off_t { /* gzlib.c:443:17: */
  7304  	var ret Off_t
  7305  
  7306  	ret = Xgzseek64(tls, file, offset, whence)
  7307  	if ret == ret {
  7308  		return ret
  7309  	}
  7310  	return int64(-1)
  7311  }
  7312  
  7313  // -- see zlib.h --
  7314  func Xgztell64(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:455:19: */
  7315  	var state Gz_statep
  7316  
  7317  	// get internal structure and check integrity
  7318  	if file == (uintptr(0)) {
  7319  		return int64(-1)
  7320  	}
  7321  	state = file
  7322  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  7323  		return int64(-1)
  7324  	}
  7325  
  7326  	// return position
  7327  	return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + (func() int64 {
  7328  		if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  7329  			return (*Gz_state)(unsafe.Pointer(state)).Fskip
  7330  		}
  7331  		return int64(0)
  7332  	}()))
  7333  }
  7334  
  7335  // -- see zlib.h --
  7336  func Xgztell(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:472:17: */
  7337  	var ret Off_t
  7338  
  7339  	ret = Xgztell64(tls, file)
  7340  	if ret == ret {
  7341  		return ret
  7342  	}
  7343  	return int64(-1)
  7344  }
  7345  
  7346  // -- see zlib.h --
  7347  func Xgzoffset64(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:482:19: */
  7348  	var offset Off_t
  7349  	var state Gz_statep
  7350  
  7351  	// get internal structure and check integrity
  7352  	if file == (uintptr(0)) {
  7353  		return int64(-1)
  7354  	}
  7355  	state = file
  7356  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  7357  		return int64(-1)
  7358  	}
  7359  
  7360  	// compute and return effective offset in file
  7361  	offset = libc.Xlseek(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR)
  7362  	if offset == int64(-1) {
  7363  		return int64(-1)
  7364  	}
  7365  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // reading
  7366  		offset = offset - (Off_t((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in))
  7367  	} // don't count buffered input
  7368  	return offset
  7369  }
  7370  
  7371  // -- see zlib.h --
  7372  func Xgzoffset(tls *libc.TLS, file GzFile) Off_t { /* gzlib.c:505:17: */
  7373  	var ret Off_t
  7374  
  7375  	ret = Xgzoffset64(tls, file)
  7376  	if ret == ret {
  7377  		return ret
  7378  	}
  7379  	return int64(-1)
  7380  }
  7381  
  7382  // -- see zlib.h --
  7383  func Xgzeof(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:515:13: */
  7384  	var state Gz_statep
  7385  
  7386  	// get internal structure and check integrity
  7387  	if file == (uintptr(0)) {
  7388  		return 0
  7389  	}
  7390  	state = file
  7391  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  7392  		return 0
  7393  	}
  7394  
  7395  	// return end-of-file state
  7396  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  7397  		return (*Gz_state)(unsafe.Pointer(state)).Fpast
  7398  	}
  7399  	return 0
  7400  }
  7401  
  7402  // -- see zlib.h --
  7403  func Xgzerror(tls *libc.TLS, file GzFile, errnum uintptr) uintptr { /* gzlib.c:532:12: */
  7404  	var state Gz_statep
  7405  
  7406  	// get internal structure and check integrity
  7407  	if file == (uintptr(0)) {
  7408  		return uintptr(0)
  7409  	}
  7410  	state = file
  7411  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  7412  		return uintptr(0)
  7413  	}
  7414  
  7415  	// return error information
  7416  	if errnum != (uintptr(0)) {
  7417  		*(*int32)(unsafe.Pointer(errnum)) = (*Gz_state)(unsafe.Pointer(state)).Ferr
  7418  	}
  7419  	if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-4) {
  7420  		return ts + 87 /* "out of memory" */
  7421  	}
  7422  	return func() uintptr {
  7423  		if (*Gz_state)(unsafe.Pointer(state)).Fmsg == (uintptr(0)) {
  7424  			return ts + 101 /* "" */
  7425  		}
  7426  		return (*Gz_state)(unsafe.Pointer(state)).Fmsg
  7427  	}()
  7428  }
  7429  
  7430  // -- see zlib.h --
  7431  func Xgzclearerr(tls *libc.TLS, file GzFile) { /* gzlib.c:553:14: */
  7432  	var state Gz_statep
  7433  
  7434  	// get internal structure and check integrity
  7435  	if file == (uintptr(0)) {
  7436  		return
  7437  	}
  7438  	state = file
  7439  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  7440  		return
  7441  	}
  7442  
  7443  	// clear error and end-of-file
  7444  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  7445  		(*Gz_state)(unsafe.Pointer(state)).Feof = 0
  7446  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  7447  	}
  7448  	Xgz_error(tls, state, Z_OK, uintptr(0))
  7449  }
  7450  
  7451  // Create an error message in allocated memory and set state->err and
  7452  //    state->msg accordingly.  Free any previous error message already there.  Do
  7453  //    not try to free or allocate space if the error is Z_MEM_ERROR (out of
  7454  //    memory).  Simply save the error message as a static string.  If there is an
  7455  //    allocation failure constructing the error message, then convert the error to
  7456  //    out of memory.
  7457  func Xgz_error(tls *libc.TLS, state Gz_statep, err int32, msg uintptr) { /* gzlib.c:579:20: */
  7458  	bp := tls.Alloc(24)
  7459  	defer tls.Free(24)
  7460  
  7461  	// free previously allocated message and clear
  7462  	if (*Gz_state)(unsafe.Pointer(state)).Fmsg != (uintptr(0)) {
  7463  		if (*Gz_state)(unsafe.Pointer(state)).Ferr != (-4) {
  7464  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg)
  7465  		}
  7466  		(*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0)
  7467  	}
  7468  
  7469  	// if fatal, set state->x.have to 0 so that the gzgetc() macro fails
  7470  	if (err != Z_OK) && (err != (-5)) {
  7471  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  7472  	}
  7473  
  7474  	// set error code, and if no message, then done
  7475  	(*Gz_state)(unsafe.Pointer(state)).Ferr = err
  7476  	if msg == (uintptr(0)) {
  7477  		return
  7478  	}
  7479  
  7480  	// for an out of memory error, return literal string when requested
  7481  	if err == (-4) {
  7482  		return
  7483  	}
  7484  
  7485  	// construct error message with path
  7486  	if (libc.AssignPtrUintptr(state+112 /* &.msg */, libc.Xmalloc(tls, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)+libc.Xstrlen(tls, msg))+uint64(3))))) == (uintptr(0)) {
  7487  		(*Gz_state)(unsafe.Pointer(state)).Ferr = -4
  7488  		return
  7489  	}
  7490  	libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) + libc.Xstrlen(tls, msg)) + uint64(3)),
  7491  		ts+102 /* "%s%s%s" */, libc.VaList(bp, (*Gz_state)(unsafe.Pointer(state)).Fpath, ts+109 /* ": " */, msg))
  7492  }
  7493  
  7494  // Use read() to load a buffer -- return -1 on error, otherwise 0.  Read from
  7495  //    state->fd, and update state->eof, state->err, and state->msg as appropriate.
  7496  //    This function needs to loop on read(), since read() is not guaranteed to
  7497  //    read the number of bytes requested, depending on the type of descriptor.
  7498  func gz_load(tls *libc.TLS, state Gz_statep, buf uintptr, len uint32, have uintptr) int32 { /* gzread.c:21:11: */
  7499  	var ret int32
  7500  	var get uint32
  7501  	var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1))
  7502  
  7503  	*(*uint32)(unsafe.Pointer(have)) = uint32(0)
  7504  	for ok := true; ok; ok = (*(*uint32)(unsafe.Pointer(have)) < len) {
  7505  		get = (len - *(*uint32)(unsafe.Pointer(have)))
  7506  		if get > max {
  7507  			get = max
  7508  		}
  7509  		ret = int32(libc.Xread(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (buf + uintptr(*(*uint32)(unsafe.Pointer(have)))), uint64(get)))
  7510  		if ret <= 0 {
  7511  			break
  7512  		}
  7513  		*(*uint32)(unsafe.Pointer(have)) += (uint32(ret))
  7514  	}
  7515  	if ret < 0 {
  7516  		Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__error(tls)))))
  7517  		return -1
  7518  	}
  7519  	if ret == 0 {
  7520  		(*Gz_state)(unsafe.Pointer(state)).Feof = 1
  7521  	}
  7522  	return 0
  7523  }
  7524  
  7525  // Load up input buffer and set eof flag if last data loaded -- return -1 on
  7526  //    error, 0 otherwise.  Note that the eof flag is set when the end of the input
  7527  //    file is reached, even though there may be unused data in the buffer.  Once
  7528  //    that data has been used, no more attempts will be made to read the file.
  7529  //    If strm->avail_in != 0, then the current data is moved to the beginning of
  7530  //    the input buffer, and then the remainder of the buffer is loaded with the
  7531  //    available data from the input file.
  7532  func gz_avail(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:56:11: */
  7533  	bp := tls.Alloc(4)
  7534  	defer tls.Free(4)
  7535  
  7536  	// var got uint32 at bp, 4
  7537  
  7538  	var strm Z_streamp = (state + 120 /* &.strm */)
  7539  
  7540  	if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) {
  7541  		return -1
  7542  	}
  7543  	if (*Gz_state)(unsafe.Pointer(state)).Feof == 0 {
  7544  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { // copy what's there to the start
  7545  			var p uintptr = (*Gz_state)(unsafe.Pointer(state)).Fin
  7546  			var q uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
  7547  			var n uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  7548  			for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  7549  				*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1)))
  7550  			}
  7551  		}
  7552  		if gz_load(tls, state, ((*Gz_state)(unsafe.Pointer(state)).Fin+uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in)),
  7553  			((*Gz_state)(unsafe.Pointer(state)).Fsize-(*Z_stream)(unsafe.Pointer(strm)).Favail_in), bp /* &got */) == -1 {
  7554  			return -1
  7555  		}
  7556  		*(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) += (*(*uint32)(unsafe.Pointer(bp /* got */)))
  7557  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  7558  	}
  7559  	return 0
  7560  }
  7561  
  7562  // Look for gzip header, set up for inflate or copy.  state->x.have must be 0.
  7563  //    If this is the first time in, allocate required memory.  state->how will be
  7564  //    left unchanged if there is no more input data available, will be set to COPY
  7565  //    if there is no gzip header and direct copying will be performed, or it will
  7566  //    be set to GZIP for decompression.  If direct copying, then leftover input
  7567  //    data from the input buffer will be copied to the output buffer.  In that
  7568  //    case, all further file reads will be directly to either the output buffer or
  7569  //    a user buffer.  If decompressing, the inflate state will be initialized.
  7570  //    gz_look() will return 0 on success or -1 on failure.
  7571  func gz_look(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:91:11: */
  7572  	var strm Z_streamp = (state + 120 /* &.strm */)
  7573  
  7574  	// allocate read buffers and inflate memory
  7575  	if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) {
  7576  		// allocate buffers
  7577  		(*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant))
  7578  		(*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, (uint64((*Gz_state)(unsafe.Pointer(state)).Fwant << 1)))
  7579  		if ((*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0))) || ((*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0))) {
  7580  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  7581  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  7582  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  7583  			return -1
  7584  		}
  7585  		(*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant
  7586  
  7587  		// allocate inflate memory
  7588  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzalloc = Alloc_func(Z_NULL)
  7589  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzfree = Free_func(Z_NULL)
  7590  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fopaque = Voidpf(Z_NULL)
  7591  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0)
  7592  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = uintptr(Z_NULL)
  7593  		if (XinflateInit2_(tls, (state+120 /* &.strm */), (15+16), ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) != Z_OK) { // gunzip
  7594  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  7595  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  7596  			(*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0)
  7597  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  7598  			return -1
  7599  		}
  7600  	}
  7601  
  7602  	// get at least the magic bytes in the input buffer
  7603  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in < UInt(2) {
  7604  		if gz_avail(tls, state) == -1 {
  7605  			return -1
  7606  		}
  7607  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
  7608  			return 0
  7609  		}
  7610  	}
  7611  
  7612  	// look for gzip magic bytes -- if there, do gzip decoding (note: there is
  7613  	//        a logical dilemma here when considering the case of a partially written
  7614  	//        gzip file, to wit, if a single 31 byte is written, then we cannot tell
  7615  	//        whether this is a single-byte file, or just a partially written gzip
  7616  	//        file -- for here we assume that if a gzip file is being written, then
  7617  	//        the header will be written in a single operation, so that reading a
  7618  	//        single byte is sufficient indication that it is not a gzip file)
  7619  	if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in > UInt(1)) && (int32(*(*Bytef)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fnext_in))) == 31)) && (int32(*(*Bytef)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fnext_in + 1))) == 139) {
  7620  		XinflateReset(tls, strm)
  7621  		(*Gz_state)(unsafe.Pointer(state)).Fhow = /* GZIP */ 2
  7622  		(*Gz_state)(unsafe.Pointer(state)).Fdirect = 0
  7623  		return 0
  7624  	}
  7625  
  7626  	// no gzip header -- if we were decoding gzip before, then this is trailing
  7627  	//        garbage.  Ignore the trailing garbage and finish.
  7628  	if (*Gz_state)(unsafe.Pointer(state)).Fdirect == 0 {
  7629  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0)
  7630  		(*Gz_state)(unsafe.Pointer(state)).Feof = 1
  7631  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  7632  		return 0
  7633  	}
  7634  
  7635  	// doing raw i/o, copy any leftover input to output -- this assumes that
  7636  	//        the output buffer is larger than the input buffer, which also assures
  7637  	//        space for gzungetc()
  7638  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout
  7639  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 {
  7640  		libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64((*Z_stream)(unsafe.Pointer(strm)).Favail_in))
  7641  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  7642  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0)
  7643  	}
  7644  	(*Gz_state)(unsafe.Pointer(state)).Fhow = COPY1
  7645  	(*Gz_state)(unsafe.Pointer(state)).Fdirect = 1
  7646  	return 0
  7647  }
  7648  
  7649  // Decompress from input to the provided next_out and avail_out in the state.
  7650  //    On return, state->x.have and state->x.next point to the just decompressed
  7651  //    data.  If the gzip stream completes, state->how is reset to LOOK to look for
  7652  //    the next gzip stream or raw data, once state->x.have is depleted.  Returns 0
  7653  //    on success, -1 on failure.
  7654  func gz_decomp(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:175:11: */
  7655  	var ret int32 = Z_OK
  7656  	var had uint32
  7657  	var strm Z_streamp = (state + 120 /* &.strm */)
  7658  
  7659  	// fill output buffer up to end of deflate stream
  7660  	had = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
  7661  	for ok := true; ok; ok = (((*Z_stream)(unsafe.Pointer(strm)).Favail_out != 0) && (ret != Z_STREAM_END)) {
  7662  		// get more input for inflate()
  7663  		if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && (gz_avail(tls, state) == -1) {
  7664  			return -1
  7665  		}
  7666  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
  7667  			Xgz_error(tls, state, -5, ts+112 /* "unexpected end o..." */)
  7668  			break
  7669  		}
  7670  
  7671  		// decompress and handle errors
  7672  		ret = Xinflate(tls, strm, Z_NO_FLUSH)
  7673  		if (ret == (-2)) || (ret == Z_NEED_DICT) {
  7674  			Xgz_error(tls, state, -2,
  7675  				ts+135 /* "internal error: ..." */)
  7676  			return -1
  7677  		}
  7678  		if ret == (-4) {
  7679  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  7680  			return -1
  7681  		}
  7682  		if ret == (-3) { // deflate stream invalid
  7683  			Xgz_error(tls, state, -3,
  7684  				func() uintptr {
  7685  					if (*Z_stream)(unsafe.Pointer(strm)).Fmsg == (uintptr(0)) {
  7686  						return ts + 174 /* "compressed data ..." */
  7687  					}
  7688  					return (*Z_stream)(unsafe.Pointer(strm)).Fmsg
  7689  				}())
  7690  			return -1
  7691  		}
  7692  	}
  7693  
  7694  	// update available output
  7695  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (had - (*Z_stream)(unsafe.Pointer(strm)).Favail_out)
  7696  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave))
  7697  
  7698  	// if the gzip stream completed successfully, look for another
  7699  	if ret == Z_STREAM_END {
  7700  		(*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK
  7701  	}
  7702  
  7703  	// good decompression
  7704  	return 0
  7705  }
  7706  
  7707  // Fetch data and put it in the output buffer.  Assumes state->x.have is 0.
  7708  //    Data is either copied from the input file or decompressed from the input
  7709  //    file depending on state->how.  If state->how is LOOK, then a gzip header is
  7710  //    looked for to determine whether to copy or decompress.  Returns -1 on error,
  7711  //    otherwise 0.  gz_fetch() will leave state->how as COPY or GZIP unless the
  7712  //    end of the input file has been reached and all data has been processed.
  7713  func gz_fetch(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:229:11: */
  7714  	var strm Z_streamp = (state + 120 /* &.strm */)
  7715  
  7716  	for ok := true; ok; ok = (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) && (!((*Gz_state)(unsafe.Pointer(state)).Feof != 0) || ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0))) {
  7717  		switch (*Gz_state)(unsafe.Pointer(state)).Fhow {
  7718  		case LOOK: // -> LOOK, COPY (only if never GZIP), or GZIP
  7719  			if gz_look(tls, state) == -1 {
  7720  				return -1
  7721  			}
  7722  			if (*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK {
  7723  				return 0
  7724  			}
  7725  			break
  7726  		case COPY1: // -> COPY
  7727  			if gz_load(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fout, ((*Gz_state)(unsafe.Pointer(state)).Fsize<<1), (state /* &.x */ /* &.have */)) ==
  7728  				-1 {
  7729  				return -1
  7730  			}
  7731  			(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout
  7732  			return 0
  7733  		case /* GZIP */ 2: // -> GZIP or LOOK (if end of gzip stream)
  7734  			(*Z_stream)(unsafe.Pointer(strm)).Favail_out = ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)
  7735  			(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout
  7736  			if gz_decomp(tls, state) == -1 {
  7737  				return -1
  7738  			}
  7739  		}
  7740  	}
  7741  	return 0
  7742  }
  7743  
  7744  // Skip len uncompressed bytes of output.  Return -1 on error, 0 on success.
  7745  func gz_skip(tls *libc.TLS, state Gz_statep, len Off_t) int32 { /* gzread.c:259:11: */
  7746  	var n uint32
  7747  
  7748  	// skip over len bytes or reach end-of-file, whichever comes first
  7749  	for len != 0 {
  7750  		// skip over whatever is in output buffer
  7751  		if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 {
  7752  			if ((uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > len) {
  7753  				n = uint32(len)
  7754  			} else {
  7755  				n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  7756  			}
  7757  			*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n)
  7758  			*(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(n))
  7759  			*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n))
  7760  			len = len - (Off_t(n))
  7761  		} else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) {
  7762  			break
  7763  		} else {
  7764  			// get more output, looking for header if required
  7765  			if gz_fetch(tls, state) == -1 {
  7766  				return -1
  7767  			}
  7768  		}
  7769  	}
  7770  	return 0
  7771  }
  7772  
  7773  // Read len bytes into buf from file, or less than len up to the end of the
  7774  //    input.  Return the number of bytes read.  If zero is returned, either the
  7775  //    end of file was reached, or there was an error.  state->err must be
  7776  //    consulted in that case to determine which.
  7777  func gz_read(tls *libc.TLS, state Gz_statep, buf Voidp, len Z_size_t) Z_size_t { /* gzread.c:294:16: */
  7778  	bp := tls.Alloc(4)
  7779  	defer tls.Free(4)
  7780  
  7781  	var got Z_size_t
  7782  	// var n uint32 at bp, 4
  7783  
  7784  	// if len is zero, avoid unnecessary operations
  7785  	if len == uint64(0) {
  7786  		return uint64(0)
  7787  	}
  7788  
  7789  	// process a skip request
  7790  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  7791  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  7792  		if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  7793  			return uint64(0)
  7794  		}
  7795  	}
  7796  
  7797  	// get len bytes to buf, or less than len if at the end
  7798  	got = uint64(0)
  7799  	for ok := true; ok; ok = len != 0 {
  7800  		// set n to the maximum amount of len that fits in an unsigned int
  7801  		*(*uint32)(unsafe.Pointer(bp /* n */)) = libc.Uint32FromInt32(-1)
  7802  		if Z_size_t(*(*uint32)(unsafe.Pointer(bp /* n */))) > len {
  7803  			*(*uint32)(unsafe.Pointer(bp /* n */)) = uint32(len)
  7804  		}
  7805  
  7806  		// first just try copying data from the output buffer
  7807  		if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 {
  7808  			if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave < *(*uint32)(unsafe.Pointer(bp /* n */)) {
  7809  				*(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  7810  			}
  7811  			libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(*(*uint32)(unsafe.Pointer(bp /* n */))))
  7812  			*(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(*(*uint32)(unsafe.Pointer(bp /* n */))))
  7813  			*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (*(*uint32)(unsafe.Pointer(bp /* n */)))
  7814  		} else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) {
  7815  			(*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // tried to read past end
  7816  			break
  7817  		} else if ((*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK) || (*(*uint32)(unsafe.Pointer(bp /* n */)) < ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)) {
  7818  			// get more output, looking for header if required
  7819  			if gz_fetch(tls, state) == -1 {
  7820  				return uint64(0)
  7821  			}
  7822  			continue // no progress yet -- go back to copy above
  7823  			// the copy above assures that we will leave with space in the
  7824  			//                output buffer, allowing at least one gzungetc() to succeed
  7825  		} else if (*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1 { // read directly
  7826  			if gz_load(tls, state, buf, *(*uint32)(unsafe.Pointer(bp /* n */)), bp /* &n */) == -1 {
  7827  				return uint64(0)
  7828  			}
  7829  		} else { // state->how == GZIP
  7830  			(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_out = *(*uint32)(unsafe.Pointer(bp /* n */))
  7831  			(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_out = buf
  7832  			if gz_decomp(tls, state) == -1 {
  7833  				return uint64(0)
  7834  			}
  7835  			*(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  7836  			(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  7837  		}
  7838  
  7839  		// update progress
  7840  		len = len - (Z_size_t(*(*uint32)(unsafe.Pointer(bp /* n */))))
  7841  		buf = (buf + uintptr(*(*uint32)(unsafe.Pointer(bp /* n */))))
  7842  		got = got + (Z_size_t(*(*uint32)(unsafe.Pointer(bp /* n */))))
  7843  		*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(*(*uint32)(unsafe.Pointer(bp /* n */))))
  7844  	}
  7845  
  7846  	// return number of bytes read into user buffer
  7847  	return got
  7848  }
  7849  
  7850  // -- see zlib.h --
  7851  func Xgzread(tls *libc.TLS, file GzFile, buf Voidp, len uint32) int32 { /* gzread.c:375:13: */
  7852  	var state Gz_statep
  7853  
  7854  	// get internal structure
  7855  	if file == (uintptr(0)) {
  7856  		return -1
  7857  	}
  7858  	state = file
  7859  
  7860  	// check that we're reading and that there's no (serious) error
  7861  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  7862  		return -1
  7863  	}
  7864  
  7865  	// since an int is returned, make sure len fits in one, otherwise return
  7866  	//        with an error (this avoids a flaw in the interface)
  7867  	if int32(len) < 0 {
  7868  		Xgz_error(tls, state, -2, ts+196 /* "request does not..." */)
  7869  		return -1
  7870  	}
  7871  
  7872  	// read len or fewer bytes to buf
  7873  	len = uint32(gz_read(tls, state, buf, uint64(len)))
  7874  
  7875  	// check for an error
  7876  	if ((len == uint32(0)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) {
  7877  		return -1
  7878  	}
  7879  
  7880  	// return the number of bytes read (this is assured to fit in an int)
  7881  	return int32(len)
  7882  }
  7883  
  7884  // -- see zlib.h --
  7885  func Xgzfread(tls *libc.TLS, buf Voidp, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzread.c:411:18: */
  7886  	var len Z_size_t
  7887  	var state Gz_statep
  7888  
  7889  	// get internal structure
  7890  	if file == (uintptr(0)) {
  7891  		return uint64(0)
  7892  	}
  7893  	state = file
  7894  
  7895  	// check that we're reading and that there's no (serious) error
  7896  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  7897  		return uint64(0)
  7898  	}
  7899  
  7900  	// compute bytes to read -- error on overflow
  7901  	len = (nitems * size)
  7902  	if (size != 0) && ((len / size) != nitems) {
  7903  		Xgz_error(tls, state, -2, ts+227 /* "request does not..." */)
  7904  		return uint64(0)
  7905  	}
  7906  
  7907  	// read len or fewer bytes to buf, return the number of full items read
  7908  	if len != 0 {
  7909  		return (gz_read(tls, state, buf, len) / size)
  7910  	}
  7911  	return uint64(0)
  7912  }
  7913  
  7914  // -- see zlib.h --
  7915  func Xgzgetc(tls *libc.TLS, file GzFile) int32 { /* gzread.c:447:13: */
  7916  	bp := tls.Alloc(1)
  7917  	defer tls.Free(1)
  7918  
  7919  	var ret int32
  7920  	// var buf [1]uint8 at bp, 1
  7921  
  7922  	var state Gz_statep
  7923  
  7924  	// get internal structure
  7925  	if file == (uintptr(0)) {
  7926  		return -1
  7927  	}
  7928  	state = file
  7929  
  7930  	// check that we're reading and that there's no (serious) error
  7931  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  7932  		return -1
  7933  	}
  7934  
  7935  	// try output buffer (no need to check for skip request)
  7936  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 {
  7937  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave--
  7938  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++
  7939  		return int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext), 1))))
  7940  	}
  7941  
  7942  	// nothing there -- try gz_read()
  7943  	ret = int32(gz_read(tls, state, bp /* &buf[0] */, uint64(1)))
  7944  	if ret < 1 {
  7945  		return -1
  7946  	}
  7947  	return int32(*(*uint8)(unsafe.Pointer(bp /* &buf[0] */)))
  7948  }
  7949  
  7950  func Xgzgetc_(tls *libc.TLS, file GzFile) int32 { /* gzread.c:476:13: */
  7951  	return Xgzgetc(tls, file)
  7952  }
  7953  
  7954  // -- see zlib.h --
  7955  func Xgzungetc(tls *libc.TLS, c int32, file GzFile) int32 { /* gzread.c:483:13: */
  7956  	var state Gz_statep
  7957  
  7958  	// get internal structure
  7959  	if file == (uintptr(0)) {
  7960  		return -1
  7961  	}
  7962  	state = file
  7963  
  7964  	// check that we're reading and that there's no (serious) error
  7965  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  7966  		return -1
  7967  	}
  7968  
  7969  	// process a skip request
  7970  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  7971  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  7972  		if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  7973  			return -1
  7974  		}
  7975  	}
  7976  
  7977  	// can't push EOF
  7978  	if c < 0 {
  7979  		return -1
  7980  	}
  7981  
  7982  	// if output buffer empty, put byte at end (allows more pushing)
  7983  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) {
  7984  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(1)
  7985  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1))) - uintptr(1))
  7986  		*(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c)
  7987  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos--
  7988  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  7989  		return c
  7990  	}
  7991  
  7992  	// if no room, give up (must have already done a gzungetc())
  7993  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1) {
  7994  		Xgz_error(tls, state, -3, ts+260 /* "out of room to p..." */)
  7995  		return -1
  7996  	}
  7997  
  7998  	// slide output data if needed and insert byte before existing data
  7999  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext == (*Gz_state)(unsafe.Pointer(state)).Fout {
  8000  		var src uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave))
  8001  		var dest uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)))
  8002  		for src > (*Gz_state)(unsafe.Pointer(state)).Fout {
  8003  			*(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&dest, 1))) = *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&src, 1)))
  8004  		}
  8005  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = dest
  8006  	}
  8007  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave++
  8008  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext--
  8009  	*(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c)
  8010  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos--
  8011  	(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  8012  	return c
  8013  }
  8014  
  8015  // -- see zlib.h --
  8016  func Xgzgets(tls *libc.TLS, file GzFile, buf uintptr, len int32) uintptr { /* gzread.c:543:6: */
  8017  	var left uint32
  8018  	var n uint32
  8019  	var str uintptr
  8020  	var eol uintptr
  8021  	var state Gz_statep
  8022  
  8023  	// check parameters and get internal structure
  8024  	if ((file == (uintptr(0))) || (buf == (uintptr(0)))) || (len < 1) {
  8025  		return uintptr(0)
  8026  	}
  8027  	state = file
  8028  
  8029  	// check that we're reading and that there's no (serious) error
  8030  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  8031  		return uintptr(0)
  8032  	}
  8033  
  8034  	// process a skip request
  8035  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8036  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8037  		if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  8038  			return uintptr(0)
  8039  		}
  8040  	}
  8041  
  8042  	// copy output bytes up to new line or len - 1, whichever comes first --
  8043  	//        append a terminating zero to the string (we don't check for a zero in
  8044  	//        the contents, let the user worry about that)
  8045  	str = buf
  8046  	left = (uint32(len) - uint32(1))
  8047  	if left != 0 {
  8048  		for ok := true; ok; ok = ((left != 0) && (eol == (uintptr(0)))) {
  8049  			// assure that something is in the output buffer
  8050  			if ((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) && (gz_fetch(tls, state) == -1) {
  8051  				return uintptr(0)
  8052  			} // error
  8053  			if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { // end of file
  8054  				(*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // read past end
  8055  				break                                        // return what we have
  8056  			}
  8057  
  8058  			// look for end-of-line in current output buffer
  8059  			if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave > left {
  8060  				n = left
  8061  			} else {
  8062  				n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  8063  			}
  8064  			eol = libc.Xmemchr(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, '\n', uint64(n))
  8065  			if eol != (uintptr(0)) {
  8066  				n = ((uint32((int64(eol) - int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1)) + uint32(1))
  8067  			}
  8068  
  8069  			// copy through end-of-line, or remainder if not found
  8070  			libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(n))
  8071  			*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n)
  8072  			*(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(n))
  8073  			*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n))
  8074  			left = left - (n)
  8075  			buf += uintptr(n)
  8076  		}
  8077  	}
  8078  
  8079  	// return terminated string, or if nothing, end of file
  8080  	if buf == str {
  8081  		return uintptr(0)
  8082  	}
  8083  	*(*int8)(unsafe.Pointer(buf)) = int8(0)
  8084  	return str
  8085  }
  8086  
  8087  // -- see zlib.h --
  8088  func Xgzdirect(tls *libc.TLS, file GzFile) int32 { /* gzread.c:607:13: */
  8089  	var state Gz_statep
  8090  
  8091  	// get internal structure
  8092  	if file == (uintptr(0)) {
  8093  		return 0
  8094  	}
  8095  	state = file
  8096  
  8097  	// if the state is not known, but we can find out, then do so (this is
  8098  	//        mainly for right after a gzopen() or gzdopen())
  8099  	if (((*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK)) && ((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) {
  8100  		gz_look(tls, state)
  8101  	}
  8102  
  8103  	// return 1 if transparent, 0 if processing a gzip stream
  8104  	return (*Gz_state)(unsafe.Pointer(state)).Fdirect
  8105  }
  8106  
  8107  // -- see zlib.h --
  8108  func Xgzclose_r(tls *libc.TLS, file GzFile) int32 { /* gzread.c:627:13: */
  8109  	var ret int32
  8110  	var err int32
  8111  	var state Gz_statep
  8112  
  8113  	// get internal structure
  8114  	if file == (uintptr(0)) {
  8115  		return -2
  8116  	}
  8117  	state = file
  8118  
  8119  	// check that we're reading
  8120  	if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ {
  8121  		return -2
  8122  	}
  8123  
  8124  	// free memory and close file
  8125  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
  8126  		XinflateEnd(tls, (state + 120 /* &.strm */))
  8127  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  8128  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  8129  	}
  8130  	if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-5) {
  8131  		err = -5
  8132  	} else {
  8133  		err = Z_OK
  8134  	}
  8135  	Xgz_error(tls, state, Z_OK, uintptr(0))
  8136  	libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)
  8137  	ret = libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd)
  8138  	libc.Xfree(tls, state)
  8139  	if ret != 0 {
  8140  		return -1
  8141  	}
  8142  	return err
  8143  }
  8144  
  8145  // Initialize state for writing a gzip file.  Mark initialization by setting
  8146  //    state->size to non-zero.  Return -1 on a memory allocation failure, or 0 on
  8147  //    success.
  8148  func gz_init(tls *libc.TLS, state Gz_statep) int32 { /* gzwrite.c:17:11: */
  8149  	var ret int32
  8150  	var strm Z_streamp = (state + 120 /* &.strm */)
  8151  
  8152  	// allocate input buffer (double size for gzprintf)
  8153  	(*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, (uint64((*Gz_state)(unsafe.Pointer(state)).Fwant << 1)))
  8154  	if (*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0)) {
  8155  		Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  8156  		return -1
  8157  	}
  8158  
  8159  	// only need output buffer and deflate state if compressing
  8160  	if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) {
  8161  		// allocate output buffer
  8162  		(*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, uint64((*Gz_state)(unsafe.Pointer(state)).Fwant))
  8163  		if (*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0)) {
  8164  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  8165  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  8166  			return -1
  8167  		}
  8168  
  8169  		// allocate deflate memory, set up for gzip compression
  8170  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = Alloc_func(Z_NULL)
  8171  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = Free_func(Z_NULL)
  8172  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = Voidpf(Z_NULL)
  8173  		ret = XdeflateInit2_(tls, strm, (*Gz_state)(unsafe.Pointer(state)).Flevel, Z_DEFLATED, (MAX_WBITS + 16), DEF_MEM_LEVEL, (*Gz_state)(unsafe.Pointer(state)).Fstrategy, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{})))
  8174  		if ret != Z_OK {
  8175  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  8176  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  8177  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  8178  			return -1
  8179  		}
  8180  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = uintptr(0)
  8181  	}
  8182  
  8183  	// mark state as initialized
  8184  	(*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant
  8185  
  8186  	// initialize write buffer if compressing
  8187  	if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) {
  8188  		(*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize
  8189  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout
  8190  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
  8191  	}
  8192  	return 0
  8193  }
  8194  
  8195  // Compress whatever is at avail_in and next_in and write to the output file.
  8196  //    Return -1 if there is an error writing to the output file or if gz_init()
  8197  //    fails to allocate memory, otherwise 0.  flush is assumed to be a valid
  8198  //    deflate() flush value.  If flush is Z_FINISH, then the deflate() state is
  8199  //    reset to start a new gzip stream.  If gz->direct is true, then simply write
  8200  //    to the output file without compressing, and ignore flush.
  8201  func gz_comp(tls *libc.TLS, state Gz_statep, flush int32) int32 { /* gzwrite.c:73:11: */
  8202  	var ret int32
  8203  	var writ int32
  8204  	var have uint32
  8205  	var put uint32
  8206  	var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1))
  8207  	var strm Z_streamp = (state + 120 /* &.strm */)
  8208  
  8209  	// allocate memory if this is the first time through
  8210  	if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) {
  8211  		return -1
  8212  	}
  8213  
  8214  	// write directly if requested
  8215  	if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 {
  8216  		for (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 {
  8217  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_in > max {
  8218  				put = max
  8219  			} else {
  8220  				put = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  8221  			}
  8222  			writ = int32(libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, uint64(put)))
  8223  			if writ < 0 {
  8224  				Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__error(tls)))))
  8225  				return -1
  8226  			}
  8227  			*(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) -= (uint32(writ))
  8228  			*(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(writ))
  8229  		}
  8230  		return 0
  8231  	}
  8232  
  8233  	// run deflate() on provided input until it produces no more output
  8234  	ret = Z_OK
  8235  	for ok := true; ok; ok = have != 0 {
  8236  		// write out current buffer contents if full, or if flushing, but if
  8237  		//            doing Z_FINISH then don't write until we get to Z_STREAM_END
  8238  		if ((*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0)) || ((flush != Z_NO_FLUSH) && ((flush != Z_FINISH) || (ret == Z_STREAM_END))) {
  8239  			for (*Z_stream)(unsafe.Pointer(strm)).Fnext_out > (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext {
  8240  				if ((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1) > int64(int32(max)) {
  8241  					put = max
  8242  				} else {
  8243  					put = (uint32((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int64((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1))
  8244  				}
  8245  				writ = int32(libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, uint64(put)))
  8246  				if writ < 0 {
  8247  					Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__error(tls)))))
  8248  					return -1
  8249  				}
  8250  				*(*uintptr)(unsafe.Pointer(state /* &.x */ + 8 /* &.next */)) += (uintptr(writ))
  8251  			}
  8252  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  8253  				(*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize
  8254  				(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout
  8255  				(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout
  8256  			}
  8257  		}
  8258  
  8259  		// compress
  8260  		have = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
  8261  		ret = Xdeflate(tls, strm, flush)
  8262  		if ret == (-2) {
  8263  			Xgz_error(tls, state, -2,
  8264  				ts+291 /* "internal error: ..." */)
  8265  			return -1
  8266  		}
  8267  		have = have - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out)
  8268  	}
  8269  
  8270  	// if that completed a deflate stream, allow another to start
  8271  	if flush == Z_FINISH {
  8272  		XdeflateReset(tls, strm)
  8273  	}
  8274  
  8275  	// all done, no errors
  8276  	return 0
  8277  }
  8278  
  8279  // Compress len zeros to output.  Return -1 on a write error or memory
  8280  //    allocation failure by gz_comp(), or 0 on success.
  8281  func gz_zero(tls *libc.TLS, state Gz_statep, len Off_t) int32 { /* gzwrite.c:145:11: */
  8282  	var first int32
  8283  	var n uint32
  8284  	var strm Z_streamp = (state + 120 /* &.strm */)
  8285  
  8286  	// consume whatever's left in the input buffer
  8287  	if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) {
  8288  		return -1
  8289  	}
  8290  
  8291  	// compress len zeros (len guaranteed > 0)
  8292  	first = 1
  8293  	for len != 0 {
  8294  		if ((uint64(unsafe.Sizeof(int32(0))) == uint64(unsafe.Sizeof(Off_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fsize) > uint32(0x7fffffff))) || (Off_t((*Gz_state)(unsafe.Pointer(state)).Fsize) > len) {
  8295  			n = uint32(len)
  8296  		} else {
  8297  			n = (*Gz_state)(unsafe.Pointer(state)).Fsize
  8298  		}
  8299  		if first != 0 {
  8300  			libc.Xmemset(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, 0, uint64(n))
  8301  			first = 0
  8302  		}
  8303  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = n
  8304  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  8305  		*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n))
  8306  		if gz_comp(tls, state, Z_NO_FLUSH) == -1 {
  8307  			return -1
  8308  		}
  8309  		len = len - (Off_t(n))
  8310  	}
  8311  	return 0
  8312  }
  8313  
  8314  // Write len bytes from buf to file.  Return the number of bytes written.  If
  8315  //    the returned value is less than len, then there was an error.
  8316  func gz_write(tls *libc.TLS, state Gz_statep, buf Voidpc, len Z_size_t) Z_size_t { /* gzwrite.c:178:16: */
  8317  	var put Z_size_t = len
  8318  
  8319  	// if len is zero, avoid unnecessary operations
  8320  	if len == uint64(0) {
  8321  		return uint64(0)
  8322  	}
  8323  
  8324  	// allocate memory if this is the first time through
  8325  	if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) {
  8326  		return uint64(0)
  8327  	}
  8328  
  8329  	// check for seek request
  8330  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8331  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8332  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  8333  			return uint64(0)
  8334  		}
  8335  	}
  8336  
  8337  	// for small len, copy to input buffer, otherwise compress directly
  8338  	if len < Z_size_t((*Gz_state)(unsafe.Pointer(state)).Fsize) {
  8339  		// copy to input buffer, compress when full
  8340  		for ok := true; ok; ok = len != 0 {
  8341  			var have uint32
  8342  			var copy uint32
  8343  
  8344  			if (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0) {
  8345  				(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  8346  			}
  8347  			have = (uint32(((int64((*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in + uintptr((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in))) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))
  8348  			copy = ((*Gz_state)(unsafe.Pointer(state)).Fsize - have)
  8349  			if Z_size_t(copy) > len {
  8350  				copy = uint32(len)
  8351  			}
  8352  			libc.Xmemcpy(tls, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have)), buf, uint64(copy))
  8353  			*(*UInt)(unsafe.Pointer(state + 120 /* &.strm */ + 8 /* &.avail_in */)) += (copy)
  8354  			*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(copy))
  8355  			buf = (buf + uintptr(copy))
  8356  			len = len - (Z_size_t(copy))
  8357  			if (len != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) {
  8358  				return uint64(0)
  8359  			}
  8360  		}
  8361  	} else {
  8362  		// consume whatever's left in the input buffer
  8363  		if ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) {
  8364  			return uint64(0)
  8365  		}
  8366  
  8367  		// directly compress user buffer to file
  8368  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = buf
  8369  		for ok1 := true; ok1; ok1 = len != 0 {
  8370  			var n uint32 = libc.Uint32(libc.Uint32FromInt32(-1))
  8371  			if Z_size_t(n) > len {
  8372  				n = uint32(len)
  8373  			}
  8374  			(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = n
  8375  			*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(n))
  8376  			if gz_comp(tls, state, Z_NO_FLUSH) == -1 {
  8377  				return uint64(0)
  8378  			}
  8379  			len = len - (Z_size_t(n))
  8380  		}
  8381  	}
  8382  
  8383  	// input was all buffered or compressed
  8384  	return put
  8385  }
  8386  
  8387  // -- see zlib.h --
  8388  func Xgzwrite(tls *libc.TLS, file GzFile, buf Voidpc, len uint32) int32 { /* gzwrite.c:246:13: */
  8389  	var state Gz_statep
  8390  
  8391  	// get internal structure
  8392  	if file == (uintptr(0)) {
  8393  		return 0
  8394  	}
  8395  	state = file
  8396  
  8397  	// check that we're writing and that there's no error
  8398  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  8399  		return 0
  8400  	}
  8401  
  8402  	// since an int is returned, make sure len fits in one, otherwise return
  8403  	//        with an error (this avoids a flaw in the interface)
  8404  	if int32(len) < 0 {
  8405  		Xgz_error(tls, state, -3, ts+330 /* "requested length..." */)
  8406  		return 0
  8407  	}
  8408  
  8409  	// write len bytes from buf (the return value will fit in an int)
  8410  	return int32(gz_write(tls, state, buf, uint64(len)))
  8411  }
  8412  
  8413  // -- see zlib.h --
  8414  func Xgzfwrite(tls *libc.TLS, buf Voidpc, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzwrite.c:274:18: */
  8415  	var len Z_size_t
  8416  	var state Gz_statep
  8417  
  8418  	// get internal structure
  8419  	if file == (uintptr(0)) {
  8420  		return uint64(0)
  8421  	}
  8422  	state = file
  8423  
  8424  	// check that we're writing and that there's no error
  8425  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  8426  		return uint64(0)
  8427  	}
  8428  
  8429  	// compute bytes to read -- error on overflow
  8430  	len = (nitems * size)
  8431  	if (size != 0) && ((len / size) != nitems) {
  8432  		Xgz_error(tls, state, -2, ts+227 /* "request does not..." */)
  8433  		return uint64(0)
  8434  	}
  8435  
  8436  	// write len bytes to buf, return the number of full items written
  8437  	if len != 0 {
  8438  		return (gz_write(tls, state, buf, len) / size)
  8439  	}
  8440  	return uint64(0)
  8441  }
  8442  
  8443  // -- see zlib.h --
  8444  func Xgzputc(tls *libc.TLS, file GzFile, c int32) int32 { /* gzwrite.c:304:13: */
  8445  	bp := tls.Alloc(1)
  8446  	defer tls.Free(1)
  8447  
  8448  	var have uint32
  8449  	// var buf [1]uint8 at bp, 1
  8450  
  8451  	var state Gz_statep
  8452  	var strm Z_streamp
  8453  
  8454  	// get internal structure
  8455  	if file == (uintptr(0)) {
  8456  		return -1
  8457  	}
  8458  	state = file
  8459  	strm = (state + 120 /* &.strm */)
  8460  
  8461  	// check that we're writing and that there's no error
  8462  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  8463  		return -1
  8464  	}
  8465  
  8466  	// check for seek request
  8467  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8468  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8469  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  8470  			return -1
  8471  		}
  8472  	}
  8473  
  8474  	// try writing to input buffer for speed (state->size == 0 if buffer not
  8475  	//        initialized)
  8476  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
  8477  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
  8478  			(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  8479  		}
  8480  		have = (uint32(((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_in + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in))) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))
  8481  		if have < (*Gz_state)(unsafe.Pointer(state)).Fsize {
  8482  			*(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have))) = uint8(c)
  8483  			(*Z_stream)(unsafe.Pointer(strm)).Favail_in++
  8484  			(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++
  8485  			return (c & 0xff)
  8486  		}
  8487  	}
  8488  
  8489  	// no room in buffer or not initialized, use gz_write()
  8490  	*(*uint8)(unsafe.Pointer(bp /* &buf[0] */)) = uint8(c)
  8491  	if gz_write(tls, state, bp /* &buf[0] */, uint64(1)) != uint64(1) {
  8492  		return -1
  8493  	}
  8494  	return (c & 0xff)
  8495  }
  8496  
  8497  // -- see zlib.h --
  8498  func Xgzputs(tls *libc.TLS, file GzFile, str uintptr) int32 { /* gzwrite.c:352:13: */
  8499  	var ret int32
  8500  	var len Z_size_t
  8501  	var state Gz_statep
  8502  
  8503  	// get internal structure
  8504  	if file == (uintptr(0)) {
  8505  		return -1
  8506  	}
  8507  	state = file
  8508  
  8509  	// check that we're writing and that there's no error
  8510  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  8511  		return -1
  8512  	}
  8513  
  8514  	// write string
  8515  	len = libc.Xstrlen(tls, str)
  8516  	ret = int32(gz_write(tls, state, str, len))
  8517  	if (ret == 0) && (len != uint64(0)) {
  8518  		return -1
  8519  	}
  8520  	return ret
  8521  }
  8522  
  8523  // -
  8524  // This file is in the public domain.
  8525  // $FreeBSD$
  8526  
  8527  // -
  8528  // SPDX-License-Identifier: BSD-2-Clause
  8529  //
  8530  // Copyright (c) 2017 Poul-Henning Kamp.  All rights reserved.
  8531  //
  8532  // Redistribution and use in source and binary forms, with or without
  8533  // modification, are permitted provided that the following conditions
  8534  // are met:
  8535  // 1. Redistributions of source code must retain the above copyright
  8536  //    notice, this list of conditions and the following disclaimer.
  8537  // 2. Redistributions in binary form must reproduce the above copyright
  8538  //    notice, this list of conditions and the following disclaimer in the
  8539  //    documentation and/or other materials provided with the distribution.
  8540  //
  8541  // THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  8542  // ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  8543  // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  8544  // ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  8545  // FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  8546  // DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  8547  // OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  8548  // HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  8549  // LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  8550  // OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  8551  // SUCH DAMAGE.
  8552  //
  8553  // $FreeBSD$
  8554  
  8555  // -- see zlib.h --
  8556  func Xgzvprintf(tls *libc.TLS, file GzFile, format uintptr, va Va_list) int32 { /* gzwrite.c:379:15: */
  8557  	var len int32
  8558  	var left uint32
  8559  	var next uintptr
  8560  	var state Gz_statep
  8561  	var strm Z_streamp
  8562  
  8563  	// get internal structure
  8564  	if file == (uintptr(0)) {
  8565  		return -2
  8566  	}
  8567  	state = file
  8568  	strm = (state + 120 /* &.strm */)
  8569  
  8570  	// check that we're writing and that there's no error
  8571  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  8572  		return -2
  8573  	}
  8574  
  8575  	// make sure we have some buffer space
  8576  	if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) {
  8577  		return (*Gz_state)(unsafe.Pointer(state)).Ferr
  8578  	}
  8579  
  8580  	// check for seek request
  8581  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8582  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8583  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  8584  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
  8585  		}
  8586  	}
  8587  
  8588  	// do the printf() into the input buffer, put length in len -- the input
  8589  	//        buffer is double-sized just for this function, so there is guaranteed to
  8590  	//        be state->size bytes available after the current contents
  8591  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
  8592  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  8593  	}
  8594  	next = (((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(((int64((*Z_stream)(unsafe.Pointer(strm)).Fnext_in) - int64((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))) + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in))
  8595  	*(*int8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1))))) = int8(0)
  8596  	len = libc.Xvsnprintf(tls, next, uint64((*Gz_state)(unsafe.Pointer(state)).Fsize), format, va)
  8597  
  8598  	// check that printf() results fit in buffer
  8599  	if ((len == 0) || (uint32(len) >= (*Gz_state)(unsafe.Pointer(state)).Fsize)) || (int32(*(*int8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1)))))) != 0) {
  8600  		return 0
  8601  	}
  8602  
  8603  	// update buffer and position, compress first half if past that
  8604  	*(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) += (uint32(len))
  8605  	*(*Off_t)(unsafe.Pointer(state /* &.x */ + 16 /* &.pos */)) += (Off_t(len))
  8606  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in >= (*Gz_state)(unsafe.Pointer(state)).Fsize {
  8607  		left = ((*Z_stream)(unsafe.Pointer(strm)).Favail_in - (*Gz_state)(unsafe.Pointer(state)).Fsize)
  8608  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = (*Gz_state)(unsafe.Pointer(state)).Fsize
  8609  		if gz_comp(tls, state, Z_NO_FLUSH) == -1 {
  8610  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
  8611  		}
  8612  		libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize)), uint64(left))
  8613  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  8614  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = left
  8615  	}
  8616  	return len
  8617  }
  8618  
  8619  func Xgzprintf(tls *libc.TLS, file GzFile, format uintptr, va uintptr) int32 { /* gzwrite.c:451:15: */
  8620  	var va1 Va_list
  8621  	_ = va1
  8622  	var ret int32
  8623  
  8624  	(va1) = va
  8625  	ret = Xgzvprintf(tls, file, format, va1)
  8626  	_ = va1
  8627  	return ret
  8628  }
  8629  
  8630  // -- see zlib.h --
  8631  func Xgzflush(tls *libc.TLS, file GzFile, flush int32) int32 { /* gzwrite.c:553:13: */
  8632  	var state Gz_statep
  8633  
  8634  	// get internal structure
  8635  	if file == (uintptr(0)) {
  8636  		return -2
  8637  	}
  8638  	state = file
  8639  
  8640  	// check that we're writing and that there's no error
  8641  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  8642  		return -2
  8643  	}
  8644  
  8645  	// check flush parameter
  8646  	if (flush < 0) || (flush > Z_FINISH) {
  8647  		return -2
  8648  	}
  8649  
  8650  	// check for seek request
  8651  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8652  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8653  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  8654  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
  8655  		}
  8656  	}
  8657  
  8658  	// compress remaining data with requested flush
  8659  	gz_comp(tls, state, flush)
  8660  	return (*Gz_state)(unsafe.Pointer(state)).Ferr
  8661  }
  8662  
  8663  // -- see zlib.h --
  8664  func Xgzsetparams(tls *libc.TLS, file GzFile, level int32, strategy int32) int32 { /* gzwrite.c:585:13: */
  8665  	var state Gz_statep
  8666  	var strm Z_streamp
  8667  
  8668  	// get internal structure
  8669  	if file == (uintptr(0)) {
  8670  		return -2
  8671  	}
  8672  	state = file
  8673  	strm = (state + 120 /* &.strm */)
  8674  
  8675  	// check that we're writing and that there's no error
  8676  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  8677  		return -2
  8678  	}
  8679  
  8680  	// if no change is requested, then do nothing
  8681  	if (level == (*Gz_state)(unsafe.Pointer(state)).Flevel) && (strategy == (*Gz_state)(unsafe.Pointer(state)).Fstrategy) {
  8682  		return Z_OK
  8683  	}
  8684  
  8685  	// check for seek request
  8686  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8687  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8688  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  8689  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
  8690  		}
  8691  	}
  8692  
  8693  	// change compression parameters for subsequent input
  8694  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
  8695  		// flush previous input with previous parameters before changing
  8696  		if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_BLOCK) == -1) {
  8697  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
  8698  		}
  8699  		XdeflateParams(tls, strm, level, strategy)
  8700  	}
  8701  	(*Gz_state)(unsafe.Pointer(state)).Flevel = level
  8702  	(*Gz_state)(unsafe.Pointer(state)).Fstrategy = strategy
  8703  	return Z_OK
  8704  }
  8705  
  8706  // -- see zlib.h --
  8707  func Xgzclose_w(tls *libc.TLS, file GzFile) int32 { /* gzwrite.c:627:13: */
  8708  	var ret int32 = Z_OK
  8709  	var state Gz_statep
  8710  
  8711  	// get internal structure
  8712  	if file == (uintptr(0)) {
  8713  		return -2
  8714  	}
  8715  	state = file
  8716  
  8717  	// check that we're writing
  8718  	if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE {
  8719  		return -2
  8720  	}
  8721  
  8722  	// check for seek request
  8723  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8724  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8725  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  8726  			ret = (*Gz_state)(unsafe.Pointer(state)).Ferr
  8727  		}
  8728  	}
  8729  
  8730  	// flush, free memory, and close file
  8731  	if gz_comp(tls, state, Z_FINISH) == -1 {
  8732  		ret = (*Gz_state)(unsafe.Pointer(state)).Ferr
  8733  	}
  8734  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
  8735  		if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) {
  8736  			XdeflateEnd(tls, (state + 120 /* &.strm */))
  8737  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  8738  		}
  8739  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  8740  	}
  8741  	Xgz_error(tls, state, Z_OK, uintptr(0))
  8742  	libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)
  8743  	if libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) == -1 {
  8744  		ret = -1
  8745  	}
  8746  	libc.Xfree(tls, state)
  8747  	return ret
  8748  }
  8749  
  8750  // Reverse the bytes in a 32-bit value
  8751  
  8752  // inftrees.h -- header to use inftrees.c
  8753  // Copyright (C) 1995-2005, 2010 Mark Adler
  8754  // For conditions of distribution and use, see copyright notice in zlib.h
  8755  
  8756  // WARNING: this file should *not* be used by applications. It is
  8757  //    part of the implementation of the compression library and is
  8758  //    subject to change. Applications should only use zlib.h.
  8759  //
  8760  
  8761  // Structure for decoding tables.  Each entry provides either the
  8762  //    information needed to do the operation requested by the code that
  8763  //    indexed that table entry, or it provides a pointer to another
  8764  //    table that indexes more bits of the code.  op indicates whether
  8765  //    the entry is a pointer to another table, a literal, a length or
  8766  //    distance, an end-of-block, or an invalid code.  For a table
  8767  //    pointer, the low four bits of op is the number of index bits of
  8768  //    that table.  For a length or distance, the low four bits of op
  8769  //    is the number of extra bits to get after the code.  bits is
  8770  //    the number of bits in this code or part of the code to drop off
  8771  //    of the bit buffer.  val is the actual byte to output in the case
  8772  //    of a literal, the base length or distance, or the offset from
  8773  //    the current table to the next table.  Each entry is four bytes.
  8774  type Code = struct {
  8775  	Fop   uint8
  8776  	Fbits uint8
  8777  	Fval  uint16
  8778  } /* inftrees.h:28:3 */
  8779  
  8780  // op values as set by inflate_table():
  8781  //     00000000 - literal
  8782  //     0000tttt - table link, tttt != 0 is the number of table index bits
  8783  //     0001eeee - length or distance, eeee is the number of extra bits
  8784  //     01100000 - end of block
  8785  //     01000000 - invalid code
  8786  //
  8787  
  8788  // Maximum size of the dynamic table.  The maximum number of code structures is
  8789  //    1444, which is the sum of 852 for literal/length codes and 592 for distance
  8790  //    codes.  These values were found by exhaustive searches using the program
  8791  //    examples/enough.c found in the zlib distribtution.  The arguments to that
  8792  //    program are the number of symbols, the initial root table size, and the
  8793  //    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
  8794  //    returns returns 852, and "enough 30 6 15" for distance codes returns 592.
  8795  //    The initial root table size (9 or 6) is found in the fifth argument of the
  8796  //    inflate_table() calls in inflate.c and infback.c.  If the root table size is
  8797  //    changed, then these maximum sizes would be need to be recalculated and
  8798  //    updated.
  8799  
  8800  // Type of code to build for inflate_table()
  8801  type Codetype = uint32 /* inftrees.h:58:3 */
  8802  // inflate.h -- internal inflate state definition
  8803  // Copyright (C) 1995-2016 Mark Adler
  8804  // For conditions of distribution and use, see copyright notice in zlib.h
  8805  
  8806  // WARNING: this file should *not* be used by applications. It is
  8807  //    part of the implementation of the compression library and is
  8808  //    subject to change. Applications should only use zlib.h.
  8809  //
  8810  
  8811  // define NO_GZIP when compiling if you want to disable gzip header and
  8812  //    trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
  8813  //    the crc code when it is not needed.  For shared libraries, gzip decoding
  8814  //    should be left enabled.
  8815  
  8816  // Possible inflate modes between inflate() calls
  8817  type Inflate_mode = uint32 /* inflate.h:53:3 */
  8818  
  8819  //
  8820  //     State transitions between above modes -
  8821  //
  8822  //     (most modes can go to BAD or MEM on error -- not shown for clarity)
  8823  //
  8824  //     Process header:
  8825  //         HEAD -> (gzip) or (zlib) or (raw)
  8826  //         (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT ->
  8827  //                   HCRC -> TYPE
  8828  //         (zlib) -> DICTID or TYPE
  8829  //         DICTID -> DICT -> TYPE
  8830  //         (raw) -> TYPEDO
  8831  //     Read deflate blocks:
  8832  //             TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK
  8833  //             STORED -> COPY_ -> COPY -> TYPE
  8834  //             TABLE -> LENLENS -> CODELENS -> LEN_
  8835  //             LEN_ -> LEN
  8836  //     Read deflate codes in fixed or dynamic block:
  8837  //                 LEN -> LENEXT or LIT or TYPE
  8838  //                 LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
  8839  //                 LIT -> LEN
  8840  //     Process trailer:
  8841  //         CHECK -> LENGTH -> DONE
  8842  //
  8843  
  8844  // State maintained between inflate() calls -- approximately 7K bytes, not
  8845  //    including the allocated sliding window, which is up to 32K bytes.
  8846  type Inflate_state = struct {
  8847  	Fstrm        Z_streamp
  8848  	Fmode        Inflate_mode
  8849  	Flast        int32
  8850  	Fwrap        int32
  8851  	Fhavedict    int32
  8852  	Fflags       int32
  8853  	Fdmax        uint32
  8854  	Fcheck       uint64
  8855  	Ftotal       uint64
  8856  	Fhead        Gz_headerp
  8857  	Fwbits       uint32
  8858  	Fwsize       uint32
  8859  	Fwhave       uint32
  8860  	Fwnext       uint32
  8861  	Fwindow      uintptr
  8862  	Fhold        uint64
  8863  	Fbits        uint32
  8864  	Flength      uint32
  8865  	Foffset      uint32
  8866  	Fextra       uint32
  8867  	Flencode     uintptr
  8868  	Fdistcode    uintptr
  8869  	Flenbits     uint32
  8870  	Fdistbits    uint32
  8871  	Fncode       uint32
  8872  	Fnlen        uint32
  8873  	Fndist       uint32
  8874  	Fhave        uint32
  8875  	Fnext        uintptr
  8876  	Flens        [320]uint16
  8877  	Fwork        [288]uint16
  8878  	Fcodes       [1444]Code
  8879  	Fsane        int32
  8880  	Fback        int32
  8881  	Fwas         uint32
  8882  	F__ccgo_pad1 [4]byte
  8883  } /* inflate.h:82:1 */
  8884  
  8885  //
  8886  //    strm provides memory allocation functions in zalloc and zfree, or
  8887  //    Z_NULL to use the library memory allocation functions.
  8888  //
  8889  //    windowBits is in the range 8..15, and window is a user-supplied
  8890  //    window and output buffer that is 2**windowBits bytes.
  8891  //
  8892  func XinflateBackInit_(tls *libc.TLS, strm Z_streamp, windowBits int32, window uintptr, version uintptr, stream_size int32) int32 { /* infback.c:28:13: */
  8893  	var state uintptr
  8894  
  8895  	if ((version == uintptr(Z_NULL)) || (int32(*(*int8)(unsafe.Pointer(version))) != int32(*(*int8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) {
  8896  		return -6
  8897  	}
  8898  	if (((strm == uintptr(Z_NULL)) || (window == uintptr(Z_NULL))) || (windowBits < 8)) || (windowBits > 15) {
  8899  		return -2
  8900  	}
  8901  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error
  8902  	if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) {
  8903  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct {
  8904  			f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf
  8905  		}{Xzcalloc}))
  8906  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0)
  8907  	}
  8908  	if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) {
  8909  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct {
  8910  			f func(*libc.TLS, Voidpf, Voidpf)
  8911  		}{Xzcfree}))
  8912  	}
  8913  	state = (*struct {
  8914  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  8915  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{})))
  8916  	if state == uintptr(Z_NULL) {
  8917  		return -4
  8918  	}
  8919  
  8920  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = state
  8921  	(*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768
  8922  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = UInt(windowBits)
  8923  	(*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << windowBits)
  8924  	(*Inflate_state)(unsafe.Pointer(state)).Fwindow = window
  8925  	(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
  8926  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
  8927  	return Z_OK
  8928  }
  8929  
  8930  //
  8931  //    Return state with length and distance decoding tables and index sizes set to
  8932  //    fixed code decoding.  Normally this returns fixed tables from inffixed.h.
  8933  //    If BUILDFIXED is defined, then instead this routine builds the tables the
  8934  //    first time it's called, and returns those tables the first time and
  8935  //    thereafter.  This reduces the size of the code by about 2K bytes, in
  8936  //    exchange for a little execution time.  However, BUILDFIXED should not be
  8937  //    used for threaded applications, since the rewriting of the tables and virgin
  8938  //    may not be thread-safe.
  8939  //
  8940  func fixedtables(tls *libc.TLS, state uintptr) { /* infback.c:82:12: */
  8941  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix))
  8942  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
  8943  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix))
  8944  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5)
  8945  }
  8946  
  8947  var lenfix = [512]Code{
  8948  	{Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)},
  8949  	{Fbits: uint8(9), Fval: uint16(192)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(160)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)},
  8950  	{Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(224)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(144)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)},
  8951  	{Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(208)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(176)},
  8952  	{Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, {Fbits: uint8(9), Fval: uint16(240)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)},
  8953  	{Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(200)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)},
  8954  	{Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(168)}, {Fbits: uint8(8), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(232)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)},
  8955  	{Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(152)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(216)},
  8956  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, {Fbits: uint8(9), Fval: uint16(184)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)},
  8957  	{Fbits: uint8(9), Fval: uint16(248)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)},
  8958  	{Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(196)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(164)}, {Fbits: uint8(8), Fval: uint16(2)},
  8959  	{Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(228)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(148)},
  8960  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, {Fbits: uint8(9), Fval: uint16(212)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)},
  8961  	{Fbits: uint8(9), Fval: uint16(180)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(244)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)},
  8962  	{Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(204)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)},
  8963  	{Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(172)}, {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(236)},
  8964  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, {Fbits: uint8(9), Fval: uint16(156)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)},
  8965  	{Fbits: uint8(9), Fval: uint16(220)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(188)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)},
  8966  	{Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(252)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)},
  8967  	{Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(194)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(162)},
  8968  	{Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, {Fbits: uint8(9), Fval: uint16(226)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)},
  8969  	{Fbits: uint8(9), Fval: uint16(146)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(210)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)},
  8970  	{Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(178)}, {Fbits: uint8(8), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(242)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)},
  8971  	{Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(202)},
  8972  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, {Fbits: uint8(9), Fval: uint16(170)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)},
  8973  	{Fbits: uint8(9), Fval: uint16(234)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(154)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)},
  8974  	{Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(218)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(186)}, {Fbits: uint8(8), Fval: uint16(13)},
  8975  	{Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(250)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)},
  8976  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, {Fbits: uint8(9), Fval: uint16(198)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)},
  8977  	{Fbits: uint8(9), Fval: uint16(166)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(230)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)},
  8978  	{Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(150)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(214)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)},
  8979  	{Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(182)}, {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(246)},
  8980  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)},
  8981  	{Fbits: uint8(9), Fval: uint16(206)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(174)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)},
  8982  	{Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(238)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(158)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)},
  8983  	{Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(222)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(190)},
  8984  	{Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, {Fbits: uint8(9), Fval: uint16(254)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)},
  8985  	{Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, {Fbits: uint8(9), Fval: uint16(193)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)},
  8986  	{Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(161)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(225)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)},
  8987  	{Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(145)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(209)},
  8988  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(177)}, {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)},
  8989  	{Fbits: uint8(9), Fval: uint16(241)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)},
  8990  	{Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(201)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(169)}, {Fbits: uint8(8), Fval: uint16(4)},
  8991  	{Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(233)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(153)},
  8992  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(217)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)},
  8993  	{Fbits: uint8(9), Fval: uint16(185)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, {Fbits: uint8(9), Fval: uint16(249)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)},
  8994  	{Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(197)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)},
  8995  	{Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(165)}, {Fbits: uint8(8), Fval: uint16(2)}, {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(229)},
  8996  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(149)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)},
  8997  	{Fbits: uint8(9), Fval: uint16(213)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, {Fbits: uint8(9), Fval: uint16(181)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)},
  8998  	{Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(245)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)},
  8999  	{Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(205)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(173)},
  9000  	{Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(237)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)},
  9001  	{Fbits: uint8(9), Fval: uint16(157)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, {Fbits: uint8(9), Fval: uint16(221)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)},
  9002  	{Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(189)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(253)}, {Fop: uint8(96), Fbits: uint8(7)},
  9003  	{Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(195)},
  9004  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(163)}, {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)},
  9005  	{Fbits: uint8(9), Fval: uint16(227)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, {Fbits: uint8(9), Fval: uint16(147)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)},
  9006  	{Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(211)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(179)}, {Fbits: uint8(8), Fval: uint16(9)},
  9007  	{Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(243)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)},
  9008  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(203)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)},
  9009  	{Fbits: uint8(9), Fval: uint16(171)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, {Fbits: uint8(9), Fval: uint16(235)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)},
  9010  	{Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(155)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(219)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)},
  9011  	{Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(187)}, {Fbits: uint8(8), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(251)},
  9012  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)},
  9013  	{Fbits: uint8(9), Fval: uint16(199)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, {Fbits: uint8(9), Fval: uint16(167)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)},
  9014  	{Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(231)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(151)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)},
  9015  	{Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(215)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(183)},
  9016  	{Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(247)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)},
  9017  	{Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, {Fbits: uint8(9), Fval: uint16(207)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)},
  9018  	{Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(175)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(239)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)},
  9019  	{Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(159)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(223)},
  9020  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(191)}, {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)},
  9021  	{Fbits: uint8(9), Fval: uint16(255)},
  9022  } /* inffixed.h:10:23 */
  9023  var distfix = [32]Code{
  9024  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(1)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(257)}, {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(17)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(4097)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(5)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1025)},
  9025  	{Fop: uint8(21), Fbits: uint8(5), Fval: uint16(65)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(16385)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(3)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(513)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(33)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(8193)},
  9026  	{Fop: uint8(18), Fbits: uint8(5), Fval: uint16(9)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(2049)}, {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(129)}, {Fop: uint8(64), Fbits: uint8(5)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(2)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(385)},
  9027  	{Fop: uint8(19), Fbits: uint8(5), Fval: uint16(25)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(6145)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(7)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1537)}, {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(97)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(24577)},
  9028  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(4)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(769)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(49)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(12289)}, {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(13)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(3073)},
  9029  	{Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)},
  9030  } /* inffixed.h:87:23 */
  9031  
  9032  // Macros for inflateBack():
  9033  
  9034  // Load returned state from inflate_fast()
  9035  
  9036  // Set state from registers for inflate_fast()
  9037  
  9038  // Clear the input bit accumulator
  9039  
  9040  // Assure that some input is available.  If input is requested, but denied,
  9041  //    then return a Z_BUF_ERROR from inflateBack().
  9042  
  9043  // Get a byte of input into the bit accumulator, or return from inflateBack()
  9044  //    with an error if there is no input available.
  9045  
  9046  // Assure that there are at least n bits in the bit accumulator.  If there is
  9047  //    not enough available input to do that, then return from inflateBack() with
  9048  //    an error.
  9049  
  9050  // Return the low n bits of the bit accumulator (n < 16)
  9051  
  9052  // Remove n bits from the bit accumulator
  9053  
  9054  // Remove zero to seven bits as needed to go to a byte boundary
  9055  
  9056  // Assure that some output space is available, by writing out the window
  9057  //    if it's full.  If the write fails, return from inflateBack() with a
  9058  //    Z_BUF_ERROR.
  9059  
  9060  //
  9061  //    strm provides the memory allocation functions and window buffer on input,
  9062  //    and provides information on the unused input on return.  For Z_DATA_ERROR
  9063  //    returns, strm will also provide an error message.
  9064  //
  9065  //    in() and out() are the call-back input and output functions.  When
  9066  //    inflateBack() needs more input, it calls in().  When inflateBack() has
  9067  //    filled the window with output, or when it completes with data in the
  9068  //    window, it calls out() to write out the data.  The application must not
  9069  //    change the provided input until in() is called again or inflateBack()
  9070  //    returns.  The application must not change the window/output buffer until
  9071  //    inflateBack() returns.
  9072  //
  9073  //    in() and out() are called with a descriptor parameter provided in the
  9074  //    inflateBack() call.  This parameter can be a structure that provides the
  9075  //    information required to do the read or write, as well as accumulated
  9076  //    information on the input and output such as totals and check values.
  9077  //
  9078  //    in() should return zero on failure.  out() should return non-zero on
  9079  //    failure.  If either in() or out() fails, than inflateBack() returns a
  9080  //    Z_BUF_ERROR.  strm->next_in can be checked for Z_NULL to see whether it
  9081  //    was in() or out() that caused in the error.  Otherwise,  inflateBack()
  9082  //    returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format
  9083  //    error, or Z_MEM_ERROR if it could not allocate memory for the state.
  9084  //    inflateBack() can also return Z_STREAM_ERROR if the input parameters
  9085  //    are not correct, i.e. strm is Z_NULL or the state was not initialized.
  9086  //
  9087  func XinflateBack(tls *libc.TLS, strm Z_streamp, in In_func, in_desc uintptr, out Out_func, out_desc uintptr) int32 { /* infback.c:250:13: */
  9088  	bp := tls.Alloc(8)
  9089  	defer tls.Free(8)
  9090  
  9091  	var state uintptr
  9092  	// var next uintptr at bp, 8
  9093  	// next input
  9094  	var put uintptr // next output
  9095  	var have uint32
  9096  	var left uint32  // available input and output
  9097  	var hold uint64  // bit buffer
  9098  	var bits uint32  // bits in bit buffer
  9099  	var copy uint32  // number of stored or match bytes to copy
  9100  	var from uintptr // where to copy match bytes from
  9101  	var here Code    // current decoding table entry
  9102  	var last Code    // parent table entry
  9103  	var len uint32   // length to copy for repeats, bits to drop
  9104  	var ret int32
  9105  
  9106  	// Check that the strm exists and that the state was initialized
  9107  	if !((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) {
  9108  		goto __1
  9109  	}
  9110  	return -2
  9111  __1:
  9112  	;
  9113  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  9114  
  9115  	// Reset the state
  9116  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL)
  9117  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
  9118  	(*Inflate_state)(unsafe.Pointer(state)).Flast = 0
  9119  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
  9120  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
  9121  	if *(*uintptr)(unsafe.Pointer(bp /* next */)) != uintptr(Z_NULL) {
  9122  		have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  9123  	} else {
  9124  		have = uint32(0)
  9125  	}
  9126  	hold = uint64(0)
  9127  	bits = uint32(0)
  9128  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
  9129  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
  9130  
  9131  	// Inflate until end of block marked as last
  9132  __2:
  9133  	switch (*Inflate_state)(unsafe.Pointer(state)).Fmode {
  9134  	case TYPE:
  9135  		goto __6
  9136  
  9137  	case STORED:
  9138  		goto __7
  9139  
  9140  	case TABLE:
  9141  		goto __8
  9142  
  9143  	case LEN:
  9144  		goto __9
  9145  
  9146  	case DONE:
  9147  		goto __10
  9148  
  9149  	case BAD:
  9150  		goto __11
  9151  
  9152  	default:
  9153  		goto __12
  9154  	}
  9155  	goto __5
  9156  __6:
  9157  	// determine and dispatch block type
  9158  	if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) {
  9159  		goto __13
  9160  	}
  9161  __14:
  9162  	hold >>= (bits & uint32(7))
  9163  	bits = bits - (bits & uint32(7))
  9164  	goto __15
  9165  __15:
  9166  	if 0 != 0 {
  9167  		goto __14
  9168  	}
  9169  	goto __16
  9170  __16:
  9171  	;
  9172  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE
  9173  	goto __5
  9174  __13:
  9175  	;
  9176  __17:
  9177  __20:
  9178  	if !(bits < (uint32(3))) {
  9179  		goto __21
  9180  	}
  9181  __22:
  9182  __25:
  9183  	if !(have == uint32(0)) {
  9184  		goto __28
  9185  	}
  9186  	have = (*struct {
  9187  		f func(*libc.TLS, uintptr, uintptr) uint32
  9188  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9189  	if !(have == uint32(0)) {
  9190  		goto __29
  9191  	}
  9192  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9193  	ret = -5
  9194  	goto inf_leave
  9195  __29:
  9196  	;
  9197  __28:
  9198  	;
  9199  	goto __26
  9200  __26:
  9201  	if 0 != 0 {
  9202  		goto __25
  9203  	}
  9204  	goto __27
  9205  __27:
  9206  	;
  9207  	have--
  9208  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9209  	bits = bits + (uint32(8))
  9210  	goto __23
  9211  __23:
  9212  	if 0 != 0 {
  9213  		goto __22
  9214  	}
  9215  	goto __24
  9216  __24:
  9217  	;
  9218  	goto __20
  9219  __21:
  9220  	;
  9221  	goto __18
  9222  __18:
  9223  	if 0 != 0 {
  9224  		goto __17
  9225  	}
  9226  	goto __19
  9227  __19:
  9228  	;
  9229  	(*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1))))
  9230  __30:
  9231  	hold >>= 1
  9232  	bits = bits - (uint32(1))
  9233  	goto __31
  9234  __31:
  9235  	if 0 != 0 {
  9236  		goto __30
  9237  	}
  9238  	goto __32
  9239  __32:
  9240  	;
  9241  	switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) {
  9242  	case uint32(0):
  9243  		goto __34
  9244  	case uint32(1):
  9245  		goto __35
  9246  	case uint32(2):
  9247  		goto __36
  9248  	case uint32(3):
  9249  		goto __37
  9250  	}
  9251  	goto __33
  9252  __34: // stored block
  9253  	;
  9254  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED
  9255  	goto __33
  9256  __35: // fixed block
  9257  	fixedtables(tls, state)
  9258  
  9259  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN // decode codes
  9260  	goto __33
  9261  __36: // dynamic block
  9262  	;
  9263  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE
  9264  	goto __33
  9265  __37:
  9266  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */
  9267  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
  9268  __33:
  9269  	;
  9270  __38:
  9271  	hold >>= 2
  9272  	bits = bits - (uint32(2))
  9273  	goto __39
  9274  __39:
  9275  	if 0 != 0 {
  9276  		goto __38
  9277  	}
  9278  	goto __40
  9279  __40:
  9280  	;
  9281  	goto __5
  9282  
  9283  __7:
  9284  	// get and verify stored block length
  9285  __41:
  9286  	hold >>= (bits & uint32(7))
  9287  	bits = bits - (bits & uint32(7))
  9288  	goto __42
  9289  __42:
  9290  	if 0 != 0 {
  9291  		goto __41
  9292  	}
  9293  	goto __43
  9294  __43:
  9295  	; // go to byte boundary
  9296  __44:
  9297  __47:
  9298  	if !(bits < (uint32(32))) {
  9299  		goto __48
  9300  	}
  9301  __49:
  9302  __52:
  9303  	if !(have == uint32(0)) {
  9304  		goto __55
  9305  	}
  9306  	have = (*struct {
  9307  		f func(*libc.TLS, uintptr, uintptr) uint32
  9308  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9309  	if !(have == uint32(0)) {
  9310  		goto __56
  9311  	}
  9312  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9313  	ret = -5
  9314  	goto inf_leave
  9315  __56:
  9316  	;
  9317  __55:
  9318  	;
  9319  	goto __53
  9320  __53:
  9321  	if 0 != 0 {
  9322  		goto __52
  9323  	}
  9324  	goto __54
  9325  __54:
  9326  	;
  9327  	have--
  9328  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9329  	bits = bits + (uint32(8))
  9330  	goto __50
  9331  __50:
  9332  	if 0 != 0 {
  9333  		goto __49
  9334  	}
  9335  	goto __51
  9336  __51:
  9337  	;
  9338  	goto __47
  9339  __48:
  9340  	;
  9341  	goto __45
  9342  __45:
  9343  	if 0 != 0 {
  9344  		goto __44
  9345  	}
  9346  	goto __46
  9347  __46:
  9348  	;
  9349  	if !((hold & uint64(0xffff)) != ((hold >> 16) ^ uint64(0xffff))) {
  9350  		goto __57
  9351  	}
  9352  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */
  9353  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
  9354  	goto __5
  9355  __57:
  9356  	;
  9357  	(*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff))
  9358  
  9359  __58:
  9360  	hold = uint64(0)
  9361  	bits = uint32(0)
  9362  	goto __59
  9363  __59:
  9364  	if 0 != 0 {
  9365  		goto __58
  9366  	}
  9367  	goto __60
  9368  __60:
  9369  	;
  9370  
  9371  	// copy stored block from input to output
  9372  __61:
  9373  	if !((*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0)) {
  9374  		goto __62
  9375  	}
  9376  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
  9377  __63:
  9378  	if !(have == uint32(0)) {
  9379  		goto __66
  9380  	}
  9381  	have = (*struct {
  9382  		f func(*libc.TLS, uintptr, uintptr) uint32
  9383  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9384  	if !(have == uint32(0)) {
  9385  		goto __67
  9386  	}
  9387  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9388  	ret = -5
  9389  	goto inf_leave
  9390  __67:
  9391  	;
  9392  __66:
  9393  	;
  9394  	goto __64
  9395  __64:
  9396  	if 0 != 0 {
  9397  		goto __63
  9398  	}
  9399  	goto __65
  9400  __65:
  9401  	;
  9402  __68:
  9403  	if !(left == uint32(0)) {
  9404  		goto __71
  9405  	}
  9406  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
  9407  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
  9408  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = left
  9409  	if !((*struct {
  9410  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
  9411  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) {
  9412  		goto __72
  9413  	}
  9414  	ret = -5
  9415  	goto inf_leave
  9416  __72:
  9417  	;
  9418  __71:
  9419  	;
  9420  	goto __69
  9421  __69:
  9422  	if 0 != 0 {
  9423  		goto __68
  9424  	}
  9425  	goto __70
  9426  __70:
  9427  	;
  9428  	if !(copy > have) {
  9429  		goto __73
  9430  	}
  9431  	copy = have
  9432  __73:
  9433  	;
  9434  	if !(copy > left) {
  9435  		goto __74
  9436  	}
  9437  	copy = left
  9438  __74:
  9439  	;
  9440  	libc.Xmemcpy(tls, put, *(*uintptr)(unsafe.Pointer(bp /* next */)), uint64(copy))
  9441  	have = have - (copy)
  9442  	*(*uintptr)(unsafe.Pointer(bp /* next */)) += uintptr(copy)
  9443  	left = left - (copy)
  9444  	put += uintptr(copy)
  9445  	*(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy)
  9446  	goto __61
  9447  __62:
  9448  	;
  9449  
  9450  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
  9451  	goto __5
  9452  
  9453  __8:
  9454  	// get dynamic table entries descriptor
  9455  __75:
  9456  __78:
  9457  	if !(bits < (uint32(14))) {
  9458  		goto __79
  9459  	}
  9460  __80:
  9461  __83:
  9462  	if !(have == uint32(0)) {
  9463  		goto __86
  9464  	}
  9465  	have = (*struct {
  9466  		f func(*libc.TLS, uintptr, uintptr) uint32
  9467  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9468  	if !(have == uint32(0)) {
  9469  		goto __87
  9470  	}
  9471  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9472  	ret = -5
  9473  	goto inf_leave
  9474  __87:
  9475  	;
  9476  __86:
  9477  	;
  9478  	goto __84
  9479  __84:
  9480  	if 0 != 0 {
  9481  		goto __83
  9482  	}
  9483  	goto __85
  9484  __85:
  9485  	;
  9486  	have--
  9487  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9488  	bits = bits + (uint32(8))
  9489  	goto __81
  9490  __81:
  9491  	if 0 != 0 {
  9492  		goto __80
  9493  	}
  9494  	goto __82
  9495  __82:
  9496  	;
  9497  	goto __78
  9498  __79:
  9499  	;
  9500  	goto __76
  9501  __76:
  9502  	if 0 != 0 {
  9503  		goto __75
  9504  	}
  9505  	goto __77
  9506  __77:
  9507  	;
  9508  	(*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257))
  9509  __88:
  9510  	hold >>= 5
  9511  	bits = bits - (uint32(5))
  9512  	goto __89
  9513  __89:
  9514  	if 0 != 0 {
  9515  		goto __88
  9516  	}
  9517  	goto __90
  9518  __90:
  9519  	;
  9520  	(*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1))
  9521  __91:
  9522  	hold >>= 5
  9523  	bits = bits - (uint32(5))
  9524  	goto __92
  9525  __92:
  9526  	if 0 != 0 {
  9527  		goto __91
  9528  	}
  9529  	goto __93
  9530  __93:
  9531  	;
  9532  	(*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4))
  9533  __94:
  9534  	hold >>= 4
  9535  	bits = bits - (uint32(4))
  9536  	goto __95
  9537  __95:
  9538  	if 0 != 0 {
  9539  		goto __94
  9540  	}
  9541  	goto __96
  9542  __96:
  9543  	;
  9544  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) {
  9545  		goto __97
  9546  	}
  9547  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */
  9548  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
  9549  	goto __5
  9550  __97:
  9551  	;
  9552  
  9553  	// get code length code lengths (not a typo)
  9554  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
  9555  __98:
  9556  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) {
  9557  		goto __99
  9558  	}
  9559  __100:
  9560  __103:
  9561  	if !(bits < (uint32(3))) {
  9562  		goto __104
  9563  	}
  9564  __105:
  9565  __108:
  9566  	if !(have == uint32(0)) {
  9567  		goto __111
  9568  	}
  9569  	have = (*struct {
  9570  		f func(*libc.TLS, uintptr, uintptr) uint32
  9571  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9572  	if !(have == uint32(0)) {
  9573  		goto __112
  9574  	}
  9575  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9576  	ret = -5
  9577  	goto inf_leave
  9578  __112:
  9579  	;
  9580  __111:
  9581  	;
  9582  	goto __109
  9583  __109:
  9584  	if 0 != 0 {
  9585  		goto __108
  9586  	}
  9587  	goto __110
  9588  __110:
  9589  	;
  9590  	have--
  9591  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9592  	bits = bits + (uint32(8))
  9593  	goto __106
  9594  __106:
  9595  	if 0 != 0 {
  9596  		goto __105
  9597  	}
  9598  	goto __107
  9599  __107:
  9600  	;
  9601  	goto __103
  9602  __104:
  9603  	;
  9604  	goto __101
  9605  __101:
  9606  	if 0 != 0 {
  9607  		goto __100
  9608  	}
  9609  	goto __102
  9610  __102:
  9611  	;
  9612  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
  9613  __113:
  9614  	hold >>= 3
  9615  	bits = bits - (uint32(3))
  9616  	goto __114
  9617  __114:
  9618  	if 0 != 0 {
  9619  		goto __113
  9620  	}
  9621  	goto __115
  9622  __115:
  9623  	;
  9624  	goto __98
  9625  __99:
  9626  	;
  9627  __116:
  9628  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) {
  9629  		goto __117
  9630  	}
  9631  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0)
  9632  	goto __116
  9633  __117:
  9634  	;
  9635  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */
  9636  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
  9637  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7)
  9638  	ret = Xinflate_table(tls, CODES, state+152 /* &.lens */, uint32(19), (state + 144 /* &.next */),
  9639  		(state + 120 /* &.lenbits */), state+792 /* &.work */)
  9640  	if !(ret != 0) {
  9641  		goto __118
  9642  	}
  9643  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */
  9644  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
  9645  	goto __5
  9646  __118:
  9647  	;
  9648  
  9649  	// get length and distance code code lengths
  9650  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
  9651  __119:
  9652  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
  9653  		goto __120
  9654  	}
  9655  __121:
  9656  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
  9657  	if !((uint32(here.Fbits)) <= bits) {
  9658  		goto __124
  9659  	}
  9660  	goto __123
  9661  __124:
  9662  	;
  9663  __125:
  9664  __128:
  9665  	if !(have == uint32(0)) {
  9666  		goto __131
  9667  	}
  9668  	have = (*struct {
  9669  		f func(*libc.TLS, uintptr, uintptr) uint32
  9670  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9671  	if !(have == uint32(0)) {
  9672  		goto __132
  9673  	}
  9674  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9675  	ret = -5
  9676  	goto inf_leave
  9677  __132:
  9678  	;
  9679  __131:
  9680  	;
  9681  	goto __129
  9682  __129:
  9683  	if 0 != 0 {
  9684  		goto __128
  9685  	}
  9686  	goto __130
  9687  __130:
  9688  	;
  9689  	have--
  9690  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9691  	bits = bits + (uint32(8))
  9692  	goto __126
  9693  __126:
  9694  	if 0 != 0 {
  9695  		goto __125
  9696  	}
  9697  	goto __127
  9698  __127:
  9699  	;
  9700  	goto __122
  9701  __122:
  9702  	goto __121
  9703  	goto __123
  9704  __123:
  9705  	;
  9706  	if !(int32(here.Fval) < 16) {
  9707  		goto __133
  9708  	}
  9709  __135:
  9710  	hold >>= int32(here.Fbits)
  9711  	bits = bits - (uint32(here.Fbits))
  9712  	goto __136
  9713  __136:
  9714  	if 0 != 0 {
  9715  		goto __135
  9716  	}
  9717  	goto __137
  9718  __137:
  9719  	;
  9720  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval
  9721  	goto __134
  9722  __133:
  9723  	if !(int32(here.Fval) == 16) {
  9724  		goto __138
  9725  	}
  9726  __140:
  9727  __143:
  9728  	if !(bits < (uint32(int32(here.Fbits) + 2))) {
  9729  		goto __144
  9730  	}
  9731  __145:
  9732  __148:
  9733  	if !(have == uint32(0)) {
  9734  		goto __151
  9735  	}
  9736  	have = (*struct {
  9737  		f func(*libc.TLS, uintptr, uintptr) uint32
  9738  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9739  	if !(have == uint32(0)) {
  9740  		goto __152
  9741  	}
  9742  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9743  	ret = -5
  9744  	goto inf_leave
  9745  __152:
  9746  	;
  9747  __151:
  9748  	;
  9749  	goto __149
  9750  __149:
  9751  	if 0 != 0 {
  9752  		goto __148
  9753  	}
  9754  	goto __150
  9755  __150:
  9756  	;
  9757  	have--
  9758  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9759  	bits = bits + (uint32(8))
  9760  	goto __146
  9761  __146:
  9762  	if 0 != 0 {
  9763  		goto __145
  9764  	}
  9765  	goto __147
  9766  __147:
  9767  	;
  9768  	goto __143
  9769  __144:
  9770  	;
  9771  	goto __141
  9772  __141:
  9773  	if 0 != 0 {
  9774  		goto __140
  9775  	}
  9776  	goto __142
  9777  __142:
  9778  	;
  9779  __153:
  9780  	hold >>= int32(here.Fbits)
  9781  	bits = bits - (uint32(here.Fbits))
  9782  	goto __154
  9783  __154:
  9784  	if 0 != 0 {
  9785  		goto __153
  9786  	}
  9787  	goto __155
  9788  __155:
  9789  	;
  9790  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) {
  9791  		goto __156
  9792  	}
  9793  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
  9794  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
  9795  	goto __120
  9796  __156:
  9797  	;
  9798  	len = uint32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2)))
  9799  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1))))
  9800  __157:
  9801  	hold >>= 2
  9802  	bits = bits - (uint32(2))
  9803  	goto __158
  9804  __158:
  9805  	if 0 != 0 {
  9806  		goto __157
  9807  	}
  9808  	goto __159
  9809  __159:
  9810  	;
  9811  	goto __139
  9812  __138:
  9813  	if !(int32(here.Fval) == 17) {
  9814  		goto __160
  9815  	}
  9816  __162:
  9817  __165:
  9818  	if !(bits < (uint32(int32(here.Fbits) + 3))) {
  9819  		goto __166
  9820  	}
  9821  __167:
  9822  __170:
  9823  	if !(have == uint32(0)) {
  9824  		goto __173
  9825  	}
  9826  	have = (*struct {
  9827  		f func(*libc.TLS, uintptr, uintptr) uint32
  9828  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9829  	if !(have == uint32(0)) {
  9830  		goto __174
  9831  	}
  9832  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9833  	ret = -5
  9834  	goto inf_leave
  9835  __174:
  9836  	;
  9837  __173:
  9838  	;
  9839  	goto __171
  9840  __171:
  9841  	if 0 != 0 {
  9842  		goto __170
  9843  	}
  9844  	goto __172
  9845  __172:
  9846  	;
  9847  	have--
  9848  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9849  	bits = bits + (uint32(8))
  9850  	goto __168
  9851  __168:
  9852  	if 0 != 0 {
  9853  		goto __167
  9854  	}
  9855  	goto __169
  9856  __169:
  9857  	;
  9858  	goto __165
  9859  __166:
  9860  	;
  9861  	goto __163
  9862  __163:
  9863  	if 0 != 0 {
  9864  		goto __162
  9865  	}
  9866  	goto __164
  9867  __164:
  9868  	;
  9869  __175:
  9870  	hold >>= int32(here.Fbits)
  9871  	bits = bits - (uint32(here.Fbits))
  9872  	goto __176
  9873  __176:
  9874  	if 0 != 0 {
  9875  		goto __175
  9876  	}
  9877  	goto __177
  9878  __177:
  9879  	;
  9880  	len = uint32(0)
  9881  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
  9882  __178:
  9883  	hold >>= 3
  9884  	bits = bits - (uint32(3))
  9885  	goto __179
  9886  __179:
  9887  	if 0 != 0 {
  9888  		goto __178
  9889  	}
  9890  	goto __180
  9891  __180:
  9892  	;
  9893  	goto __161
  9894  __160:
  9895  __181:
  9896  __184:
  9897  	if !(bits < (uint32(int32(here.Fbits) + 7))) {
  9898  		goto __185
  9899  	}
  9900  __186:
  9901  __189:
  9902  	if !(have == uint32(0)) {
  9903  		goto __192
  9904  	}
  9905  	have = (*struct {
  9906  		f func(*libc.TLS, uintptr, uintptr) uint32
  9907  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
  9908  	if !(have == uint32(0)) {
  9909  		goto __193
  9910  	}
  9911  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
  9912  	ret = -5
  9913  	goto inf_leave
  9914  __193:
  9915  	;
  9916  __192:
  9917  	;
  9918  	goto __190
  9919  __190:
  9920  	if 0 != 0 {
  9921  		goto __189
  9922  	}
  9923  	goto __191
  9924  __191:
  9925  	;
  9926  	have--
  9927  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
  9928  	bits = bits + (uint32(8))
  9929  	goto __187
  9930  __187:
  9931  	if 0 != 0 {
  9932  		goto __186
  9933  	}
  9934  	goto __188
  9935  __188:
  9936  	;
  9937  	goto __184
  9938  __185:
  9939  	;
  9940  	goto __182
  9941  __182:
  9942  	if 0 != 0 {
  9943  		goto __181
  9944  	}
  9945  	goto __183
  9946  __183:
  9947  	;
  9948  __194:
  9949  	hold >>= int32(here.Fbits)
  9950  	bits = bits - (uint32(here.Fbits))
  9951  	goto __195
  9952  __195:
  9953  	if 0 != 0 {
  9954  		goto __194
  9955  	}
  9956  	goto __196
  9957  __196:
  9958  	;
  9959  	len = uint32(0)
  9960  	copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1))))
  9961  __197:
  9962  	hold >>= 7
  9963  	bits = bits - (uint32(7))
  9964  	goto __198
  9965  __198:
  9966  	if 0 != 0 {
  9967  		goto __197
  9968  	}
  9969  	goto __199
  9970  __199:
  9971  	;
  9972  __161:
  9973  	;
  9974  __139:
  9975  	;
  9976  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
  9977  		goto __200
  9978  	}
  9979  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
  9980  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
  9981  	goto __120
  9982  __200:
  9983  	;
  9984  __201:
  9985  	if !(libc.PostDecUint32(&copy, 1) != 0) {
  9986  		goto __202
  9987  	}
  9988  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len)
  9989  	goto __201
  9990  __202:
  9991  	;
  9992  __134:
  9993  	;
  9994  	goto __119
  9995  __120:
  9996  	;
  9997  
  9998  	// handle error breaks in while
  9999  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) {
 10000  		goto __203
 10001  	}
 10002  	goto __5
 10003  __203:
 10004  	;
 10005  
 10006  	// check for end-of-block code (better have one)
 10007  	if !(int32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + 256*2))) == 0) {
 10008  		goto __204
 10009  	}
 10010  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */
 10011  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10012  	goto __5
 10013  __204:
 10014  	;
 10015  
 10016  	// build code tables -- note: do not change the lenbits or distbits
 10017  	//                values here (9 and 6) without reading the comments in inftrees.h
 10018  	//                concerning the ENOUGH constants, which depend on those values
 10019  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */
 10020  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 10021  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
 10022  	ret = Xinflate_table(tls, LENS, state+152 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 144 /* &.next */),
 10023  		(state + 120 /* &.lenbits */), state+792 /* &.work */)
 10024  	if !(ret != 0) {
 10025  		goto __205
 10026  	}
 10027  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */
 10028  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10029  	goto __5
 10030  __205:
 10031  	;
 10032  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 10033  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6)
 10034  	ret = Xinflate_table(tls, DISTS, ((state + 152 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist,
 10035  		(state + 144 /* &.next */), (state + 124 /* &.distbits */), state+792 /* &.work */)
 10036  	if !(ret != 0) {
 10037  		goto __206
 10038  	}
 10039  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */
 10040  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10041  	goto __5
 10042  __206:
 10043  	;
 10044  
 10045  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 10046  
 10047  __9:
 10048  	// use inflate_fast() if we have enough input and output
 10049  	if !((have >= uint32(6)) && (left >= uint32(258))) {
 10050  		goto __207
 10051  	}
 10052  __208:
 10053  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 10054  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 10055  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */))
 10056  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 10057  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 10058  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 10059  	goto __209
 10060  __209:
 10061  	if 0 != 0 {
 10062  		goto __208
 10063  	}
 10064  	goto __210
 10065  __210:
 10066  	;
 10067  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) {
 10068  		goto __211
 10069  	}
 10070  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - left)
 10071  __211:
 10072  	;
 10073  	Xinflate_fast(tls, strm, (*Inflate_state)(unsafe.Pointer(state)).Fwsize)
 10074  __212:
 10075  	put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 10076  	left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
 10077  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 10078  	have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
 10079  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 10080  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 10081  	goto __213
 10082  __213:
 10083  	if 0 != 0 {
 10084  		goto __212
 10085  	}
 10086  	goto __214
 10087  __214:
 10088  	;
 10089  	goto __5
 10090  __207:
 10091  	;
 10092  
 10093  	// get a literal, length, or end-of-block code
 10094  __215:
 10095  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
 10096  	if !((uint32(here.Fbits)) <= bits) {
 10097  		goto __218
 10098  	}
 10099  	goto __217
 10100  __218:
 10101  	;
 10102  __219:
 10103  __222:
 10104  	if !(have == uint32(0)) {
 10105  		goto __225
 10106  	}
 10107  	have = (*struct {
 10108  		f func(*libc.TLS, uintptr, uintptr) uint32
 10109  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10110  	if !(have == uint32(0)) {
 10111  		goto __226
 10112  	}
 10113  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10114  	ret = -5
 10115  	goto inf_leave
 10116  __226:
 10117  	;
 10118  __225:
 10119  	;
 10120  	goto __223
 10121  __223:
 10122  	if 0 != 0 {
 10123  		goto __222
 10124  	}
 10125  	goto __224
 10126  __224:
 10127  	;
 10128  	have--
 10129  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10130  	bits = bits + (uint32(8))
 10131  	goto __220
 10132  __220:
 10133  	if 0 != 0 {
 10134  		goto __219
 10135  	}
 10136  	goto __221
 10137  __221:
 10138  	;
 10139  	goto __216
 10140  __216:
 10141  	goto __215
 10142  	goto __217
 10143  __217:
 10144  	;
 10145  	if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) {
 10146  		goto __227
 10147  	}
 10148  	last = here
 10149  __228:
 10150  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 10151  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 10152  		goto __231
 10153  	}
 10154  	goto __230
 10155  __231:
 10156  	;
 10157  __232:
 10158  __235:
 10159  	if !(have == uint32(0)) {
 10160  		goto __238
 10161  	}
 10162  	have = (*struct {
 10163  		f func(*libc.TLS, uintptr, uintptr) uint32
 10164  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10165  	if !(have == uint32(0)) {
 10166  		goto __239
 10167  	}
 10168  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10169  	ret = -5
 10170  	goto inf_leave
 10171  __239:
 10172  	;
 10173  __238:
 10174  	;
 10175  	goto __236
 10176  __236:
 10177  	if 0 != 0 {
 10178  		goto __235
 10179  	}
 10180  	goto __237
 10181  __237:
 10182  	;
 10183  	have--
 10184  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10185  	bits = bits + (uint32(8))
 10186  	goto __233
 10187  __233:
 10188  	if 0 != 0 {
 10189  		goto __232
 10190  	}
 10191  	goto __234
 10192  __234:
 10193  	;
 10194  	goto __229
 10195  __229:
 10196  	goto __228
 10197  	goto __230
 10198  __230:
 10199  	;
 10200  __240:
 10201  	hold >>= int32(last.Fbits)
 10202  	bits = bits - (uint32(last.Fbits))
 10203  	goto __241
 10204  __241:
 10205  	if 0 != 0 {
 10206  		goto __240
 10207  	}
 10208  	goto __242
 10209  __242:
 10210  	;
 10211  __227:
 10212  	;
 10213  __243:
 10214  	hold >>= int32(here.Fbits)
 10215  	bits = bits - (uint32(here.Fbits))
 10216  	goto __244
 10217  __244:
 10218  	if 0 != 0 {
 10219  		goto __243
 10220  	}
 10221  	goto __245
 10222  __245:
 10223  	;
 10224  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval)
 10225  
 10226  	// process literal
 10227  	if !(int32(here.Fop) == 0) {
 10228  		goto __246
 10229  	}
 10230  
 10231  __247:
 10232  	if !(left == uint32(0)) {
 10233  		goto __250
 10234  	}
 10235  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 10236  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 10237  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = left
 10238  	if !((*struct {
 10239  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
 10240  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) {
 10241  		goto __251
 10242  	}
 10243  	ret = -5
 10244  	goto inf_leave
 10245  __251:
 10246  	;
 10247  __250:
 10248  	;
 10249  	goto __248
 10250  __248:
 10251  	if 0 != 0 {
 10252  		goto __247
 10253  	}
 10254  	goto __249
 10255  __249:
 10256  	;
 10257  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength)
 10258  	left--
 10259  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 10260  	goto __5
 10261  __246:
 10262  	;
 10263  
 10264  	// process end of block
 10265  	if !((int32(here.Fop) & 32) != 0) {
 10266  		goto __252
 10267  	}
 10268  
 10269  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 10270  	goto __5
 10271  __252:
 10272  	;
 10273  
 10274  	// invalid code
 10275  	if !((int32(here.Fop) & 64) != 0) {
 10276  		goto __253
 10277  	}
 10278  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */
 10279  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10280  	goto __5
 10281  __253:
 10282  	;
 10283  
 10284  	// length code -- get extra bits, if any
 10285  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 10286  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) {
 10287  		goto __254
 10288  	}
 10289  __255:
 10290  __258:
 10291  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 10292  		goto __259
 10293  	}
 10294  __260:
 10295  __263:
 10296  	if !(have == uint32(0)) {
 10297  		goto __266
 10298  	}
 10299  	have = (*struct {
 10300  		f func(*libc.TLS, uintptr, uintptr) uint32
 10301  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10302  	if !(have == uint32(0)) {
 10303  		goto __267
 10304  	}
 10305  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10306  	ret = -5
 10307  	goto inf_leave
 10308  __267:
 10309  	;
 10310  __266:
 10311  	;
 10312  	goto __264
 10313  __264:
 10314  	if 0 != 0 {
 10315  		goto __263
 10316  	}
 10317  	goto __265
 10318  __265:
 10319  	;
 10320  	have--
 10321  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10322  	bits = bits + (uint32(8))
 10323  	goto __261
 10324  __261:
 10325  	if 0 != 0 {
 10326  		goto __260
 10327  	}
 10328  	goto __262
 10329  __262:
 10330  	;
 10331  	goto __258
 10332  __259:
 10333  	;
 10334  	goto __256
 10335  __256:
 10336  	if 0 != 0 {
 10337  		goto __255
 10338  	}
 10339  	goto __257
 10340  __257:
 10341  	;
 10342  	*(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 10343  __268:
 10344  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 10345  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 10346  	goto __269
 10347  __269:
 10348  	if 0 != 0 {
 10349  		goto __268
 10350  	}
 10351  	goto __270
 10352  __270:
 10353  	;
 10354  __254:
 10355  	;
 10356  
 10357  	// get distance code
 10358  __271:
 10359  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4))
 10360  	if !((uint32(here.Fbits)) <= bits) {
 10361  		goto __274
 10362  	}
 10363  	goto __273
 10364  __274:
 10365  	;
 10366  __275:
 10367  __278:
 10368  	if !(have == uint32(0)) {
 10369  		goto __281
 10370  	}
 10371  	have = (*struct {
 10372  		f func(*libc.TLS, uintptr, uintptr) uint32
 10373  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10374  	if !(have == uint32(0)) {
 10375  		goto __282
 10376  	}
 10377  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10378  	ret = -5
 10379  	goto inf_leave
 10380  __282:
 10381  	;
 10382  __281:
 10383  	;
 10384  	goto __279
 10385  __279:
 10386  	if 0 != 0 {
 10387  		goto __278
 10388  	}
 10389  	goto __280
 10390  __280:
 10391  	;
 10392  	have--
 10393  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10394  	bits = bits + (uint32(8))
 10395  	goto __276
 10396  __276:
 10397  	if 0 != 0 {
 10398  		goto __275
 10399  	}
 10400  	goto __277
 10401  __277:
 10402  	;
 10403  	goto __272
 10404  __272:
 10405  	goto __271
 10406  	goto __273
 10407  __273:
 10408  	;
 10409  	if !((int32(here.Fop) & 0xf0) == 0) {
 10410  		goto __283
 10411  	}
 10412  	last = here
 10413  __284:
 10414  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 10415  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 10416  		goto __287
 10417  	}
 10418  	goto __286
 10419  __287:
 10420  	;
 10421  __288:
 10422  __291:
 10423  	if !(have == uint32(0)) {
 10424  		goto __294
 10425  	}
 10426  	have = (*struct {
 10427  		f func(*libc.TLS, uintptr, uintptr) uint32
 10428  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10429  	if !(have == uint32(0)) {
 10430  		goto __295
 10431  	}
 10432  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10433  	ret = -5
 10434  	goto inf_leave
 10435  __295:
 10436  	;
 10437  __294:
 10438  	;
 10439  	goto __292
 10440  __292:
 10441  	if 0 != 0 {
 10442  		goto __291
 10443  	}
 10444  	goto __293
 10445  __293:
 10446  	;
 10447  	have--
 10448  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10449  	bits = bits + (uint32(8))
 10450  	goto __289
 10451  __289:
 10452  	if 0 != 0 {
 10453  		goto __288
 10454  	}
 10455  	goto __290
 10456  __290:
 10457  	;
 10458  	goto __285
 10459  __285:
 10460  	goto __284
 10461  	goto __286
 10462  __286:
 10463  	;
 10464  __296:
 10465  	hold >>= int32(last.Fbits)
 10466  	bits = bits - (uint32(last.Fbits))
 10467  	goto __297
 10468  __297:
 10469  	if 0 != 0 {
 10470  		goto __296
 10471  	}
 10472  	goto __298
 10473  __298:
 10474  	;
 10475  __283:
 10476  	;
 10477  __299:
 10478  	hold >>= int32(here.Fbits)
 10479  	bits = bits - (uint32(here.Fbits))
 10480  	goto __300
 10481  __300:
 10482  	if 0 != 0 {
 10483  		goto __299
 10484  	}
 10485  	goto __301
 10486  __301:
 10487  	;
 10488  	if !((int32(here.Fop) & 64) != 0) {
 10489  		goto __302
 10490  	}
 10491  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */
 10492  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10493  	goto __5
 10494  __302:
 10495  	;
 10496  	(*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval)
 10497  
 10498  	// get distance extra bits, if any
 10499  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 10500  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) {
 10501  		goto __303
 10502  	}
 10503  __304:
 10504  __307:
 10505  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 10506  		goto __308
 10507  	}
 10508  __309:
 10509  __312:
 10510  	if !(have == uint32(0)) {
 10511  		goto __315
 10512  	}
 10513  	have = (*struct {
 10514  		f func(*libc.TLS, uintptr, uintptr) uint32
 10515  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10516  	if !(have == uint32(0)) {
 10517  		goto __316
 10518  	}
 10519  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10520  	ret = -5
 10521  	goto inf_leave
 10522  __316:
 10523  	;
 10524  __315:
 10525  	;
 10526  	goto __313
 10527  __313:
 10528  	if 0 != 0 {
 10529  		goto __312
 10530  	}
 10531  	goto __314
 10532  __314:
 10533  	;
 10534  	have--
 10535  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10536  	bits = bits + (uint32(8))
 10537  	goto __310
 10538  __310:
 10539  	if 0 != 0 {
 10540  		goto __309
 10541  	}
 10542  	goto __311
 10543  __311:
 10544  	;
 10545  	goto __307
 10546  __308:
 10547  	;
 10548  	goto __305
 10549  __305:
 10550  	if 0 != 0 {
 10551  		goto __304
 10552  	}
 10553  	goto __306
 10554  __306:
 10555  	;
 10556  	*(*uint32)(unsafe.Pointer(state + 96 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 10557  __317:
 10558  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 10559  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 10560  	goto __318
 10561  __318:
 10562  	if 0 != 0 {
 10563  		goto __317
 10564  	}
 10565  	goto __319
 10566  __319:
 10567  	;
 10568  __303:
 10569  	;
 10570  	if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (func() uint32 {
 10571  		if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 10572  			return left
 10573  		}
 10574  		return uint32(0)
 10575  	}()))) {
 10576  		goto __320
 10577  	}
 10578  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */
 10579  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10580  	goto __5
 10581  __320:
 10582  	;
 10583  
 10584  	// copy match from window to output
 10585  __321:
 10586  __324:
 10587  	if !(left == uint32(0)) {
 10588  		goto __327
 10589  	}
 10590  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 10591  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 10592  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = left
 10593  	if !((*struct {
 10594  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
 10595  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) {
 10596  		goto __328
 10597  	}
 10598  	ret = -5
 10599  	goto inf_leave
 10600  __328:
 10601  	;
 10602  __327:
 10603  	;
 10604  	goto __325
 10605  __325:
 10606  	if 0 != 0 {
 10607  		goto __324
 10608  	}
 10609  	goto __326
 10610  __326:
 10611  	;
 10612  	copy = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Foffset)
 10613  	if !(copy < left) {
 10614  		goto __329
 10615  	}
 10616  	from = (put + uintptr(copy))
 10617  	copy = (left - copy)
 10618  	goto __330
 10619  __329:
 10620  	from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset))
 10621  	copy = left
 10622  __330:
 10623  	;
 10624  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) {
 10625  		goto __331
 10626  	}
 10627  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 10628  __331:
 10629  	;
 10630  	*(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy)
 10631  	left = left - (copy)
 10632  __332:
 10633  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10634  	goto __333
 10635  __333:
 10636  	if libc.PreDecUint32(&copy, 1) != 0 {
 10637  		goto __332
 10638  	}
 10639  	goto __334
 10640  __334:
 10641  	;
 10642  	goto __322
 10643  __322:
 10644  	if (*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0) {
 10645  		goto __321
 10646  	}
 10647  	goto __323
 10648  __323:
 10649  	;
 10650  	goto __5
 10651  
 10652  __10:
 10653  	// inflate stream terminated properly -- write leftover output
 10654  	ret = Z_STREAM_END
 10655  	if !(left < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) {
 10656  		goto __335
 10657  	}
 10658  	if !((*struct {
 10659  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
 10660  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, ((*Inflate_state)(unsafe.Pointer(state)).Fwsize-left)) != 0) {
 10661  		goto __336
 10662  	}
 10663  	ret = -5
 10664  __336:
 10665  	;
 10666  __335:
 10667  	;
 10668  	goto inf_leave
 10669  
 10670  __11:
 10671  	ret = -3
 10672  	goto inf_leave
 10673  
 10674  __12: // can't happen, but makes compilers happy
 10675  	ret = -2
 10676  	goto inf_leave
 10677  __5:
 10678  	;
 10679  	goto __3
 10680  __3:
 10681  	goto __2
 10682  	goto __4
 10683  __4:
 10684  	;
 10685  
 10686  	// Return unused input
 10687  inf_leave:
 10688  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */))
 10689  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 10690  	return ret
 10691  }
 10692  
 10693  var order =                                                                                                                                                                                                                          // permutation of code lengths
 10694  [19]uint16{uint16(16), uint16(17), uint16(18), uint16(0), uint16(8), uint16(7), uint16(9), uint16(6), uint16(10), uint16(5), uint16(11), uint16(4), uint16(12), uint16(3), uint16(13), uint16(2), uint16(14), uint16(1), uint16(15)} /* infback.c:269:33 */
 10695  
 10696  func XinflateBackEnd(tls *libc.TLS, strm Z_streamp) int32 { /* infback.c:631:13: */
 10697  	if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) {
 10698  		return -2
 10699  	}
 10700  	(*struct {
 10701  		f func(*libc.TLS, Voidpf, Voidpf)
 10702  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
 10703  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
 10704  
 10705  	return Z_OK
 10706  }
 10707  
 10708  //
 10709  //    Decode literal, length, and distance codes and write out the resulting
 10710  //    literal and match bytes until either not enough input or output is
 10711  //    available, an end-of-block is encountered, or a data error is encountered.
 10712  //    When large enough input and output buffers are supplied to inflate(), for
 10713  //    example, a 16K input buffer and a 64K output buffer, more than 95% of the
 10714  //    inflate execution time is spent in this routine.
 10715  //
 10716  //    Entry assumptions:
 10717  //
 10718  //         state->mode == LEN
 10719  //         strm->avail_in >= 6
 10720  //         strm->avail_out >= 258
 10721  //         start >= strm->avail_out
 10722  //         state->bits < 8
 10723  //
 10724  //    On return, state->mode is one of:
 10725  //
 10726  //         LEN -- ran out of enough output space or enough available input
 10727  //         TYPE -- reached end of block code, inflate() to interpret next block
 10728  //         BAD -- error in block data
 10729  //
 10730  //    Notes:
 10731  //
 10732  //     - The maximum input bits used by a length/distance pair is 15 bits for the
 10733  //       length code, 5 bits for the length extra, 15 bits for the distance code,
 10734  //       and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
 10735  //       Therefore if strm->avail_in >= 6, then there is enough input to avoid
 10736  //       checking for available input while decoding.
 10737  //
 10738  //     - The maximum bytes that a single length/distance pair can output is 258
 10739  //       bytes, which is the maximum length that can be coded.  inflate_fast()
 10740  //       requires strm->avail_out >= 258 for each loop to avoid checking for
 10741  //       output space.
 10742  //
 10743  func Xinflate_fast(tls *libc.TLS, strm Z_streamp, start uint32) { /* inffast.c:50:20: */
 10744  	var state uintptr
 10745  	var in uintptr     // local strm->next_in
 10746  	var last uintptr   // have enough input while in < last
 10747  	var out uintptr    // local strm->next_out
 10748  	var beg uintptr    // inflate()'s initial strm->next_out
 10749  	var end uintptr    // while out < end, enough space available
 10750  	var wsize uint32   // window size or zero if not using window
 10751  	var whave uint32   // valid bytes in the window
 10752  	var wnext uint32   // window write index
 10753  	var window uintptr // allocated sliding window, if wsize != 0
 10754  	var hold uint64    // local strm->hold
 10755  	var bits uint32    // local strm->bits
 10756  	var lcode uintptr  // local strm->lencode
 10757  	var dcode uintptr  // local strm->distcode
 10758  	var lmask uint32   // mask for first level of length codes
 10759  	var dmask uint32   // mask for first level of distance codes
 10760  	var here Code      // retrieved table entry
 10761  	var op uint32      // code bits, operation, extra bits, or
 10762  	//  window position, window bytes to copy
 10763  	var len uint32   // match length, unused bytes
 10764  	var dist uint32  // match distance
 10765  	var from uintptr // where to copy match from
 10766  
 10767  	// copy state to local variables
 10768  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 10769  	in = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 10770  	last = (in + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_in - UInt(5))))
 10771  	out = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 10772  	beg = (out - uintptr((start - (*Z_stream)(unsafe.Pointer(strm)).Favail_out)))
 10773  	end = (out + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_out - UInt(257))))
 10774  	wsize = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 10775  	whave = (*Inflate_state)(unsafe.Pointer(state)).Fwhave
 10776  	wnext = (*Inflate_state)(unsafe.Pointer(state)).Fwnext
 10777  	window = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 10778  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 10779  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 10780  	lcode = (*Inflate_state)(unsafe.Pointer(state)).Flencode
 10781  	dcode = (*Inflate_state)(unsafe.Pointer(state)).Fdistcode
 10782  	lmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Flenbits) - uint32(1))
 10783  	dmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fdistbits) - uint32(1))
 10784  
 10785  	// decode literals and length/distances until end-of-block or not enough
 10786  	//        input data or output space
 10787  __1:
 10788  	if !(bits < uint32(15)) {
 10789  		goto __4
 10790  	}
 10791  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 10792  	bits = bits + (uint32(8))
 10793  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 10794  	bits = bits + (uint32(8))
 10795  __4:
 10796  	;
 10797  	here = *(*Code)(unsafe.Pointer(lcode + uintptr((hold&uint64(lmask)))*4))
 10798  dolen:
 10799  	op = uint32(here.Fbits)
 10800  	hold >>= op
 10801  	bits = bits - (op)
 10802  	op = uint32(here.Fop)
 10803  	if !(op == uint32(0)) {
 10804  		goto __5
 10805  	} // literal
 10806  
 10807  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = uint8(here.Fval)
 10808  	goto __6
 10809  __5:
 10810  	if !((op & uint32(16)) != 0) {
 10811  		goto __7
 10812  	} // length base
 10813  	len = uint32(here.Fval)
 10814  	op = op & (uint32(15)) // number of extra bits
 10815  	if !(op != 0) {
 10816  		goto __9
 10817  	}
 10818  	if !(bits < op) {
 10819  		goto __10
 10820  	}
 10821  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 10822  	bits = bits + (uint32(8))
 10823  __10:
 10824  	;
 10825  	len = len + (uint32(hold) & ((uint32(1) << op) - uint32(1)))
 10826  	hold >>= op
 10827  	bits = bits - (op)
 10828  __9:
 10829  	;
 10830  
 10831  	if !(bits < uint32(15)) {
 10832  		goto __11
 10833  	}
 10834  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 10835  	bits = bits + (uint32(8))
 10836  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 10837  	bits = bits + (uint32(8))
 10838  __11:
 10839  	;
 10840  	here = *(*Code)(unsafe.Pointer(dcode + uintptr((hold&uint64(dmask)))*4))
 10841  dodist:
 10842  	op = uint32(here.Fbits)
 10843  	hold >>= op
 10844  	bits = bits - (op)
 10845  	op = uint32(here.Fop)
 10846  	if !((op & uint32(16)) != 0) {
 10847  		goto __12
 10848  	} // distance base
 10849  	dist = uint32(here.Fval)
 10850  	op = op & (uint32(15)) // number of extra bits
 10851  	if !(bits < op) {
 10852  		goto __14
 10853  	}
 10854  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 10855  	bits = bits + (uint32(8))
 10856  	if !(bits < op) {
 10857  		goto __15
 10858  	}
 10859  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 10860  	bits = bits + (uint32(8))
 10861  __15:
 10862  	;
 10863  __14:
 10864  	;
 10865  	dist = dist + (uint32(hold) & ((uint32(1) << op) - uint32(1)))
 10866  	hold >>= op
 10867  	bits = bits - (op)
 10868  
 10869  	op = (uint32((int64(out) - int64(beg)) / 1)) // max distance in output
 10870  	if !(dist > op) {
 10871  		goto __16
 10872  	} // see if copy from window
 10873  	op = (dist - op) // distance back in window
 10874  	if !(op > whave) {
 10875  		goto __18
 10876  	}
 10877  	if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) {
 10878  		goto __19
 10879  	}
 10880  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */
 10881  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10882  	goto __3
 10883  __19:
 10884  	;
 10885  __18:
 10886  	;
 10887  	from = window
 10888  	if !(wnext == uint32(0)) {
 10889  		goto __20
 10890  	} // very common case
 10891  	from += (uintptr(wsize - op))
 10892  	if !(op < len) {
 10893  		goto __22
 10894  	} // some from window
 10895  	len = len - (op)
 10896  __23:
 10897  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10898  	goto __24
 10899  __24:
 10900  	if libc.PreDecUint32(&op, 1) != 0 {
 10901  		goto __23
 10902  	}
 10903  	goto __25
 10904  __25:
 10905  	;
 10906  	from = (out - uintptr(dist)) // rest from output
 10907  __22:
 10908  	;
 10909  	goto __21
 10910  __20:
 10911  	if !(wnext < op) {
 10912  		goto __26
 10913  	} // wrap around window
 10914  	from += (uintptr((wsize + wnext) - op))
 10915  	op = op - (wnext)
 10916  	if !(op < len) {
 10917  		goto __28
 10918  	} // some from end of window
 10919  	len = len - (op)
 10920  __29:
 10921  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10922  	goto __30
 10923  __30:
 10924  	if libc.PreDecUint32(&op, 1) != 0 {
 10925  		goto __29
 10926  	}
 10927  	goto __31
 10928  __31:
 10929  	;
 10930  	from = window
 10931  	if !(wnext < len) {
 10932  		goto __32
 10933  	} // some from start of window
 10934  	op = wnext
 10935  	len = len - (op)
 10936  __33:
 10937  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10938  	goto __34
 10939  __34:
 10940  	if libc.PreDecUint32(&op, 1) != 0 {
 10941  		goto __33
 10942  	}
 10943  	goto __35
 10944  __35:
 10945  	;
 10946  	from = (out - uintptr(dist)) // rest from output
 10947  __32:
 10948  	;
 10949  __28:
 10950  	;
 10951  	goto __27
 10952  __26: // contiguous in window
 10953  	from += (uintptr(wnext - op))
 10954  	if !(op < len) {
 10955  		goto __36
 10956  	} // some from window
 10957  	len = len - (op)
 10958  __37:
 10959  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10960  	goto __38
 10961  __38:
 10962  	if libc.PreDecUint32(&op, 1) != 0 {
 10963  		goto __37
 10964  	}
 10965  	goto __39
 10966  __39:
 10967  	;
 10968  	from = (out - uintptr(dist)) // rest from output
 10969  __36:
 10970  	;
 10971  __27:
 10972  	;
 10973  __21:
 10974  	;
 10975  __40:
 10976  	if !(len > uint32(2)) {
 10977  		goto __41
 10978  	}
 10979  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10980  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10981  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10982  	len = len - (uint32(3))
 10983  	goto __40
 10984  __41:
 10985  	;
 10986  	if !(len != 0) {
 10987  		goto __42
 10988  	}
 10989  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10990  	if !(len > uint32(1)) {
 10991  		goto __43
 10992  	}
 10993  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 10994  __43:
 10995  	;
 10996  __42:
 10997  	;
 10998  	goto __17
 10999  __16:
 11000  	from = (out - uintptr(dist)) // copy direct from output
 11001  __44: // minimum length is three
 11002  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 11003  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 11004  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 11005  	len = len - (uint32(3))
 11006  	goto __45
 11007  __45:
 11008  	if len > uint32(2) {
 11009  		goto __44
 11010  	}
 11011  	goto __46
 11012  __46:
 11013  	;
 11014  	if !(len != 0) {
 11015  		goto __47
 11016  	}
 11017  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 11018  	if !(len > uint32(1)) {
 11019  		goto __48
 11020  	}
 11021  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 11022  __48:
 11023  	;
 11024  __47:
 11025  	;
 11026  __17:
 11027  	;
 11028  	goto __13
 11029  __12:
 11030  	if !((op & uint32(64)) == uint32(0)) {
 11031  		goto __49
 11032  	} // 2nd level distance code
 11033  	here = *(*Code)(unsafe.Pointer(dcode + uintptr((uint64(here.Fval)+(hold&(uint64((uint32(1)<<op)-uint32(1))))))*4))
 11034  	goto dodist
 11035  	goto __50
 11036  __49:
 11037  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */
 11038  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11039  	goto __3
 11040  __50:
 11041  	;
 11042  __13:
 11043  	;
 11044  	goto __8
 11045  __7:
 11046  	if !((op & uint32(64)) == uint32(0)) {
 11047  		goto __51
 11048  	} // 2nd level length code
 11049  	here = *(*Code)(unsafe.Pointer(lcode + uintptr((uint64(here.Fval)+(hold&(uint64((uint32(1)<<op)-uint32(1))))))*4))
 11050  	goto dolen
 11051  	goto __52
 11052  __51:
 11053  	if !((op & uint32(32)) != 0) {
 11054  		goto __53
 11055  	} // end-of-block
 11056  
 11057  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 11058  	goto __3
 11059  	goto __54
 11060  __53:
 11061  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */
 11062  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11063  	goto __3
 11064  __54:
 11065  	;
 11066  __52:
 11067  	;
 11068  __8:
 11069  	;
 11070  __6:
 11071  	;
 11072  	goto __2
 11073  __2:
 11074  	if (in < last) && (out < end) {
 11075  		goto __1
 11076  	}
 11077  	goto __3
 11078  __3:
 11079  	;
 11080  
 11081  	// return unused bytes (on entry, bits < 8, so in won't go too far back)
 11082  	len = (bits >> 3)
 11083  	in -= uintptr(len)
 11084  	bits = bits - (len << 3)
 11085  	hold = hold & (uint64((uint32(1) << bits) - uint32(1)))
 11086  
 11087  	// update state and return
 11088  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = in
 11089  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = out
 11090  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = func() uint32 {
 11091  		if in < last {
 11092  			return (uint32(int64(5) + ((int64(last) - int64(in)) / 1)))
 11093  		}
 11094  		return (uint32(int64(5) - ((int64(in) - int64(last)) / 1)))
 11095  	}()
 11096  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = func() uint32 {
 11097  		if out < end {
 11098  			return (uint32(int64(257) + ((int64(end) - int64(out)) / 1)))
 11099  		}
 11100  		return (uint32(int64(257) - ((int64(out) - int64(end)) / 1)))
 11101  	}()
 11102  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 11103  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 11104  	return
 11105  }
 11106  
 11107  //
 11108  //    inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
 11109  //    - Using bit fields for code structure
 11110  //    - Different op definition to avoid & for extra bits (do & for table bits)
 11111  //    - Three separate decoding do-loops for direct, window, and wnext == 0
 11112  //    - Special case for distance > 1 copies to do overlapped load and store copy
 11113  //    - Explicit branch predictions (based on measured branch probabilities)
 11114  //    - Deferring match copy and interspersed it with decoding subsequent codes
 11115  //    - Swapping literal/length else
 11116  //    - Swapping window/direct else
 11117  //    - Larger unrolled copy loops (three is about right)
 11118  //    - Moving len -= 3 statement into middle of loop
 11119  //
 11120  
 11121  func inflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:105:11: */
 11122  	var state uintptr
 11123  	if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) {
 11124  		return 1
 11125  	}
 11126  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 11127  	if (((state == uintptr(Z_NULL)) || ((*Inflate_state)(unsafe.Pointer(state)).Fstrm != strm)) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode < HEAD)) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode > SYNC) {
 11128  		return 1
 11129  	}
 11130  	return 0
 11131  }
 11132  
 11133  func XinflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:119:13: */
 11134  	var state uintptr
 11135  
 11136  	if inflateStateCheck(tls, strm) != 0 {
 11137  		return -2
 11138  	}
 11139  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 11140  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint64(strm+40 /* &.total_out */, libc.AssignPtrUint64(state+40 /* &.total */, uint64(0)))
 11141  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL)
 11142  	if (*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0 { // to support ill-conceived Java test suite
 11143  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = (ULong((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1))
 11144  	}
 11145  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD
 11146  	(*Inflate_state)(unsafe.Pointer(state)).Flast = 0
 11147  	(*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 0
 11148  	(*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768
 11149  	(*Inflate_state)(unsafe.Pointer(state)).Fhead = Gz_headerp(Z_NULL)
 11150  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = uint64(0)
 11151  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0)
 11152  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = libc.AssignPtrUintptr(state+112 /* &.distcode */, libc.AssignPtrUintptr(state+144 /* &.next */, state+1368 /* &.codes */))
 11153  	(*Inflate_state)(unsafe.Pointer(state)).Fsane = 1
 11154  	(*Inflate_state)(unsafe.Pointer(state)).Fback = -1
 11155  
 11156  	return Z_OK
 11157  }
 11158  
 11159  func XinflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:144:13: */
 11160  	var state uintptr
 11161  
 11162  	if inflateStateCheck(tls, strm) != 0 {
 11163  		return -2
 11164  	}
 11165  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 11166  	(*Inflate_state)(unsafe.Pointer(state)).Fwsize = uint32(0)
 11167  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
 11168  	(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 11169  	return XinflateResetKeep(tls, strm)
 11170  }
 11171  
 11172  func XinflateReset2(tls *libc.TLS, strm Z_streamp, windowBits int32) int32 { /* inflate.c:157:13: */
 11173  	var wrap int32
 11174  	var state uintptr
 11175  
 11176  	// get the state
 11177  	if inflateStateCheck(tls, strm) != 0 {
 11178  		return -2
 11179  	}
 11180  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 11181  
 11182  	// extract wrap request from windowBits parameter
 11183  	if windowBits < 0 {
 11184  		wrap = 0
 11185  		windowBits = -windowBits
 11186  	} else {
 11187  		wrap = ((windowBits >> 4) + 5)
 11188  		if windowBits < 48 {
 11189  			windowBits = windowBits & (15)
 11190  		}
 11191  	}
 11192  
 11193  	// set number of window bits, free window if different
 11194  	if (windowBits != 0) && ((windowBits < 8) || (windowBits > 15)) {
 11195  		return -2
 11196  	}
 11197  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL)) && ((*Inflate_state)(unsafe.Pointer(state)).Fwbits != uint32(windowBits)) {
 11198  		(*struct {
 11199  			f func(*libc.TLS, Voidpf, Voidpf)
 11200  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow)
 11201  		(*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL)
 11202  	}
 11203  
 11204  	// update state and reset the rest of it
 11205  	(*Inflate_state)(unsafe.Pointer(state)).Fwrap = wrap
 11206  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(windowBits)
 11207  	return XinflateReset(tls, strm)
 11208  }
 11209  
 11210  func XinflateInit2_(tls *libc.TLS, strm Z_streamp, windowBits int32, version uintptr, stream_size int32) int32 { /* inflate.c:195:13: */
 11211  	var ret int32
 11212  	var state uintptr
 11213  
 11214  	if ((version == uintptr(Z_NULL)) || (int32(*(*int8)(unsafe.Pointer(version))) != int32(*(*int8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) {
 11215  		return -6
 11216  	}
 11217  	if strm == uintptr(Z_NULL) {
 11218  		return -2
 11219  	}
 11220  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error
 11221  	if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) {
 11222  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct {
 11223  			f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf
 11224  		}{Xzcalloc}))
 11225  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0)
 11226  	}
 11227  	if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) {
 11228  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct {
 11229  			f func(*libc.TLS, Voidpf, Voidpf)
 11230  		}{Xzcfree}))
 11231  	}
 11232  	state = (*struct {
 11233  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 11234  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{})))
 11235  	if state == uintptr(Z_NULL) {
 11236  		return -4
 11237  	}
 11238  
 11239  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = state
 11240  	(*Inflate_state)(unsafe.Pointer(state)).Fstrm = strm
 11241  	(*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL)
 11242  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD // to pass state test in inflateReset2()
 11243  	ret = XinflateReset2(tls, strm, windowBits)
 11244  	if ret != Z_OK {
 11245  		(*struct {
 11246  			f func(*libc.TLS, Voidpf, Voidpf)
 11247  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, state)
 11248  		(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
 11249  	}
 11250  	return ret
 11251  }
 11252  
 11253  func XinflateInit_(tls *libc.TLS, strm Z_streamp, version uintptr, stream_size int32) int32 { /* inflate.c:239:13: */
 11254  	return XinflateInit2_(tls, strm, MAX_WBITS, version, stream_size)
 11255  }
 11256  
 11257  func XinflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* inflate.c:247:13: */
 11258  	var state uintptr
 11259  
 11260  	if inflateStateCheck(tls, strm) != 0 {
 11261  		return -2
 11262  	}
 11263  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 11264  	if bits < 0 {
 11265  		(*Inflate_state)(unsafe.Pointer(state)).Fhold = uint64(0)
 11266  		(*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0)
 11267  		return Z_OK
 11268  	}
 11269  	if (bits > 16) || (((*Inflate_state)(unsafe.Pointer(state)).Fbits + UInt(bits)) > uint32(32)) {
 11270  		return -2
 11271  	}
 11272  	value = int32(int64(value) & ((int64(1) << bits) - int64(1)))
 11273  	*(*uint64)(unsafe.Pointer(state + 80 /* &.hold */)) += (uint64(uint32(value) << (*Inflate_state)(unsafe.Pointer(state)).Fbits))
 11274  	*(*uint32)(unsafe.Pointer(state + 88 /* &.bits */)) += (UInt(bits))
 11275  	return Z_OK
 11276  }
 11277  
 11278  //
 11279  //    Return state with length and distance decoding tables and index sizes set to
 11280  //    fixed code decoding.  Normally this returns fixed tables from inffixed.h.
 11281  //    If BUILDFIXED is defined, then instead this routine builds the tables the
 11282  //    first time it's called, and returns those tables the first time and
 11283  //    thereafter.  This reduces the size of the code by about 2K bytes, in
 11284  //    exchange for a little execution time.  However, BUILDFIXED should not be
 11285  //    used for threaded applications, since the rewriting of the tables and virgin
 11286  //    may not be thread-safe.
 11287  //
 11288  func fixedtables1(tls *libc.TLS, state uintptr) { /* inflate.c:278:12: */
 11289  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix1))
 11290  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
 11291  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix1))
 11292  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5)
 11293  }
 11294  
 11295  var lenfix1 = [512]Code{
 11296  	{Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)},
 11297  	{Fbits: uint8(9), Fval: uint16(192)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(160)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)},
 11298  	{Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(224)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(144)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)},
 11299  	{Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(208)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(176)},
 11300  	{Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, {Fbits: uint8(9), Fval: uint16(240)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)},
 11301  	{Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(200)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)},
 11302  	{Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(168)}, {Fbits: uint8(8), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(232)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)},
 11303  	{Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(152)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(216)},
 11304  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, {Fbits: uint8(9), Fval: uint16(184)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)},
 11305  	{Fbits: uint8(9), Fval: uint16(248)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)},
 11306  	{Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(196)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(164)}, {Fbits: uint8(8), Fval: uint16(2)},
 11307  	{Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(228)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(148)},
 11308  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, {Fbits: uint8(9), Fval: uint16(212)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)},
 11309  	{Fbits: uint8(9), Fval: uint16(180)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(244)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)},
 11310  	{Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(204)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)},
 11311  	{Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(172)}, {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(236)},
 11312  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, {Fbits: uint8(9), Fval: uint16(156)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)},
 11313  	{Fbits: uint8(9), Fval: uint16(220)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(188)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)},
 11314  	{Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(252)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)},
 11315  	{Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(194)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(162)},
 11316  	{Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, {Fbits: uint8(9), Fval: uint16(226)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)},
 11317  	{Fbits: uint8(9), Fval: uint16(146)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(210)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)},
 11318  	{Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(178)}, {Fbits: uint8(8), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(242)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)},
 11319  	{Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(202)},
 11320  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, {Fbits: uint8(9), Fval: uint16(170)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)},
 11321  	{Fbits: uint8(9), Fval: uint16(234)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(154)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)},
 11322  	{Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(218)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(186)}, {Fbits: uint8(8), Fval: uint16(13)},
 11323  	{Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(250)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)},
 11324  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, {Fbits: uint8(9), Fval: uint16(198)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)},
 11325  	{Fbits: uint8(9), Fval: uint16(166)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(230)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)},
 11326  	{Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(150)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(214)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)},
 11327  	{Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(182)}, {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(246)},
 11328  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)},
 11329  	{Fbits: uint8(9), Fval: uint16(206)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(174)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)},
 11330  	{Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(238)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(158)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)},
 11331  	{Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(222)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(190)},
 11332  	{Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, {Fbits: uint8(9), Fval: uint16(254)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)},
 11333  	{Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, {Fbits: uint8(9), Fval: uint16(193)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)},
 11334  	{Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(161)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(225)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)},
 11335  	{Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(145)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(209)},
 11336  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(177)}, {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)},
 11337  	{Fbits: uint8(9), Fval: uint16(241)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)},
 11338  	{Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(201)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(169)}, {Fbits: uint8(8), Fval: uint16(4)},
 11339  	{Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(233)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(153)},
 11340  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(217)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)},
 11341  	{Fbits: uint8(9), Fval: uint16(185)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, {Fbits: uint8(9), Fval: uint16(249)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)},
 11342  	{Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(197)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)},
 11343  	{Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(165)}, {Fbits: uint8(8), Fval: uint16(2)}, {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(229)},
 11344  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(149)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)},
 11345  	{Fbits: uint8(9), Fval: uint16(213)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, {Fbits: uint8(9), Fval: uint16(181)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)},
 11346  	{Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(245)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)},
 11347  	{Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(205)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(173)},
 11348  	{Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(237)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)},
 11349  	{Fbits: uint8(9), Fval: uint16(157)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, {Fbits: uint8(9), Fval: uint16(221)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)},
 11350  	{Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(189)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(253)}, {Fop: uint8(96), Fbits: uint8(7)},
 11351  	{Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(195)},
 11352  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(163)}, {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)},
 11353  	{Fbits: uint8(9), Fval: uint16(227)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, {Fbits: uint8(9), Fval: uint16(147)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)},
 11354  	{Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(211)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(179)}, {Fbits: uint8(8), Fval: uint16(9)},
 11355  	{Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(243)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)},
 11356  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(203)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)},
 11357  	{Fbits: uint8(9), Fval: uint16(171)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, {Fbits: uint8(9), Fval: uint16(235)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)},
 11358  	{Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(155)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(219)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)},
 11359  	{Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(187)}, {Fbits: uint8(8), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(251)},
 11360  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)},
 11361  	{Fbits: uint8(9), Fval: uint16(199)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, {Fbits: uint8(9), Fval: uint16(167)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)},
 11362  	{Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(231)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(151)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)},
 11363  	{Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(215)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(183)},
 11364  	{Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(247)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)},
 11365  	{Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, {Fbits: uint8(9), Fval: uint16(207)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)},
 11366  	{Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(175)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(239)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)},
 11367  	{Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(159)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(223)},
 11368  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(191)}, {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)},
 11369  	{Fbits: uint8(9), Fval: uint16(255)},
 11370  } /* inffixed.h:10:23 */
 11371  var distfix1 = [32]Code{
 11372  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(1)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(257)}, {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(17)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(4097)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(5)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1025)},
 11373  	{Fop: uint8(21), Fbits: uint8(5), Fval: uint16(65)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(16385)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(3)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(513)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(33)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(8193)},
 11374  	{Fop: uint8(18), Fbits: uint8(5), Fval: uint16(9)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(2049)}, {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(129)}, {Fop: uint8(64), Fbits: uint8(5)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(2)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(385)},
 11375  	{Fop: uint8(19), Fbits: uint8(5), Fval: uint16(25)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(6145)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(7)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1537)}, {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(97)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(24577)},
 11376  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(4)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(769)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(49)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(12289)}, {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(13)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(3073)},
 11377  	{Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)},
 11378  } /* inffixed.h:87:23 */
 11379  
 11380  //
 11381  //    Update the window with the last wsize (normally 32K) bytes written before
 11382  //    returning.  If window does not exist yet, create it.  This is only called
 11383  //    when a window is already in use, or when output has been written during this
 11384  //    inflate call, but the end of the deflate stream has not been reached yet.
 11385  //    It is also called to create a window for dictionary data when a dictionary
 11386  //    is loaded.
 11387  //
 11388  //    Providing output buffers larger than 32K to inflate() should provide a speed
 11389  //    advantage, since only the last 32K of output is copied to the sliding window
 11390  //    upon return from inflate(), and since all distances after the first 32K of
 11391  //    output will fall in the output data, making match copies simpler and faster.
 11392  //    The advantage may be dependent on the size of the processor's data caches.
 11393  //
 11394  func updatewindow(tls *libc.TLS, strm Z_streamp, end uintptr, copy uint32) int32 { /* inflate.c:396:11: */
 11395  	var state uintptr
 11396  	var dist uint32
 11397  
 11398  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 11399  
 11400  	// if it hasn't been done already, allocate space for the window
 11401  	if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) {
 11402  		(*Inflate_state)(unsafe.Pointer(state)).Fwindow = (*struct {
 11403  			f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 11404  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits), uint32(unsafe.Sizeof(uint8(0))))
 11405  		if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) {
 11406  			return 1
 11407  		}
 11408  	}
 11409  
 11410  	// if window not in use yet, initialize
 11411  	if (*Inflate_state)(unsafe.Pointer(state)).Fwsize == uint32(0) {
 11412  		(*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits)
 11413  		(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 11414  		(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
 11415  	}
 11416  
 11417  	// copy state->wsize or less output bytes into the circular window
 11418  	if copy >= (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 11419  		libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwsize)), uint64((*Inflate_state)(unsafe.Pointer(state)).Fwsize))
 11420  		(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 11421  		(*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 11422  	} else {
 11423  		dist = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Fwnext)
 11424  		if dist > copy {
 11425  			dist = copy
 11426  		}
 11427  		libc.Xmemcpy(tls, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), (end - uintptr(copy)), uint64(dist))
 11428  		copy = copy - (dist)
 11429  		if copy != 0 {
 11430  			libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr(copy)), uint64(copy))
 11431  			(*Inflate_state)(unsafe.Pointer(state)).Fwnext = copy
 11432  			(*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 11433  		} else {
 11434  			*(*uint32)(unsafe.Pointer(state + 68 /* &.wnext */)) += (dist)
 11435  			if (*Inflate_state)(unsafe.Pointer(state)).Fwnext == (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 11436  				(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 11437  			}
 11438  			if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 11439  				*(*uint32)(unsafe.Pointer(state + 64 /* &.whave */)) += (dist)
 11440  			}
 11441  		}
 11442  	}
 11443  	return 0
 11444  }
 11445  
 11446  // Macros for inflate():
 11447  
 11448  // check function to use adler32() for zlib or crc32() for gzip
 11449  
 11450  // check macros for header crc
 11451  
 11452  // Load registers with state in inflate() for speed
 11453  
 11454  // Restore state from registers in inflate()
 11455  
 11456  // Clear the input bit accumulator
 11457  
 11458  // Get a byte of input into the bit accumulator, or return from inflate()
 11459  //    if there is no input available.
 11460  
 11461  // Assure that there are at least n bits in the bit accumulator.  If there is
 11462  //    not enough available input to do that, then return from inflate().
 11463  
 11464  // Return the low n bits of the bit accumulator (n < 16)
 11465  
 11466  // Remove n bits from the bit accumulator
 11467  
 11468  // Remove zero to seven bits as needed to go to a byte boundary
 11469  
 11470  //
 11471  //    inflate() uses a state machine to process as much input data and generate as
 11472  //    much output data as possible before returning.  The state machine is
 11473  //    structured roughly as follows:
 11474  //
 11475  //     for (;;) switch (state) {
 11476  //     ...
 11477  //     case STATEn:
 11478  //         if (not enough input data or output space to make progress)
 11479  //             return;
 11480  //         ... make progress ...
 11481  //         state = STATEm;
 11482  //         break;
 11483  //     ...
 11484  //     }
 11485  //
 11486  //    so when inflate() is called again, the same case is attempted again, and
 11487  //    if the appropriate resources are provided, the machine proceeds to the
 11488  //    next state.  The NEEDBITS() macro is usually the way the state evaluates
 11489  //    whether it can proceed or should return.  NEEDBITS() does the return if
 11490  //    the requested bits are not available.  The typical use of the BITS macros
 11491  //    is:
 11492  //
 11493  //         NEEDBITS(n);
 11494  //         ... do something with BITS(n) ...
 11495  //         DROPBITS(n);
 11496  //
 11497  //    where NEEDBITS(n) either returns from inflate() if there isn't enough
 11498  //    input left to load n bits into the accumulator, or it continues.  BITS(n)
 11499  //    gives the low n bits in the accumulator.  When done, DROPBITS(n) drops
 11500  //    the low n bits off the accumulator.  INITBITS() clears the accumulator
 11501  //    and sets the number of available bits to zero.  BYTEBITS() discards just
 11502  //    enough bits to put the accumulator on a byte boundary.  After BYTEBITS()
 11503  //    and a NEEDBITS(8), then BITS(8) would return the next byte in the stream.
 11504  //
 11505  //    NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return
 11506  //    if there is no input available.  The decoding of variable length codes uses
 11507  //    PULLBYTE() directly in order to pull just enough bytes to decode the next
 11508  //    code, and no more.
 11509  //
 11510  //    Some states loop until they get enough input, making sure that enough
 11511  //    state information is maintained to continue the loop where it left off
 11512  //    if NEEDBITS() returns in the loop.  For example, want, need, and keep
 11513  //    would all have to actually be part of the saved state in case NEEDBITS()
 11514  //    returns:
 11515  //
 11516  //     case STATEw:
 11517  //         while (want < need) {
 11518  //             NEEDBITS(n);
 11519  //             keep[want++] = BITS(n);
 11520  //             DROPBITS(n);
 11521  //         }
 11522  //         state = STATEx;
 11523  //     case STATEx:
 11524  //
 11525  //    As shown above, if the next state is also the next case, then the break
 11526  //    is omitted.
 11527  //
 11528  //    A state may also return if there is not enough output space available to
 11529  //    complete that state.  Those states are copying stored data, writing a
 11530  //    literal byte, and copying a matching string.
 11531  //
 11532  //    When returning, a "goto inf_leave" is used to update the total counters,
 11533  //    update the check value, and determine whether any progress has been made
 11534  //    during that inflate() call in order to return the proper return code.
 11535  //    Progress is defined as a change in either strm->avail_in or strm->avail_out.
 11536  //    When there is a window, goto inf_leave will update the window with the last
 11537  //    output written.  If a goto inf_leave occurs in the middle of decompression
 11538  //    and there is no window currently, goto inf_leave will create one and copy
 11539  //    output to the window for the next call of inflate().
 11540  //
 11541  //    In this implementation, the flush parameter of inflate() only affects the
 11542  //    return code (per zlib.h).  inflate() always writes as much as possible to
 11543  //    strm->next_out, given the space available and the provided input--the effect
 11544  //    documented in zlib.h of Z_SYNC_FLUSH.  Furthermore, inflate() always defers
 11545  //    the allocation of and copying into a sliding window until necessary, which
 11546  //    provides the effect documented in zlib.h for Z_FINISH when the entire input
 11547  //    stream available.  So the only thing the flush parameter actually does is:
 11548  //    when flush is set to Z_FINISH, inflate() cannot return Z_OK.  Instead it
 11549  //    will return Z_BUF_ERROR if it has not reached the end of the stream.
 11550  //
 11551  
 11552  func Xinflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* inflate.c:622:13: */
 11553  	bp := tls.Alloc(4)
 11554  	defer tls.Free(4)
 11555  
 11556  	var state uintptr
 11557  	var next uintptr // next input
 11558  	var put uintptr  // next output
 11559  	var have uint32
 11560  	var left uint32 // available input and output
 11561  	var hold uint64 // bit buffer
 11562  	var bits uint32 // bits in bit buffer
 11563  	var in uint32
 11564  	var out uint32   // save starting available input and output
 11565  	var copy uint32  // number of stored or match bytes to copy
 11566  	var from uintptr // where to copy match bytes from
 11567  	var here Code    // current decoding table entry
 11568  	var last Code    // parent table entry
 11569  	var len uint32   // length to copy for repeats, bits to drop
 11570  	var ret int32    // return code
 11571  	// var hbuf [4]uint8 at bp, 4
 11572  
 11573  	if !(((inflateStateCheck(tls, strm) != 0) || ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out == uintptr(Z_NULL))) || (((*Z_stream)(unsafe.Pointer(strm)).Fnext_in == uintptr(Z_NULL)) && ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)))) {
 11574  		goto __1
 11575  	}
 11576  	return -2
 11577  __1:
 11578  	;
 11579  
 11580  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 11581  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) {
 11582  		goto __2
 11583  	}
 11584  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO
 11585  __2:
 11586  	; // skip check
 11587  __3:
 11588  	put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 11589  	left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
 11590  	next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 11591  	have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
 11592  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 11593  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 11594  	goto __4
 11595  __4:
 11596  	if 0 != 0 {
 11597  		goto __3
 11598  	}
 11599  	goto __5
 11600  __5:
 11601  	;
 11602  	in = have
 11603  	out = left
 11604  	ret = Z_OK
 11605  __6:
 11606  	switch (*Inflate_state)(unsafe.Pointer(state)).Fmode {
 11607  	case HEAD:
 11608  		goto __10
 11609  	case FLAGS:
 11610  		goto __11
 11611  	case TIME:
 11612  		goto __12
 11613  	case OS:
 11614  		goto __13
 11615  	case EXLEN:
 11616  		goto __14
 11617  	case EXTRA:
 11618  		goto __15
 11619  	case NAME:
 11620  		goto __16
 11621  	case COMMENT:
 11622  		goto __17
 11623  	case HCRC:
 11624  		goto __18
 11625  	case DICTID:
 11626  		goto __19
 11627  	case DICT:
 11628  		goto __20
 11629  	case TYPE:
 11630  		goto __21
 11631  	case TYPEDO:
 11632  		goto __22
 11633  	case STORED:
 11634  		goto __23
 11635  	case COPY_:
 11636  		goto __24
 11637  	case COPY:
 11638  		goto __25
 11639  	case TABLE:
 11640  		goto __26
 11641  	case LENLENS:
 11642  		goto __27
 11643  	case CODELENS:
 11644  		goto __28
 11645  	case LEN_:
 11646  		goto __29
 11647  	case LEN:
 11648  		goto __30
 11649  	case LENEXT:
 11650  		goto __31
 11651  	case DIST:
 11652  		goto __32
 11653  	case DISTEXT:
 11654  		goto __33
 11655  	case MATCH:
 11656  		goto __34
 11657  	case LIT:
 11658  		goto __35
 11659  	case CHECK:
 11660  		goto __36
 11661  	case LENGTH:
 11662  		goto __37
 11663  	case DONE:
 11664  		goto __38
 11665  	case BAD:
 11666  		goto __39
 11667  	case MEM:
 11668  		goto __40
 11669  	case SYNC:
 11670  		goto __41
 11671  	default:
 11672  		goto __42
 11673  	}
 11674  	goto __9
 11675  __10:
 11676  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap == 0) {
 11677  		goto __43
 11678  	}
 11679  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO
 11680  	goto __9
 11681  __43:
 11682  	;
 11683  __44:
 11684  __47:
 11685  	if !(bits < (uint32(16))) {
 11686  		goto __48
 11687  	}
 11688  __49:
 11689  	if !(have == uint32(0)) {
 11690  		goto __52
 11691  	}
 11692  	goto inf_leave
 11693  __52:
 11694  	;
 11695  	have--
 11696  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 11697  	bits = bits + (uint32(8))
 11698  	goto __50
 11699  __50:
 11700  	if 0 != 0 {
 11701  		goto __49
 11702  	}
 11703  	goto __51
 11704  __51:
 11705  	;
 11706  	goto __47
 11707  __48:
 11708  	;
 11709  	goto __45
 11710  __45:
 11711  	if 0 != 0 {
 11712  		goto __44
 11713  	}
 11714  	goto __46
 11715  __46:
 11716  	;
 11717  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) != 0) && (hold == uint64(0x8b1f))) {
 11718  		goto __53
 11719  	} // gzip header
 11720  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) {
 11721  		goto __54
 11722  	}
 11723  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(15)
 11724  __54:
 11725  	;
 11726  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0))
 11727  __55:
 11728  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 11729  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 11730  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 11731  	goto __56
 11732  __56:
 11733  	if 0 != 0 {
 11734  		goto __55
 11735  	}
 11736  	goto __57
 11737  __57:
 11738  	;
 11739  __58:
 11740  	hold = uint64(0)
 11741  	bits = uint32(0)
 11742  	goto __59
 11743  __59:
 11744  	if 0 != 0 {
 11745  		goto __58
 11746  	}
 11747  	goto __60
 11748  __60:
 11749  	;
 11750  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = FLAGS
 11751  	goto __9
 11752  __53:
 11753  	;
 11754  	(*Inflate_state)(unsafe.Pointer(state)).Fflags = 0 // expect zlib header
 11755  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 11756  		goto __61
 11757  	}
 11758  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = -1
 11759  __61:
 11760  	;
 11761  	if !(!(((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1) != 0) || ((((uint64((uint32(hold) & ((uint32(1) << (8)) - uint32(1))) << 8)) + (hold >> 8)) % uint64(31)) != 0)) {
 11762  		goto __62
 11763  	}
 11764  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 669 /* "incorrect header..." */
 11765  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11766  	goto __9
 11767  __62:
 11768  	;
 11769  	if !((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) != uint32(Z_DEFLATED)) {
 11770  		goto __63
 11771  	}
 11772  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */
 11773  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11774  	goto __9
 11775  __63:
 11776  	;
 11777  __64:
 11778  	hold >>= 4
 11779  	bits = bits - (uint32(4))
 11780  	goto __65
 11781  __65:
 11782  	if 0 != 0 {
 11783  		goto __64
 11784  	}
 11785  	goto __66
 11786  __66:
 11787  	;
 11788  	len = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(8))
 11789  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) {
 11790  		goto __67
 11791  	}
 11792  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = len
 11793  __67:
 11794  	;
 11795  	if !((len > uint32(15)) || (len > (*Inflate_state)(unsafe.Pointer(state)).Fwbits)) {
 11796  		goto __68
 11797  	}
 11798  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 719 /* "invalid window s..." */
 11799  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11800  	goto __9
 11801  __68:
 11802  	;
 11803  	(*Inflate_state)(unsafe.Pointer(state)).Fdmax = (uint32(1) << len)
 11804  
 11805  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)))
 11806  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = func() uint32 {
 11807  		if (hold & uint64(0x200)) != 0 {
 11808  			return DICTID
 11809  		}
 11810  		return TYPE
 11811  	}()
 11812  __69:
 11813  	hold = uint64(0)
 11814  	bits = uint32(0)
 11815  	goto __70
 11816  __70:
 11817  	if 0 != 0 {
 11818  		goto __69
 11819  	}
 11820  	goto __71
 11821  __71:
 11822  	;
 11823  	goto __9
 11824  __11:
 11825  __72:
 11826  __75:
 11827  	if !(bits < (uint32(16))) {
 11828  		goto __76
 11829  	}
 11830  __77:
 11831  	if !(have == uint32(0)) {
 11832  		goto __80
 11833  	}
 11834  	goto inf_leave
 11835  __80:
 11836  	;
 11837  	have--
 11838  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 11839  	bits = bits + (uint32(8))
 11840  	goto __78
 11841  __78:
 11842  	if 0 != 0 {
 11843  		goto __77
 11844  	}
 11845  	goto __79
 11846  __79:
 11847  	;
 11848  	goto __75
 11849  __76:
 11850  	;
 11851  	goto __73
 11852  __73:
 11853  	if 0 != 0 {
 11854  		goto __72
 11855  	}
 11856  	goto __74
 11857  __74:
 11858  	;
 11859  	(*Inflate_state)(unsafe.Pointer(state)).Fflags = int32(hold)
 11860  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xff) != Z_DEFLATED) {
 11861  		goto __81
 11862  	}
 11863  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */
 11864  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11865  	goto __9
 11866  __81:
 11867  	;
 11868  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xe000) != 0) {
 11869  		goto __82
 11870  	}
 11871  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 739 /* "unknown header f..." */
 11872  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11873  	goto __9
 11874  __82:
 11875  	;
 11876  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 11877  		goto __83
 11878  	}
 11879  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftext = (int32((hold >> 8) & uint64(1)))
 11880  __83:
 11881  	;
 11882  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 11883  		goto __84
 11884  	}
 11885  __85:
 11886  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 11887  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 11888  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 11889  	goto __86
 11890  __86:
 11891  	if 0 != 0 {
 11892  		goto __85
 11893  	}
 11894  	goto __87
 11895  __87:
 11896  	;
 11897  __84:
 11898  	;
 11899  __88:
 11900  	hold = uint64(0)
 11901  	bits = uint32(0)
 11902  	goto __89
 11903  __89:
 11904  	if 0 != 0 {
 11905  		goto __88
 11906  	}
 11907  	goto __90
 11908  __90:
 11909  	;
 11910  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TIME
 11911  __12:
 11912  __91:
 11913  __94:
 11914  	if !(bits < (uint32(32))) {
 11915  		goto __95
 11916  	}
 11917  __96:
 11918  	if !(have == uint32(0)) {
 11919  		goto __99
 11920  	}
 11921  	goto inf_leave
 11922  __99:
 11923  	;
 11924  	have--
 11925  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 11926  	bits = bits + (uint32(8))
 11927  	goto __97
 11928  __97:
 11929  	if 0 != 0 {
 11930  		goto __96
 11931  	}
 11932  	goto __98
 11933  __98:
 11934  	;
 11935  	goto __94
 11936  __95:
 11937  	;
 11938  	goto __92
 11939  __92:
 11940  	if 0 != 0 {
 11941  		goto __91
 11942  	}
 11943  	goto __93
 11944  __93:
 11945  	;
 11946  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 11947  		goto __100
 11948  	}
 11949  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftime = hold
 11950  __100:
 11951  	;
 11952  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 11953  		goto __101
 11954  	}
 11955  __102:
 11956  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 11957  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 11958  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 2)) = (uint8((hold) >> 16))
 11959  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 3)) = (uint8((hold) >> 24))
 11960  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(4))
 11961  	goto __103
 11962  __103:
 11963  	if 0 != 0 {
 11964  		goto __102
 11965  	}
 11966  	goto __104
 11967  __104:
 11968  	;
 11969  __101:
 11970  	;
 11971  __105:
 11972  	hold = uint64(0)
 11973  	bits = uint32(0)
 11974  	goto __106
 11975  __106:
 11976  	if 0 != 0 {
 11977  		goto __105
 11978  	}
 11979  	goto __107
 11980  __107:
 11981  	;
 11982  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = OS
 11983  __13:
 11984  __108:
 11985  __111:
 11986  	if !(bits < (uint32(16))) {
 11987  		goto __112
 11988  	}
 11989  __113:
 11990  	if !(have == uint32(0)) {
 11991  		goto __116
 11992  	}
 11993  	goto inf_leave
 11994  __116:
 11995  	;
 11996  	have--
 11997  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 11998  	bits = bits + (uint32(8))
 11999  	goto __114
 12000  __114:
 12001  	if 0 != 0 {
 12002  		goto __113
 12003  	}
 12004  	goto __115
 12005  __115:
 12006  	;
 12007  	goto __111
 12008  __112:
 12009  	;
 12010  	goto __109
 12011  __109:
 12012  	if 0 != 0 {
 12013  		goto __108
 12014  	}
 12015  	goto __110
 12016  __110:
 12017  	;
 12018  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 12019  		goto __117
 12020  	}
 12021  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fxflags = (int32(hold & uint64(0xff)))
 12022  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fos = (int32(hold >> 8))
 12023  __117:
 12024  	;
 12025  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 12026  		goto __118
 12027  	}
 12028  __119:
 12029  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 12030  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 12031  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 12032  	goto __120
 12033  __120:
 12034  	if 0 != 0 {
 12035  		goto __119
 12036  	}
 12037  	goto __121
 12038  __121:
 12039  	;
 12040  __118:
 12041  	;
 12042  __122:
 12043  	hold = uint64(0)
 12044  	bits = uint32(0)
 12045  	goto __123
 12046  __123:
 12047  	if 0 != 0 {
 12048  		goto __122
 12049  	}
 12050  	goto __124
 12051  __124:
 12052  	;
 12053  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = EXLEN
 12054  __14:
 12055  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) {
 12056  		goto __125
 12057  	}
 12058  __127:
 12059  __130:
 12060  	if !(bits < (uint32(16))) {
 12061  		goto __131
 12062  	}
 12063  __132:
 12064  	if !(have == uint32(0)) {
 12065  		goto __135
 12066  	}
 12067  	goto inf_leave
 12068  __135:
 12069  	;
 12070  	have--
 12071  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12072  	bits = bits + (uint32(8))
 12073  	goto __133
 12074  __133:
 12075  	if 0 != 0 {
 12076  		goto __132
 12077  	}
 12078  	goto __134
 12079  __134:
 12080  	;
 12081  	goto __130
 12082  __131:
 12083  	;
 12084  	goto __128
 12085  __128:
 12086  	if 0 != 0 {
 12087  		goto __127
 12088  	}
 12089  	goto __129
 12090  __129:
 12091  	;
 12092  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(hold)
 12093  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 12094  		goto __136
 12095  	}
 12096  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len = uint32(hold)
 12097  __136:
 12098  	;
 12099  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 12100  		goto __137
 12101  	}
 12102  __138:
 12103  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 12104  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 12105  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 12106  	goto __139
 12107  __139:
 12108  	if 0 != 0 {
 12109  		goto __138
 12110  	}
 12111  	goto __140
 12112  __140:
 12113  	;
 12114  __137:
 12115  	;
 12116  __141:
 12117  	hold = uint64(0)
 12118  	bits = uint32(0)
 12119  	goto __142
 12120  __142:
 12121  	if 0 != 0 {
 12122  		goto __141
 12123  	}
 12124  	goto __143
 12125  __143:
 12126  	;
 12127  	goto __126
 12128  __125:
 12129  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 12130  		goto __144
 12131  	}
 12132  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra = uintptr(Z_NULL)
 12133  __144:
 12134  	;
 12135  __126:
 12136  	;
 12137  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = EXTRA
 12138  __15:
 12139  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) {
 12140  		goto __145
 12141  	}
 12142  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 12143  	if !(copy > have) {
 12144  		goto __146
 12145  	}
 12146  	copy = have
 12147  __146:
 12148  	;
 12149  	if !(copy != 0) {
 12150  		goto __147
 12151  	}
 12152  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra != uintptr(Z_NULL))) {
 12153  		goto __148
 12154  	}
 12155  	len = ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len - (*Inflate_state)(unsafe.Pointer(state)).Flength)
 12156  	libc.Xmemcpy(tls, ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra + uintptr(len)), next,
 12157  		func() uint64 {
 12158  			if (len + copy) > (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max {
 12159  				return (uint64((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max - len))
 12160  			}
 12161  			return uint64(copy)
 12162  		}())
 12163  __148:
 12164  	;
 12165  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 12166  		goto __149
 12167  	}
 12168  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy)
 12169  __149:
 12170  	;
 12171  	have = have - (copy)
 12172  	next += uintptr(copy)
 12173  	*(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy)
 12174  __147:
 12175  	;
 12176  	if !((*Inflate_state)(unsafe.Pointer(state)).Flength != 0) {
 12177  		goto __150
 12178  	}
 12179  	goto inf_leave
 12180  __150:
 12181  	;
 12182  __145:
 12183  	;
 12184  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0)
 12185  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = NAME
 12186  __16:
 12187  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0800) != 0) {
 12188  		goto __151
 12189  	}
 12190  	if !(have == uint32(0)) {
 12191  		goto __153
 12192  	}
 12193  	goto inf_leave
 12194  __153:
 12195  	;
 12196  	copy = uint32(0)
 12197  __154:
 12198  	len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(&copy, 1)))))
 12199  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname != uintptr(Z_NULL))) && ((*Inflate_state)(unsafe.Pointer(state)).Flength < (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname_max)) {
 12200  		goto __157
 12201  	}
 12202  	*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Flength, 1)))) = Bytef(len)
 12203  __157:
 12204  	;
 12205  	goto __155
 12206  __155:
 12207  	if (len != 0) && (copy < have) {
 12208  		goto __154
 12209  	}
 12210  	goto __156
 12211  __156:
 12212  	;
 12213  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 12214  		goto __158
 12215  	}
 12216  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy)
 12217  __158:
 12218  	;
 12219  	have = have - (copy)
 12220  	next += uintptr(copy)
 12221  	if !(len != 0) {
 12222  		goto __159
 12223  	}
 12224  	goto inf_leave
 12225  __159:
 12226  	;
 12227  	goto __152
 12228  __151:
 12229  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 12230  		goto __160
 12231  	}
 12232  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname = uintptr(Z_NULL)
 12233  __160:
 12234  	;
 12235  __152:
 12236  	;
 12237  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0)
 12238  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = COMMENT
 12239  __17:
 12240  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x1000) != 0) {
 12241  		goto __161
 12242  	}
 12243  	if !(have == uint32(0)) {
 12244  		goto __163
 12245  	}
 12246  	goto inf_leave
 12247  __163:
 12248  	;
 12249  	copy = uint32(0)
 12250  __164:
 12251  	len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(&copy, 1)))))
 12252  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment != uintptr(Z_NULL))) && ((*Inflate_state)(unsafe.Pointer(state)).Flength < (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomm_max)) {
 12253  		goto __167
 12254  	}
 12255  	*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Flength, 1)))) = Bytef(len)
 12256  __167:
 12257  	;
 12258  	goto __165
 12259  __165:
 12260  	if (len != 0) && (copy < have) {
 12261  		goto __164
 12262  	}
 12263  	goto __166
 12264  __166:
 12265  	;
 12266  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 12267  		goto __168
 12268  	}
 12269  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy)
 12270  __168:
 12271  	;
 12272  	have = have - (copy)
 12273  	next += uintptr(copy)
 12274  	if !(len != 0) {
 12275  		goto __169
 12276  	}
 12277  	goto inf_leave
 12278  __169:
 12279  	;
 12280  	goto __162
 12281  __161:
 12282  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 12283  		goto __170
 12284  	}
 12285  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment = uintptr(Z_NULL)
 12286  __170:
 12287  	;
 12288  __162:
 12289  	;
 12290  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = HCRC
 12291  __18:
 12292  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) {
 12293  		goto __171
 12294  	}
 12295  __172:
 12296  __175:
 12297  	if !(bits < (uint32(16))) {
 12298  		goto __176
 12299  	}
 12300  __177:
 12301  	if !(have == uint32(0)) {
 12302  		goto __180
 12303  	}
 12304  	goto inf_leave
 12305  __180:
 12306  	;
 12307  	have--
 12308  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12309  	bits = bits + (uint32(8))
 12310  	goto __178
 12311  __178:
 12312  	if 0 != 0 {
 12313  		goto __177
 12314  	}
 12315  	goto __179
 12316  __179:
 12317  	;
 12318  	goto __175
 12319  __176:
 12320  	;
 12321  	goto __173
 12322  __173:
 12323  	if 0 != 0 {
 12324  		goto __172
 12325  	}
 12326  	goto __174
 12327  __174:
 12328  	;
 12329  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (hold != ((*Inflate_state)(unsafe.Pointer(state)).Fcheck & uint64(0xffff)))) {
 12330  		goto __181
 12331  	}
 12332  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 764 /* "header crc misma..." */
 12333  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12334  	goto __9
 12335  __181:
 12336  	;
 12337  __182:
 12338  	hold = uint64(0)
 12339  	bits = uint32(0)
 12340  	goto __183
 12341  __183:
 12342  	if 0 != 0 {
 12343  		goto __182
 12344  	}
 12345  	goto __184
 12346  __184:
 12347  	;
 12348  __171:
 12349  	;
 12350  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 12351  		goto __185
 12352  	}
 12353  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fhcrc = (((*Inflate_state)(unsafe.Pointer(state)).Fflags >> 9) & 1)
 12354  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = 1
 12355  __185:
 12356  	;
 12357  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, Xcrc32(tls, uint64(0), uintptr(Z_NULL), uint32(0)))
 12358  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 12359  	goto __9
 12360  __19:
 12361  __186:
 12362  __189:
 12363  	if !(bits < (uint32(32))) {
 12364  		goto __190
 12365  	}
 12366  __191:
 12367  	if !(have == uint32(0)) {
 12368  		goto __194
 12369  	}
 12370  	goto inf_leave
 12371  __194:
 12372  	;
 12373  	have--
 12374  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12375  	bits = bits + (uint32(8))
 12376  	goto __192
 12377  __192:
 12378  	if 0 != 0 {
 12379  		goto __191
 12380  	}
 12381  	goto __193
 12382  __193:
 12383  	;
 12384  	goto __189
 12385  __190:
 12386  	;
 12387  	goto __187
 12388  __187:
 12389  	if 0 != 0 {
 12390  		goto __186
 12391  	}
 12392  	goto __188
 12393  __188:
 12394  	;
 12395  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, ((((((hold) >> 24) & uint64(0xff)) + (((hold) >> 8) & uint64(0xff00))) + (((hold) & uint64(0xff00)) << 8)) + (((hold) & uint64(0xff)) << 24)))
 12396  __195:
 12397  	hold = uint64(0)
 12398  	bits = uint32(0)
 12399  	goto __196
 12400  __196:
 12401  	if 0 != 0 {
 12402  		goto __195
 12403  	}
 12404  	goto __197
 12405  __197:
 12406  	;
 12407  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DICT
 12408  __20:
 12409  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhavedict == 0) {
 12410  		goto __198
 12411  	}
 12412  __199:
 12413  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 12414  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 12415  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
 12416  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 12417  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 12418  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 12419  	goto __200
 12420  __200:
 12421  	if 0 != 0 {
 12422  		goto __199
 12423  	}
 12424  	goto __201
 12425  __201:
 12426  	;
 12427  	return Z_NEED_DICT
 12428  __198:
 12429  	;
 12430  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0)))
 12431  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 12432  __21:
 12433  	if !((flush == Z_BLOCK) || (flush == Z_TREES)) {
 12434  		goto __202
 12435  	}
 12436  	goto inf_leave
 12437  __202:
 12438  	;
 12439  __22:
 12440  	if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) {
 12441  		goto __203
 12442  	}
 12443  __204:
 12444  	hold >>= (bits & uint32(7))
 12445  	bits = bits - (bits & uint32(7))
 12446  	goto __205
 12447  __205:
 12448  	if 0 != 0 {
 12449  		goto __204
 12450  	}
 12451  	goto __206
 12452  __206:
 12453  	;
 12454  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = CHECK
 12455  	goto __9
 12456  __203:
 12457  	;
 12458  __207:
 12459  __210:
 12460  	if !(bits < (uint32(3))) {
 12461  		goto __211
 12462  	}
 12463  __212:
 12464  	if !(have == uint32(0)) {
 12465  		goto __215
 12466  	}
 12467  	goto inf_leave
 12468  __215:
 12469  	;
 12470  	have--
 12471  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12472  	bits = bits + (uint32(8))
 12473  	goto __213
 12474  __213:
 12475  	if 0 != 0 {
 12476  		goto __212
 12477  	}
 12478  	goto __214
 12479  __214:
 12480  	;
 12481  	goto __210
 12482  __211:
 12483  	;
 12484  	goto __208
 12485  __208:
 12486  	if 0 != 0 {
 12487  		goto __207
 12488  	}
 12489  	goto __209
 12490  __209:
 12491  	;
 12492  	(*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1))))
 12493  __216:
 12494  	hold >>= 1
 12495  	bits = bits - (uint32(1))
 12496  	goto __217
 12497  __217:
 12498  	if 0 != 0 {
 12499  		goto __216
 12500  	}
 12501  	goto __218
 12502  __218:
 12503  	;
 12504  	switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) {
 12505  	case uint32(0):
 12506  		goto __220
 12507  	case uint32(1):
 12508  		goto __221
 12509  	case uint32(2):
 12510  		goto __222
 12511  	case uint32(3):
 12512  		goto __223
 12513  	}
 12514  	goto __219
 12515  __220: // stored block
 12516  	;
 12517  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED
 12518  	goto __219
 12519  __221: // fixed block
 12520  	fixedtables1(tls, state)
 12521  
 12522  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ // decode codes
 12523  	if !(flush == Z_TREES) {
 12524  		goto __224
 12525  	}
 12526  __225:
 12527  	hold >>= 2
 12528  	bits = bits - (uint32(2))
 12529  	goto __226
 12530  __226:
 12531  	if 0 != 0 {
 12532  		goto __225
 12533  	}
 12534  	goto __227
 12535  __227:
 12536  	;
 12537  	goto inf_leave
 12538  __224:
 12539  	;
 12540  	goto __219
 12541  __222: // dynamic block
 12542  	;
 12543  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE
 12544  	goto __219
 12545  __223:
 12546  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */
 12547  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12548  __219:
 12549  	;
 12550  __228:
 12551  	hold >>= 2
 12552  	bits = bits - (uint32(2))
 12553  	goto __229
 12554  __229:
 12555  	if 0 != 0 {
 12556  		goto __228
 12557  	}
 12558  	goto __230
 12559  __230:
 12560  	;
 12561  	goto __9
 12562  __23:
 12563  __231:
 12564  	hold >>= (bits & uint32(7))
 12565  	bits = bits - (bits & uint32(7))
 12566  	goto __232
 12567  __232:
 12568  	if 0 != 0 {
 12569  		goto __231
 12570  	}
 12571  	goto __233
 12572  __233:
 12573  	; // go to byte boundary
 12574  __234:
 12575  __237:
 12576  	if !(bits < (uint32(32))) {
 12577  		goto __238
 12578  	}
 12579  __239:
 12580  	if !(have == uint32(0)) {
 12581  		goto __242
 12582  	}
 12583  	goto inf_leave
 12584  __242:
 12585  	;
 12586  	have--
 12587  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12588  	bits = bits + (uint32(8))
 12589  	goto __240
 12590  __240:
 12591  	if 0 != 0 {
 12592  		goto __239
 12593  	}
 12594  	goto __241
 12595  __241:
 12596  	;
 12597  	goto __237
 12598  __238:
 12599  	;
 12600  	goto __235
 12601  __235:
 12602  	if 0 != 0 {
 12603  		goto __234
 12604  	}
 12605  	goto __236
 12606  __236:
 12607  	;
 12608  	if !((hold & uint64(0xffff)) != ((hold >> 16) ^ uint64(0xffff))) {
 12609  		goto __243
 12610  	}
 12611  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */
 12612  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12613  	goto __9
 12614  __243:
 12615  	;
 12616  	(*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff))
 12617  
 12618  __244:
 12619  	hold = uint64(0)
 12620  	bits = uint32(0)
 12621  	goto __245
 12622  __245:
 12623  	if 0 != 0 {
 12624  		goto __244
 12625  	}
 12626  	goto __246
 12627  __246:
 12628  	;
 12629  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY_
 12630  	if !(flush == Z_TREES) {
 12631  		goto __247
 12632  	}
 12633  	goto inf_leave
 12634  __247:
 12635  	;
 12636  __24:
 12637  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY
 12638  __25:
 12639  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 12640  	if !(copy != 0) {
 12641  		goto __248
 12642  	}
 12643  	if !(copy > have) {
 12644  		goto __249
 12645  	}
 12646  	copy = have
 12647  __249:
 12648  	;
 12649  	if !(copy > left) {
 12650  		goto __250
 12651  	}
 12652  	copy = left
 12653  __250:
 12654  	;
 12655  	if !(copy == uint32(0)) {
 12656  		goto __251
 12657  	}
 12658  	goto inf_leave
 12659  __251:
 12660  	;
 12661  	libc.Xmemcpy(tls, put, next, uint64(copy))
 12662  	have = have - (copy)
 12663  	next += uintptr(copy)
 12664  	left = left - (copy)
 12665  	put += uintptr(copy)
 12666  	*(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy)
 12667  	goto __9
 12668  __248:
 12669  	;
 12670  
 12671  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 12672  	goto __9
 12673  __26:
 12674  __252:
 12675  __255:
 12676  	if !(bits < (uint32(14))) {
 12677  		goto __256
 12678  	}
 12679  __257:
 12680  	if !(have == uint32(0)) {
 12681  		goto __260
 12682  	}
 12683  	goto inf_leave
 12684  __260:
 12685  	;
 12686  	have--
 12687  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12688  	bits = bits + (uint32(8))
 12689  	goto __258
 12690  __258:
 12691  	if 0 != 0 {
 12692  		goto __257
 12693  	}
 12694  	goto __259
 12695  __259:
 12696  	;
 12697  	goto __255
 12698  __256:
 12699  	;
 12700  	goto __253
 12701  __253:
 12702  	if 0 != 0 {
 12703  		goto __252
 12704  	}
 12705  	goto __254
 12706  __254:
 12707  	;
 12708  	(*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257))
 12709  __261:
 12710  	hold >>= 5
 12711  	bits = bits - (uint32(5))
 12712  	goto __262
 12713  __262:
 12714  	if 0 != 0 {
 12715  		goto __261
 12716  	}
 12717  	goto __263
 12718  __263:
 12719  	;
 12720  	(*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1))
 12721  __264:
 12722  	hold >>= 5
 12723  	bits = bits - (uint32(5))
 12724  	goto __265
 12725  __265:
 12726  	if 0 != 0 {
 12727  		goto __264
 12728  	}
 12729  	goto __266
 12730  __266:
 12731  	;
 12732  	(*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4))
 12733  __267:
 12734  	hold >>= 4
 12735  	bits = bits - (uint32(4))
 12736  	goto __268
 12737  __268:
 12738  	if 0 != 0 {
 12739  		goto __267
 12740  	}
 12741  	goto __269
 12742  __269:
 12743  	;
 12744  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) {
 12745  		goto __270
 12746  	}
 12747  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */
 12748  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12749  	goto __9
 12750  __270:
 12751  	;
 12752  
 12753  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 12754  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LENLENS
 12755  __27:
 12756  __271:
 12757  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) {
 12758  		goto __272
 12759  	}
 12760  __273:
 12761  __276:
 12762  	if !(bits < (uint32(3))) {
 12763  		goto __277
 12764  	}
 12765  __278:
 12766  	if !(have == uint32(0)) {
 12767  		goto __281
 12768  	}
 12769  	goto inf_leave
 12770  __281:
 12771  	;
 12772  	have--
 12773  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12774  	bits = bits + (uint32(8))
 12775  	goto __279
 12776  __279:
 12777  	if 0 != 0 {
 12778  		goto __278
 12779  	}
 12780  	goto __280
 12781  __280:
 12782  	;
 12783  	goto __276
 12784  __277:
 12785  	;
 12786  	goto __274
 12787  __274:
 12788  	if 0 != 0 {
 12789  		goto __273
 12790  	}
 12791  	goto __275
 12792  __275:
 12793  	;
 12794  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
 12795  __282:
 12796  	hold >>= 3
 12797  	bits = bits - (uint32(3))
 12798  	goto __283
 12799  __283:
 12800  	if 0 != 0 {
 12801  		goto __282
 12802  	}
 12803  	goto __284
 12804  __284:
 12805  	;
 12806  	goto __271
 12807  __272:
 12808  	;
 12809  __285:
 12810  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) {
 12811  		goto __286
 12812  	}
 12813  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0)
 12814  	goto __285
 12815  __286:
 12816  	;
 12817  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */
 12818  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 12819  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7)
 12820  	ret = Xinflate_table(tls, CODES, state+152 /* &.lens */, uint32(19), (state + 144 /* &.next */),
 12821  		(state + 120 /* &.lenbits */), state+792 /* &.work */)
 12822  	if !(ret != 0) {
 12823  		goto __287
 12824  	}
 12825  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */
 12826  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12827  	goto __9
 12828  __287:
 12829  	;
 12830  
 12831  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 12832  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = CODELENS
 12833  __28:
 12834  __288:
 12835  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
 12836  		goto __289
 12837  	}
 12838  __290:
 12839  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
 12840  	if !((uint32(here.Fbits)) <= bits) {
 12841  		goto __293
 12842  	}
 12843  	goto __292
 12844  __293:
 12845  	;
 12846  __294:
 12847  	if !(have == uint32(0)) {
 12848  		goto __297
 12849  	}
 12850  	goto inf_leave
 12851  __297:
 12852  	;
 12853  	have--
 12854  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12855  	bits = bits + (uint32(8))
 12856  	goto __295
 12857  __295:
 12858  	if 0 != 0 {
 12859  		goto __294
 12860  	}
 12861  	goto __296
 12862  __296:
 12863  	;
 12864  	goto __291
 12865  __291:
 12866  	goto __290
 12867  	goto __292
 12868  __292:
 12869  	;
 12870  	if !(int32(here.Fval) < 16) {
 12871  		goto __298
 12872  	}
 12873  __300:
 12874  	hold >>= int32(here.Fbits)
 12875  	bits = bits - (uint32(here.Fbits))
 12876  	goto __301
 12877  __301:
 12878  	if 0 != 0 {
 12879  		goto __300
 12880  	}
 12881  	goto __302
 12882  __302:
 12883  	;
 12884  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval
 12885  	goto __299
 12886  __298:
 12887  	if !(int32(here.Fval) == 16) {
 12888  		goto __303
 12889  	}
 12890  __305:
 12891  __308:
 12892  	if !(bits < (uint32(int32(here.Fbits) + 2))) {
 12893  		goto __309
 12894  	}
 12895  __310:
 12896  	if !(have == uint32(0)) {
 12897  		goto __313
 12898  	}
 12899  	goto inf_leave
 12900  __313:
 12901  	;
 12902  	have--
 12903  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12904  	bits = bits + (uint32(8))
 12905  	goto __311
 12906  __311:
 12907  	if 0 != 0 {
 12908  		goto __310
 12909  	}
 12910  	goto __312
 12911  __312:
 12912  	;
 12913  	goto __308
 12914  __309:
 12915  	;
 12916  	goto __306
 12917  __306:
 12918  	if 0 != 0 {
 12919  		goto __305
 12920  	}
 12921  	goto __307
 12922  __307:
 12923  	;
 12924  __314:
 12925  	hold >>= int32(here.Fbits)
 12926  	bits = bits - (uint32(here.Fbits))
 12927  	goto __315
 12928  __315:
 12929  	if 0 != 0 {
 12930  		goto __314
 12931  	}
 12932  	goto __316
 12933  __316:
 12934  	;
 12935  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) {
 12936  		goto __317
 12937  	}
 12938  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
 12939  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12940  	goto __289
 12941  __317:
 12942  	;
 12943  	len = uint32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2)))
 12944  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1))))
 12945  __318:
 12946  	hold >>= 2
 12947  	bits = bits - (uint32(2))
 12948  	goto __319
 12949  __319:
 12950  	if 0 != 0 {
 12951  		goto __318
 12952  	}
 12953  	goto __320
 12954  __320:
 12955  	;
 12956  	goto __304
 12957  __303:
 12958  	if !(int32(here.Fval) == 17) {
 12959  		goto __321
 12960  	}
 12961  __323:
 12962  __326:
 12963  	if !(bits < (uint32(int32(here.Fbits) + 3))) {
 12964  		goto __327
 12965  	}
 12966  __328:
 12967  	if !(have == uint32(0)) {
 12968  		goto __331
 12969  	}
 12970  	goto inf_leave
 12971  __331:
 12972  	;
 12973  	have--
 12974  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 12975  	bits = bits + (uint32(8))
 12976  	goto __329
 12977  __329:
 12978  	if 0 != 0 {
 12979  		goto __328
 12980  	}
 12981  	goto __330
 12982  __330:
 12983  	;
 12984  	goto __326
 12985  __327:
 12986  	;
 12987  	goto __324
 12988  __324:
 12989  	if 0 != 0 {
 12990  		goto __323
 12991  	}
 12992  	goto __325
 12993  __325:
 12994  	;
 12995  __332:
 12996  	hold >>= int32(here.Fbits)
 12997  	bits = bits - (uint32(here.Fbits))
 12998  	goto __333
 12999  __333:
 13000  	if 0 != 0 {
 13001  		goto __332
 13002  	}
 13003  	goto __334
 13004  __334:
 13005  	;
 13006  	len = uint32(0)
 13007  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
 13008  __335:
 13009  	hold >>= 3
 13010  	bits = bits - (uint32(3))
 13011  	goto __336
 13012  __336:
 13013  	if 0 != 0 {
 13014  		goto __335
 13015  	}
 13016  	goto __337
 13017  __337:
 13018  	;
 13019  	goto __322
 13020  __321:
 13021  __338:
 13022  __341:
 13023  	if !(bits < (uint32(int32(here.Fbits) + 7))) {
 13024  		goto __342
 13025  	}
 13026  __343:
 13027  	if !(have == uint32(0)) {
 13028  		goto __346
 13029  	}
 13030  	goto inf_leave
 13031  __346:
 13032  	;
 13033  	have--
 13034  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13035  	bits = bits + (uint32(8))
 13036  	goto __344
 13037  __344:
 13038  	if 0 != 0 {
 13039  		goto __343
 13040  	}
 13041  	goto __345
 13042  __345:
 13043  	;
 13044  	goto __341
 13045  __342:
 13046  	;
 13047  	goto __339
 13048  __339:
 13049  	if 0 != 0 {
 13050  		goto __338
 13051  	}
 13052  	goto __340
 13053  __340:
 13054  	;
 13055  __347:
 13056  	hold >>= int32(here.Fbits)
 13057  	bits = bits - (uint32(here.Fbits))
 13058  	goto __348
 13059  __348:
 13060  	if 0 != 0 {
 13061  		goto __347
 13062  	}
 13063  	goto __349
 13064  __349:
 13065  	;
 13066  	len = uint32(0)
 13067  	copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1))))
 13068  __350:
 13069  	hold >>= 7
 13070  	bits = bits - (uint32(7))
 13071  	goto __351
 13072  __351:
 13073  	if 0 != 0 {
 13074  		goto __350
 13075  	}
 13076  	goto __352
 13077  __352:
 13078  	;
 13079  __322:
 13080  	;
 13081  __304:
 13082  	;
 13083  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
 13084  		goto __353
 13085  	}
 13086  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
 13087  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13088  	goto __289
 13089  __353:
 13090  	;
 13091  __354:
 13092  	if !(libc.PostDecUint32(&copy, 1) != 0) {
 13093  		goto __355
 13094  	}
 13095  	*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len)
 13096  	goto __354
 13097  __355:
 13098  	;
 13099  __299:
 13100  	;
 13101  	goto __288
 13102  __289:
 13103  	;
 13104  
 13105  	// handle error breaks in while
 13106  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) {
 13107  		goto __356
 13108  	}
 13109  	goto __9
 13110  __356:
 13111  	;
 13112  
 13113  	// check for end-of-block code (better have one)
 13114  	if !(int32(*(*uint16)(unsafe.Pointer((state + 152 /* &.lens */) + 256*2))) == 0) {
 13115  		goto __357
 13116  	}
 13117  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */
 13118  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13119  	goto __9
 13120  __357:
 13121  	;
 13122  
 13123  	// build code tables -- note: do not change the lenbits or distbits
 13124  	//                values here (9 and 6) without reading the comments in inftrees.h
 13125  	//                concerning the ENOUGH constants, which depend on those values
 13126  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1368 /* &.codes */
 13127  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 13128  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
 13129  	ret = Xinflate_table(tls, LENS, state+152 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 144 /* &.next */),
 13130  		(state + 120 /* &.lenbits */), state+792 /* &.work */)
 13131  	if !(ret != 0) {
 13132  		goto __358
 13133  	}
 13134  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */
 13135  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13136  	goto __9
 13137  __358:
 13138  	;
 13139  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 13140  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6)
 13141  	ret = Xinflate_table(tls, DISTS, ((state + 152 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist,
 13142  		(state + 144 /* &.next */), (state + 124 /* &.distbits */), state+792 /* &.work */)
 13143  	if !(ret != 0) {
 13144  		goto __359
 13145  	}
 13146  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */
 13147  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13148  	goto __9
 13149  __359:
 13150  	;
 13151  
 13152  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_
 13153  	if !(flush == Z_TREES) {
 13154  		goto __360
 13155  	}
 13156  	goto inf_leave
 13157  __360:
 13158  	;
 13159  __29:
 13160  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 13161  __30:
 13162  	if !((have >= uint32(6)) && (left >= uint32(258))) {
 13163  		goto __361
 13164  	}
 13165  __362:
 13166  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 13167  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 13168  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
 13169  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 13170  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 13171  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 13172  	goto __363
 13173  __363:
 13174  	if 0 != 0 {
 13175  		goto __362
 13176  	}
 13177  	goto __364
 13178  __364:
 13179  	;
 13180  	Xinflate_fast(tls, strm, out)
 13181  __365:
 13182  	put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 13183  	left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
 13184  	next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 13185  	have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
 13186  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 13187  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 13188  	goto __366
 13189  __366:
 13190  	if 0 != 0 {
 13191  		goto __365
 13192  	}
 13193  	goto __367
 13194  __367:
 13195  	;
 13196  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) {
 13197  		goto __368
 13198  	}
 13199  	(*Inflate_state)(unsafe.Pointer(state)).Fback = -1
 13200  __368:
 13201  	;
 13202  	goto __9
 13203  __361:
 13204  	;
 13205  	(*Inflate_state)(unsafe.Pointer(state)).Fback = 0
 13206  __369:
 13207  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
 13208  	if !((uint32(here.Fbits)) <= bits) {
 13209  		goto __372
 13210  	}
 13211  	goto __371
 13212  __372:
 13213  	;
 13214  __373:
 13215  	if !(have == uint32(0)) {
 13216  		goto __376
 13217  	}
 13218  	goto inf_leave
 13219  __376:
 13220  	;
 13221  	have--
 13222  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13223  	bits = bits + (uint32(8))
 13224  	goto __374
 13225  __374:
 13226  	if 0 != 0 {
 13227  		goto __373
 13228  	}
 13229  	goto __375
 13230  __375:
 13231  	;
 13232  	goto __370
 13233  __370:
 13234  	goto __369
 13235  	goto __371
 13236  __371:
 13237  	;
 13238  	if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) {
 13239  		goto __377
 13240  	}
 13241  	last = here
 13242  __378:
 13243  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 13244  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 13245  		goto __381
 13246  	}
 13247  	goto __380
 13248  __381:
 13249  	;
 13250  __382:
 13251  	if !(have == uint32(0)) {
 13252  		goto __385
 13253  	}
 13254  	goto inf_leave
 13255  __385:
 13256  	;
 13257  	have--
 13258  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13259  	bits = bits + (uint32(8))
 13260  	goto __383
 13261  __383:
 13262  	if 0 != 0 {
 13263  		goto __382
 13264  	}
 13265  	goto __384
 13266  __384:
 13267  	;
 13268  	goto __379
 13269  __379:
 13270  	goto __378
 13271  	goto __380
 13272  __380:
 13273  	;
 13274  __386:
 13275  	hold >>= int32(last.Fbits)
 13276  	bits = bits - (uint32(last.Fbits))
 13277  	goto __387
 13278  __387:
 13279  	if 0 != 0 {
 13280  		goto __386
 13281  	}
 13282  	goto __388
 13283  __388:
 13284  	;
 13285  	*(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(last.Fbits))
 13286  __377:
 13287  	;
 13288  __389:
 13289  	hold >>= int32(here.Fbits)
 13290  	bits = bits - (uint32(here.Fbits))
 13291  	goto __390
 13292  __390:
 13293  	if 0 != 0 {
 13294  		goto __389
 13295  	}
 13296  	goto __391
 13297  __391:
 13298  	;
 13299  	*(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(here.Fbits))
 13300  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval)
 13301  	if !((int32(here.Fop)) == 0) {
 13302  		goto __392
 13303  	}
 13304  
 13305  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LIT
 13306  	goto __9
 13307  __392:
 13308  	;
 13309  	if !((int32(here.Fop) & 32) != 0) {
 13310  		goto __393
 13311  	}
 13312  
 13313  	(*Inflate_state)(unsafe.Pointer(state)).Fback = -1
 13314  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 13315  	goto __9
 13316  __393:
 13317  	;
 13318  	if !((int32(here.Fop) & 64) != 0) {
 13319  		goto __394
 13320  	}
 13321  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */
 13322  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13323  	goto __9
 13324  __394:
 13325  	;
 13326  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 13327  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LENEXT
 13328  __31:
 13329  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) {
 13330  		goto __395
 13331  	}
 13332  __396:
 13333  __399:
 13334  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 13335  		goto __400
 13336  	}
 13337  __401:
 13338  	if !(have == uint32(0)) {
 13339  		goto __404
 13340  	}
 13341  	goto inf_leave
 13342  __404:
 13343  	;
 13344  	have--
 13345  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13346  	bits = bits + (uint32(8))
 13347  	goto __402
 13348  __402:
 13349  	if 0 != 0 {
 13350  		goto __401
 13351  	}
 13352  	goto __403
 13353  __403:
 13354  	;
 13355  	goto __399
 13356  __400:
 13357  	;
 13358  	goto __397
 13359  __397:
 13360  	if 0 != 0 {
 13361  		goto __396
 13362  	}
 13363  	goto __398
 13364  __398:
 13365  	;
 13366  	*(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 13367  __405:
 13368  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 13369  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 13370  	goto __406
 13371  __406:
 13372  	if 0 != 0 {
 13373  		goto __405
 13374  	}
 13375  	goto __407
 13376  __407:
 13377  	;
 13378  	*(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra))
 13379  __395:
 13380  	;
 13381  
 13382  	(*Inflate_state)(unsafe.Pointer(state)).Fwas = (*Inflate_state)(unsafe.Pointer(state)).Flength
 13383  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DIST
 13384  __32:
 13385  __408:
 13386  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4))
 13387  	if !((uint32(here.Fbits)) <= bits) {
 13388  		goto __411
 13389  	}
 13390  	goto __410
 13391  __411:
 13392  	;
 13393  __412:
 13394  	if !(have == uint32(0)) {
 13395  		goto __415
 13396  	}
 13397  	goto inf_leave
 13398  __415:
 13399  	;
 13400  	have--
 13401  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13402  	bits = bits + (uint32(8))
 13403  	goto __413
 13404  __413:
 13405  	if 0 != 0 {
 13406  		goto __412
 13407  	}
 13408  	goto __414
 13409  __414:
 13410  	;
 13411  	goto __409
 13412  __409:
 13413  	goto __408
 13414  	goto __410
 13415  __410:
 13416  	;
 13417  	if !((int32(here.Fop) & 0xf0) == 0) {
 13418  		goto __416
 13419  	}
 13420  	last = here
 13421  __417:
 13422  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 13423  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 13424  		goto __420
 13425  	}
 13426  	goto __419
 13427  __420:
 13428  	;
 13429  __421:
 13430  	if !(have == uint32(0)) {
 13431  		goto __424
 13432  	}
 13433  	goto inf_leave
 13434  __424:
 13435  	;
 13436  	have--
 13437  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13438  	bits = bits + (uint32(8))
 13439  	goto __422
 13440  __422:
 13441  	if 0 != 0 {
 13442  		goto __421
 13443  	}
 13444  	goto __423
 13445  __423:
 13446  	;
 13447  	goto __418
 13448  __418:
 13449  	goto __417
 13450  	goto __419
 13451  __419:
 13452  	;
 13453  __425:
 13454  	hold >>= int32(last.Fbits)
 13455  	bits = bits - (uint32(last.Fbits))
 13456  	goto __426
 13457  __426:
 13458  	if 0 != 0 {
 13459  		goto __425
 13460  	}
 13461  	goto __427
 13462  __427:
 13463  	;
 13464  	*(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(last.Fbits))
 13465  __416:
 13466  	;
 13467  __428:
 13468  	hold >>= int32(here.Fbits)
 13469  	bits = bits - (uint32(here.Fbits))
 13470  	goto __429
 13471  __429:
 13472  	if 0 != 0 {
 13473  		goto __428
 13474  	}
 13475  	goto __430
 13476  __430:
 13477  	;
 13478  	*(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += (int32(here.Fbits))
 13479  	if !((int32(here.Fop) & 64) != 0) {
 13480  		goto __431
 13481  	}
 13482  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */
 13483  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13484  	goto __9
 13485  __431:
 13486  	;
 13487  	(*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval)
 13488  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 13489  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DISTEXT
 13490  __33:
 13491  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) {
 13492  		goto __432
 13493  	}
 13494  __433:
 13495  __436:
 13496  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 13497  		goto __437
 13498  	}
 13499  __438:
 13500  	if !(have == uint32(0)) {
 13501  		goto __441
 13502  	}
 13503  	goto inf_leave
 13504  __441:
 13505  	;
 13506  	have--
 13507  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13508  	bits = bits + (uint32(8))
 13509  	goto __439
 13510  __439:
 13511  	if 0 != 0 {
 13512  		goto __438
 13513  	}
 13514  	goto __440
 13515  __440:
 13516  	;
 13517  	goto __436
 13518  __437:
 13519  	;
 13520  	goto __434
 13521  __434:
 13522  	if 0 != 0 {
 13523  		goto __433
 13524  	}
 13525  	goto __435
 13526  __435:
 13527  	;
 13528  	*(*uint32)(unsafe.Pointer(state + 96 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 13529  __442:
 13530  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 13531  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 13532  	goto __443
 13533  __443:
 13534  	if 0 != 0 {
 13535  		goto __442
 13536  	}
 13537  	goto __444
 13538  __444:
 13539  	;
 13540  	*(*int32)(unsafe.Pointer(state + 7148 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra))
 13541  __432:
 13542  	;
 13543  
 13544  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = MATCH
 13545  __34:
 13546  	if !(left == uint32(0)) {
 13547  		goto __445
 13548  	}
 13549  	goto inf_leave
 13550  __445:
 13551  	;
 13552  	copy = (out - left)
 13553  	if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > copy) {
 13554  		goto __446
 13555  	} // copy from window
 13556  	copy = ((*Inflate_state)(unsafe.Pointer(state)).Foffset - copy)
 13557  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwhave) {
 13558  		goto __448
 13559  	}
 13560  	if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) {
 13561  		goto __449
 13562  	}
 13563  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */
 13564  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13565  	goto __9
 13566  __449:
 13567  	;
 13568  __448:
 13569  	;
 13570  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwnext) {
 13571  		goto __450
 13572  	}
 13573  	copy = copy - ((*Inflate_state)(unsafe.Pointer(state)).Fwnext)
 13574  	from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwsize - copy)))
 13575  	goto __451
 13576  __450:
 13577  	from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwnext - copy)))
 13578  __451:
 13579  	;
 13580  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) {
 13581  		goto __452
 13582  	}
 13583  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 13584  __452:
 13585  	;
 13586  	goto __447
 13587  __446: // copy from output
 13588  	from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset))
 13589  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 13590  __447:
 13591  	;
 13592  	if !(copy > left) {
 13593  		goto __453
 13594  	}
 13595  	copy = left
 13596  __453:
 13597  	;
 13598  	left = left - (copy)
 13599  	*(*uint32)(unsafe.Pointer(state + 92 /* &.length */)) -= (copy)
 13600  __454:
 13601  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 13602  	goto __455
 13603  __455:
 13604  	if libc.PreDecUint32(&copy, 1) != 0 {
 13605  		goto __454
 13606  	}
 13607  	goto __456
 13608  __456:
 13609  	;
 13610  	if !((*Inflate_state)(unsafe.Pointer(state)).Flength == uint32(0)) {
 13611  		goto __457
 13612  	}
 13613  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 13614  __457:
 13615  	;
 13616  	goto __9
 13617  __35:
 13618  	if !(left == uint32(0)) {
 13619  		goto __458
 13620  	}
 13621  	goto inf_leave
 13622  __458:
 13623  	;
 13624  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength)
 13625  	left--
 13626  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 13627  	goto __9
 13628  __36:
 13629  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) {
 13630  		goto __459
 13631  	}
 13632  __460:
 13633  __463:
 13634  	if !(bits < (uint32(32))) {
 13635  		goto __464
 13636  	}
 13637  __465:
 13638  	if !(have == uint32(0)) {
 13639  		goto __468
 13640  	}
 13641  	goto inf_leave
 13642  __468:
 13643  	;
 13644  	have--
 13645  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13646  	bits = bits + (uint32(8))
 13647  	goto __466
 13648  __466:
 13649  	if 0 != 0 {
 13650  		goto __465
 13651  	}
 13652  	goto __467
 13653  __467:
 13654  	;
 13655  	goto __463
 13656  __464:
 13657  	;
 13658  	goto __461
 13659  __461:
 13660  	if 0 != 0 {
 13661  		goto __460
 13662  	}
 13663  	goto __462
 13664  __462:
 13665  	;
 13666  	out = out - (left)
 13667  	*(*ULong)(unsafe.Pointer(strm + 40 /* &.total_out */)) += (ULong(out))
 13668  	*(*uint64)(unsafe.Pointer(state + 40 /* &.total */)) += (uint64(out))
 13669  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) {
 13670  		goto __469
 13671  	}
 13672  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, func() uint64 {
 13673  		if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 {
 13674  			return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out)
 13675  		}
 13676  		return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out)
 13677  	}())
 13678  __469:
 13679  	;
 13680  	out = left
 13681  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && ((func() uint64 {
 13682  		if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 {
 13683  			return hold
 13684  		}
 13685  		return ((((((hold) >> 24) & uint64(0xff)) + (((hold) >> 8) & uint64(0xff00))) + (((hold) & uint64(0xff00)) << 8)) + (((hold) & uint64(0xff)) << 24))
 13686  	}()) != (*Inflate_state)(unsafe.Pointer(state)).Fcheck)) {
 13687  		goto __470
 13688  	}
 13689  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 784 /* "incorrect data c..." */
 13690  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13691  	goto __9
 13692  __470:
 13693  	;
 13694  __471:
 13695  	hold = uint64(0)
 13696  	bits = uint32(0)
 13697  	goto __472
 13698  __472:
 13699  	if 0 != 0 {
 13700  		goto __471
 13701  	}
 13702  	goto __473
 13703  __473:
 13704  	;
 13705  
 13706  __459:
 13707  	;
 13708  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LENGTH
 13709  __37:
 13710  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fflags != 0)) {
 13711  		goto __474
 13712  	}
 13713  __475:
 13714  __478:
 13715  	if !(bits < (uint32(32))) {
 13716  		goto __479
 13717  	}
 13718  __480:
 13719  	if !(have == uint32(0)) {
 13720  		goto __483
 13721  	}
 13722  	goto inf_leave
 13723  __483:
 13724  	;
 13725  	have--
 13726  	hold = hold + ((uint64(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13727  	bits = bits + (uint32(8))
 13728  	goto __481
 13729  __481:
 13730  	if 0 != 0 {
 13731  		goto __480
 13732  	}
 13733  	goto __482
 13734  __482:
 13735  	;
 13736  	goto __478
 13737  __479:
 13738  	;
 13739  	goto __476
 13740  __476:
 13741  	if 0 != 0 {
 13742  		goto __475
 13743  	}
 13744  	goto __477
 13745  __477:
 13746  	;
 13747  	if !(hold != ((*Inflate_state)(unsafe.Pointer(state)).Ftotal & 0xffffffff)) {
 13748  		goto __484
 13749  	}
 13750  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 805 /* "incorrect length..." */
 13751  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13752  	goto __9
 13753  __484:
 13754  	;
 13755  __485:
 13756  	hold = uint64(0)
 13757  	bits = uint32(0)
 13758  	goto __486
 13759  __486:
 13760  	if 0 != 0 {
 13761  		goto __485
 13762  	}
 13763  	goto __487
 13764  __487:
 13765  	;
 13766  
 13767  __474:
 13768  	;
 13769  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE
 13770  __38:
 13771  	ret = Z_STREAM_END
 13772  	goto inf_leave
 13773  __39:
 13774  	ret = -3
 13775  	goto inf_leave
 13776  __40:
 13777  	return -4
 13778  __41:
 13779  __42:
 13780  	return -2
 13781  __9:
 13782  	;
 13783  	goto __7
 13784  __7:
 13785  	goto __6
 13786  	goto __8
 13787  __8:
 13788  	;
 13789  
 13790  	//
 13791  	//        Return from inflate(), updating the total counts and the check value.
 13792  	//        If there was no progress during the inflate() call, return a buffer
 13793  	//        error.  Call updatewindow() to create and/or update the window state.
 13794  	//        Note: a memory error from inflate() is non-recoverable.
 13795  	//
 13796  inf_leave:
 13797  __488:
 13798  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 13799  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 13800  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
 13801  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 13802  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 13803  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 13804  	goto __489
 13805  __489:
 13806  	if 0 != 0 {
 13807  		goto __488
 13808  	}
 13809  	goto __490
 13810  __490:
 13811  	;
 13812  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fwsize != 0) || (((out != (*Z_stream)(unsafe.Pointer(strm)).Favail_out) && ((*Inflate_state)(unsafe.Pointer(state)).Fmode < BAD)) && (((*Inflate_state)(unsafe.Pointer(state)).Fmode < CHECK) || (flush != Z_FINISH)))) {
 13813  		goto __491
 13814  	}
 13815  	if !(updatewindow(tls, strm, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (out-(*Z_stream)(unsafe.Pointer(strm)).Favail_out)) != 0) {
 13816  		goto __492
 13817  	}
 13818  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM
 13819  	return -4
 13820  __492:
 13821  	;
 13822  __491:
 13823  	;
 13824  	in = in - ((*Z_stream)(unsafe.Pointer(strm)).Favail_in)
 13825  	out = out - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out)
 13826  	*(*ULong)(unsafe.Pointer(strm + 16 /* &.total_in */)) += (ULong(in))
 13827  	*(*ULong)(unsafe.Pointer(strm + 40 /* &.total_out */)) += (ULong(out))
 13828  	*(*uint64)(unsafe.Pointer(state + 40 /* &.total */)) += (uint64(out))
 13829  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) {
 13830  		goto __493
 13831  	}
 13832  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint64(state+32 /* &.check */, func() uint64 {
 13833  		if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 {
 13834  			return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out)
 13835  		}
 13836  		return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out)
 13837  	}())
 13838  __493:
 13839  	;
 13840  	(*Z_stream)(unsafe.Pointer(strm)).Fdata_type = (((int32((*Inflate_state)(unsafe.Pointer(state)).Fbits) + (func() int32 {
 13841  		if (*Inflate_state)(unsafe.Pointer(state)).Flast != 0 {
 13842  			return 64
 13843  		}
 13844  		return 0
 13845  	}())) + (func() int32 {
 13846  		if (*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE {
 13847  			return 128
 13848  		}
 13849  		return 0
 13850  	}())) + (func() int32 {
 13851  		if ((*Inflate_state)(unsafe.Pointer(state)).Fmode == LEN_) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY_) {
 13852  			return 256
 13853  		}
 13854  		return 0
 13855  	}()))
 13856  	if !((((in == uint32(0)) && (out == uint32(0))) || (flush == Z_FINISH)) && (ret == Z_OK)) {
 13857  		goto __494
 13858  	}
 13859  	ret = -5
 13860  __494:
 13861  	;
 13862  	return ret
 13863  }
 13864  
 13865  var order1 =                                                                                                                                                                                                                         // permutation of code lengths
 13866  [19]uint16{uint16(16), uint16(17), uint16(18), uint16(0), uint16(8), uint16(7), uint16(9), uint16(6), uint16(10), uint16(5), uint16(11), uint16(4), uint16(12), uint16(3), uint16(13), uint16(2), uint16(14), uint16(1), uint16(15)} /* inflate.c:642:33 */
 13867  
 13868  func XinflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1277:13: */
 13869  	var state uintptr
 13870  	if inflateStateCheck(tls, strm) != 0 {
 13871  		return -2
 13872  	}
 13873  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 13874  	if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) {
 13875  		(*struct {
 13876  			f func(*libc.TLS, Voidpf, Voidpf)
 13877  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow)
 13878  	}
 13879  	(*struct {
 13880  		f func(*libc.TLS, Voidpf, Voidpf)
 13881  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
 13882  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
 13883  
 13884  	return Z_OK
 13885  }
 13886  
 13887  func XinflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* inflate.c:1291:13: */
 13888  	var state uintptr
 13889  
 13890  	// check state
 13891  	if inflateStateCheck(tls, strm) != 0 {
 13892  		return -2
 13893  	}
 13894  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 13895  
 13896  	// copy dictionary
 13897  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwhave != 0) && (dictionary != uintptr(Z_NULL)) {
 13898  		libc.Xmemcpy(tls, dictionary, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)),
 13899  			(uint64((*Inflate_state)(unsafe.Pointer(state)).Fwhave - (*Inflate_state)(unsafe.Pointer(state)).Fwnext)))
 13900  		libc.Xmemcpy(tls, ((dictionary + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwhave)) - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)),
 13901  			(*Inflate_state)(unsafe.Pointer(state)).Fwindow, uint64((*Inflate_state)(unsafe.Pointer(state)).Fwnext))
 13902  	}
 13903  	if dictLength != uintptr(Z_NULL) {
 13904  		*(*UInt)(unsafe.Pointer(dictLength)) = (*Inflate_state)(unsafe.Pointer(state)).Fwhave
 13905  	}
 13906  	return Z_OK
 13907  }
 13908  
 13909  func XinflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* inflate.c:1314:13: */
 13910  	var state uintptr
 13911  	var dictid uint64
 13912  	var ret int32
 13913  
 13914  	// check state
 13915  	if inflateStateCheck(tls, strm) != 0 {
 13916  		return -2
 13917  	}
 13918  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 13919  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fmode != DICT) {
 13920  		return -2
 13921  	}
 13922  
 13923  	// check for correct dictionary identifier
 13924  	if (*Inflate_state)(unsafe.Pointer(state)).Fmode == DICT {
 13925  		dictid = Xadler32(tls, uint64(0), uintptr(Z_NULL), uint32(0))
 13926  		dictid = Xadler32(tls, dictid, dictionary, dictLength)
 13927  		if dictid != (*Inflate_state)(unsafe.Pointer(state)).Fcheck {
 13928  			return -3
 13929  		}
 13930  	}
 13931  
 13932  	// copy dictionary to window using updatewindow(), which will amend the
 13933  	//        existing dictionary if appropriate
 13934  	ret = updatewindow(tls, strm, (dictionary + uintptr(dictLength)), dictLength)
 13935  	if ret != 0 {
 13936  		(*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM
 13937  		return -4
 13938  	}
 13939  	(*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 1
 13940  
 13941  	return Z_OK
 13942  }
 13943  
 13944  func XinflateGetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* inflate.c:1349:13: */
 13945  	var state uintptr
 13946  
 13947  	// check state
 13948  	if inflateStateCheck(tls, strm) != 0 {
 13949  		return -2
 13950  	}
 13951  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 13952  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) == 0 {
 13953  		return -2
 13954  	}
 13955  
 13956  	// save header structure
 13957  	(*Inflate_state)(unsafe.Pointer(state)).Fhead = head
 13958  	(*Gz_header)(unsafe.Pointer(head)).Fdone = 0
 13959  	return Z_OK
 13960  }
 13961  
 13962  //
 13963  //    Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff.  Return when found
 13964  //    or when out of input.  When called, *have is the number of pattern bytes
 13965  //    found in order so far, in 0..3.  On return *have is updated to the new
 13966  //    state.  If on return *have equals four, then the pattern was found and the
 13967  //    return value is how many bytes were read including the last byte of the
 13968  //    pattern.  If *have is less than four, then the pattern has not been found
 13969  //    yet and the return value is len.  In the latter case, syncsearch() can be
 13970  //    called again with more data and the *have state.  *have is initialized to
 13971  //    zero for the first call.
 13972  //
 13973  func syncsearch(tls *libc.TLS, have uintptr, buf uintptr, len uint32) uint32 { /* inflate.c:1377:16: */
 13974  	var got uint32
 13975  	var next uint32
 13976  
 13977  	got = *(*uint32)(unsafe.Pointer(have))
 13978  	next = uint32(0)
 13979  	for (next < len) && (got < uint32(4)) {
 13980  		if (int32(*(*uint8)(unsafe.Pointer(buf + uintptr(next))))) == (func() int32 {
 13981  			if got < uint32(2) {
 13982  				return 0
 13983  			}
 13984  			return 0xff
 13985  		}()) {
 13986  			got++
 13987  		} else if *(*uint8)(unsafe.Pointer(buf + uintptr(next))) != 0 {
 13988  			got = uint32(0)
 13989  		} else {
 13990  			got = (uint32(4) - got)
 13991  		}
 13992  		next++
 13993  	}
 13994  	*(*uint32)(unsafe.Pointer(have)) = got
 13995  	return next
 13996  }
 13997  
 13998  func XinflateSync(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1400:13: */
 13999  	bp := tls.Alloc(4)
 14000  	defer tls.Free(4)
 14001  
 14002  	var len uint32 // number of bytes to look at or looked at
 14003  	var in uint64
 14004  	var out uint64 // temporary to save total_in and total_out
 14005  	// var buf [4]uint8 at bp, 4
 14006  	// to restore bit buffer to byte string
 14007  	var state uintptr
 14008  
 14009  	// check parameters
 14010  	if inflateStateCheck(tls, strm) != 0 {
 14011  		return -2
 14012  	}
 14013  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 14014  	if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits < uint32(8)) {
 14015  		return -5
 14016  	}
 14017  
 14018  	// if first time, start search in bit buffer
 14019  	if (*Inflate_state)(unsafe.Pointer(state)).Fmode != SYNC {
 14020  		(*Inflate_state)(unsafe.Pointer(state)).Fmode = SYNC
 14021  		libc.AssignShlPtrUint64(state+80 /* &.hold */, int(((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7))))
 14022  		*(*uint32)(unsafe.Pointer(state + 88 /* &.bits */)) -= ((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7))
 14023  		len = uint32(0)
 14024  		for (*Inflate_state)(unsafe.Pointer(state)).Fbits >= uint32(8) {
 14025  			*(*uint8)(unsafe.Pointer(bp /* &buf[0] */ + uintptr(libc.PostIncUint32(&len, 1)))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Fhold)
 14026  			libc.AssignShrPtrUint64(state+80 /* &.hold */, int(8))
 14027  			*(*uint32)(unsafe.Pointer(state + 88 /* &.bits */)) -= (uint32(8))
 14028  		}
 14029  		(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 14030  		syncsearch(tls, (state + 140 /* &.have */), bp /* &buf[0] */, len)
 14031  	}
 14032  
 14033  	// search available input
 14034  	len = syncsearch(tls, (state + 140 /* &.have */), (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, (*Z_stream)(unsafe.Pointer(strm)).Favail_in)
 14035  	*(*UInt)(unsafe.Pointer(strm + 8 /* &.avail_in */)) -= (len)
 14036  	*(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len))
 14037  	*(*ULong)(unsafe.Pointer(strm + 16 /* &.total_in */)) += (ULong(len))
 14038  
 14039  	// return no joy or set up to restart inflate() on a new block
 14040  	if (*Inflate_state)(unsafe.Pointer(state)).Fhave != uint32(4) {
 14041  		return -3
 14042  	}
 14043  	in = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in
 14044  	out = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out
 14045  	XinflateReset(tls, strm)
 14046  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = in
 14047  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_out = out
 14048  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 14049  	return Z_OK
 14050  }
 14051  
 14052  //
 14053  //    Returns true if inflate is currently at the end of a block generated by
 14054  //    Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
 14055  //    implementation to provide an additional safety check. PPP uses
 14056  //    Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored
 14057  //    block. When decompressing, PPP checks that at the end of input packet,
 14058  //    inflate is waiting for these length bytes.
 14059  //
 14060  func XinflateSyncPoint(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1451:13: */
 14061  	var state uintptr
 14062  
 14063  	if inflateStateCheck(tls, strm) != 0 {
 14064  		return -2
 14065  	}
 14066  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 14067  	return (libc.Bool32(((*Inflate_state)(unsafe.Pointer(state)).Fmode == STORED) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits == uint32(0))))
 14068  }
 14069  
 14070  func XinflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* inflate.c:1461:13: */
 14071  	var state uintptr
 14072  	var copy uintptr
 14073  	var window uintptr
 14074  	var wsize uint32
 14075  
 14076  	// check input
 14077  	if (inflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) {
 14078  		return -2
 14079  	}
 14080  	state = (*Z_stream)(unsafe.Pointer(source)).Fstate
 14081  
 14082  	// allocate space
 14083  	copy = (*struct {
 14084  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 14085  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{})))
 14086  	if copy == uintptr(Z_NULL) {
 14087  		return -4
 14088  	}
 14089  	window = uintptr(Z_NULL)
 14090  	if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) {
 14091  		window = (*struct {
 14092  			f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 14093  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits), uint32(unsafe.Sizeof(uint8(0))))
 14094  		if window == uintptr(Z_NULL) {
 14095  			(*struct {
 14096  				f func(*libc.TLS, Voidpf, Voidpf)
 14097  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, copy)
 14098  			return -4
 14099  		}
 14100  	}
 14101  
 14102  	// copy state
 14103  	libc.Xmemcpy(tls, dest, source, uint64(unsafe.Sizeof(Z_stream{})))
 14104  	libc.Xmemcpy(tls, copy, state, uint64(unsafe.Sizeof(Inflate_state{})))
 14105  	(*Inflate_state)(unsafe.Pointer(copy)).Fstrm = dest
 14106  	if ((*Inflate_state)(unsafe.Pointer(state)).Flencode >= state+1368 /* &.codes */) && ((*Inflate_state)(unsafe.Pointer(state)).Flencode <= (((state + 1368 /* &.codes */) + uintptr((ENOUGH_LENS+ENOUGH_DISTS))*4) - uintptr(1)*4)) {
 14107  		(*Inflate_state)(unsafe.Pointer(copy)).Flencode = ((copy + 1368 /* &.codes */) + uintptr((int64(((*Inflate_state)(unsafe.Pointer(state)).Flencode-(state+1368 /* &.codes */))/4)))*4)
 14108  		(*Inflate_state)(unsafe.Pointer(copy)).Fdistcode = ((copy + 1368 /* &.codes */) + uintptr((int64(((*Inflate_state)(unsafe.Pointer(state)).Fdistcode-(state+1368 /* &.codes */))/4)))*4)
 14109  	}
 14110  	(*Inflate_state)(unsafe.Pointer(copy)).Fnext = ((copy + 1368 /* &.codes */) + uintptr((int64(((*Inflate_state)(unsafe.Pointer(state)).Fnext-(state+1368 /* &.codes */))/4)))*4)
 14111  	if window != uintptr(Z_NULL) {
 14112  		wsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits)
 14113  		libc.Xmemcpy(tls, window, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, uint64(wsize))
 14114  	}
 14115  	(*Inflate_state)(unsafe.Pointer(copy)).Fwindow = window
 14116  	(*Z_stream)(unsafe.Pointer(dest)).Fstate = copy
 14117  	return Z_OK
 14118  }
 14119  
 14120  func XinflateUndermine(tls *libc.TLS, strm Z_streamp, subvert int32) int32 { /* inflate.c:1508:13: */
 14121  	var state uintptr
 14122  
 14123  	if inflateStateCheck(tls, strm) != 0 {
 14124  		return -2
 14125  	}
 14126  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 14127  	_ = subvert
 14128  	(*Inflate_state)(unsafe.Pointer(state)).Fsane = 1
 14129  	return -3
 14130  }
 14131  
 14132  func XinflateValidate(tls *libc.TLS, strm Z_streamp, check int32) int32 { /* inflate.c:1526:13: */
 14133  	var state uintptr
 14134  
 14135  	if inflateStateCheck(tls, strm) != 0 {
 14136  		return -2
 14137  	}
 14138  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 14139  	if check != 0 {
 14140  		*(*int32)(unsafe.Pointer(state + 16 /* &.wrap */)) |= (4)
 14141  	} else {
 14142  		*(*int32)(unsafe.Pointer(state + 16 /* &.wrap */)) &= (libc.CplInt32(4))
 14143  	}
 14144  	return Z_OK
 14145  }
 14146  
 14147  func XinflateMark(tls *libc.TLS, strm Z_streamp) int64 { /* inflate.c:1541:14: */
 14148  	var state uintptr
 14149  
 14150  	if inflateStateCheck(tls, strm) != 0 {
 14151  		return -(int64(1) << 16)
 14152  	}
 14153  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 14154  	return ((int64((uint64(int64((*Inflate_state)(unsafe.Pointer(state)).Fback))) << 16)) + (func() int64 {
 14155  		if (*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY {
 14156  			return int64((*Inflate_state)(unsafe.Pointer(state)).Flength)
 14157  		}
 14158  		return func() int64 {
 14159  			if (*Inflate_state)(unsafe.Pointer(state)).Fmode == MATCH {
 14160  				return (int64((*Inflate_state)(unsafe.Pointer(state)).Fwas - (*Inflate_state)(unsafe.Pointer(state)).Flength))
 14161  			}
 14162  			return int64(0)
 14163  		}()
 14164  	}()))
 14165  }
 14166  
 14167  func XinflateCodesUsed(tls *libc.TLS, strm Z_streamp) uint64 { /* inflate.c:1554:23: */
 14168  	var state uintptr
 14169  	if inflateStateCheck(tls, strm) != 0 {
 14170  		return libc.Uint64(libc.Uint64FromInt32(-1))
 14171  	}
 14172  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 14173  	return (uint64(int64(((*Inflate_state)(unsafe.Pointer(state)).Fnext - (state + 1368 /* &.codes */)) / 4)))
 14174  }
 14175  
 14176  var Xinflate_copyright = *(*[48]int8)(unsafe.Pointer(ts + 828 /* " inflate 1.2.11 ..." */)) /* inftrees.c:11:12 */
 14177  
 14178  //
 14179  //   If you use the zlib library in a product, an acknowledgment is welcome
 14180  //   in the documentation of your product. If for some reason you cannot
 14181  //   include such an acknowledgment, I would appreciate that you keep this
 14182  //   copyright string in the executable of your product.
 14183  //
 14184  
 14185  //
 14186  //    Build a set of tables to decode the provided canonical Huffman code.
 14187  //    The code lengths are lens[0..codes-1].  The result starts at *table,
 14188  //    whose indices are 0..2^bits-1.  work is a writable array of at least
 14189  //    lens shorts, which is used as a work area.  type is the type of code
 14190  //    to be generated, CODES, LENS, or DISTS.  On return, zero is success,
 14191  //    -1 is an invalid code, and +1 means that ENOUGH isn't enough.  table
 14192  //    on return points to the next available entry's address.  bits is the
 14193  //    requested root table index bits, and on return it is the actual root
 14194  //    table index bits.  It will differ if the request is greater than the
 14195  //    longest code or if it is less than the shortest code.
 14196  //
 14197  func Xinflate_table(tls *libc.TLS, type1 Codetype, lens uintptr, codes uint32, table uintptr, bits uintptr, work uintptr) int32 { /* inftrees.c:32:19: */
 14198  	bp := tls.Alloc(64)
 14199  	defer tls.Free(64)
 14200  
 14201  	var len uint32 // a code's length in bits
 14202  	var sym uint32 // index of code symbols
 14203  	var min uint32
 14204  	var max uint32    // minimum and maximum code lengths
 14205  	var root uint32   // number of index bits for root table
 14206  	var curr uint32   // number of index bits for current table
 14207  	var drop uint32   // code bits to drop for sub-table
 14208  	var left int32    // number of prefix codes available
 14209  	var used uint32   // code entries in table used
 14210  	var huff uint32   // Huffman code
 14211  	var incr uint32   // for incrementing code, index
 14212  	var fill uint32   // index for replicating entries
 14213  	var low uint32    // low bits for current root entry
 14214  	var mask uint32   // mask for low root bits
 14215  	var here Code     // table entry for duplication
 14216  	var next uintptr  // next available space in table
 14217  	var base uintptr  // base value table to use
 14218  	var extra uintptr // extra bits table to use
 14219  	var match uint32  // use base and extra for symbol >= match
 14220  	// var count [16]uint16 at bp, 32
 14221  	// number of codes of each length
 14222  	// var offs [16]uint16 at bp+32, 32
 14223  
 14224  	//
 14225  	//        Process a set of code lengths to create a canonical Huffman code.  The
 14226  	//        code lengths are lens[0..codes-1].  Each length corresponds to the
 14227  	//        symbols 0..codes-1.  The Huffman code is generated by first sorting the
 14228  	//        symbols by length from short to long, and retaining the symbol order
 14229  	//        for codes with equal lengths.  Then the code starts with all zero bits
 14230  	//        for the first code of the shortest length, and the codes are integer
 14231  	//        increments for the same length, and zeros are appended as the length
 14232  	//        increases.  For the deflate format, these bits are stored backwards
 14233  	//        from their more natural integer increment ordering, and so when the
 14234  	//        decoding tables are built in the large loop below, the integer codes
 14235  	//        are incremented backwards.
 14236  	//
 14237  	//        This routine assumes, but does not check, that all of the entries in
 14238  	//        lens[] are in the range 0..MAXBITS.  The caller must assure this.
 14239  	//        1..MAXBITS is interpreted as that code length.  zero means that that
 14240  	//        symbol does not occur in this code.
 14241  	//
 14242  	//        The codes are sorted by computing a count of codes for each length,
 14243  	//        creating from that a table of starting indices for each length in the
 14244  	//        sorted table, and then entering the symbols in order in the sorted
 14245  	//        table.  The sorted table is work[], with that space being provided by
 14246  	//        the caller.
 14247  	//
 14248  	//        The length counts are used for other purposes as well, i.e. finding
 14249  	//        the minimum and maximum length codes, determining if there are any
 14250  	//        codes at all, checking for a valid set of lengths, and looking ahead
 14251  	//        at length counts to determine sub-table sizes when building the
 14252  	//        decoding tables.
 14253  	//
 14254  
 14255  	// accumulate lengths for codes (assumes lens[] all in 0..MAXBITS)
 14256  	for len = uint32(0); len <= uint32(MAXBITS); len++ {
 14257  		*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)) = uint16(0)
 14258  	}
 14259  	for sym = uint32(0); sym < codes; sym++ {
 14260  		*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2))++
 14261  	}
 14262  
 14263  	// bound code lengths, force root to be within code lengths
 14264  	root = *(*uint32)(unsafe.Pointer(bits))
 14265  	for max = uint32(MAXBITS); max >= uint32(1); max-- {
 14266  		if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(max)*2))) != 0 {
 14267  			break
 14268  		}
 14269  	}
 14270  	if root > max {
 14271  		root = max
 14272  	}
 14273  	if max == uint32(0) { // no symbols to code at all
 14274  		here.Fop = uint8(64) // invalid code marker
 14275  		here.Fbits = uint8(1)
 14276  		here.Fval = uint16(0)
 14277  		*(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here // make a table to force an error
 14278  		*(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here
 14279  		*(*uint32)(unsafe.Pointer(bits)) = uint32(1)
 14280  		return 0 // no symbols, but wait for decoding to report error
 14281  	}
 14282  	for min = uint32(1); min < max; min++ {
 14283  		if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(min)*2))) != 0 {
 14284  			break
 14285  		}
 14286  	}
 14287  	if root < min {
 14288  		root = min
 14289  	}
 14290  
 14291  	// check for an over-subscribed or incomplete set of lengths
 14292  	left = 1
 14293  	for len = uint32(1); len <= uint32(MAXBITS); len++ {
 14294  		left <<= 1
 14295  		left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2))))
 14296  		if left < 0 {
 14297  			return -1
 14298  		} // over-subscribed
 14299  	}
 14300  	if (left > 0) && ((type1 == CODES) || (max != uint32(1))) {
 14301  		return -1
 14302  	} // incomplete set
 14303  
 14304  	// generate offsets into symbol table for each length for sorting
 14305  	*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + 1*2)) = uint16(0)
 14306  	for len = uint32(1); len < uint32(MAXBITS); len++ {
 14307  		*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr((len+uint32(1)))*2)) = (uint16(int32(*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr(len)*2))) + int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)))))
 14308  	}
 14309  
 14310  	// sort symbols by length, by symbol order within each length
 14311  	for sym = uint32(0); sym < codes; sym++ {
 14312  		if int32(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2))) != 0 {
 14313  			*(*uint16)(unsafe.Pointer(work + uintptr(libc.PostIncUint16(&*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2)), 1))*2)) = uint16(sym)
 14314  		}
 14315  	}
 14316  
 14317  	//
 14318  	//        Create and fill in decoding tables.  In this loop, the table being
 14319  	//        filled is at next and has curr index bits.  The code being used is huff
 14320  	//        with length len.  That code is converted to an index by dropping drop
 14321  	//        bits off of the bottom.  For codes where len is less than drop + curr,
 14322  	//        those top drop + curr - len bits are incremented through all values to
 14323  	//        fill the table with replicated entries.
 14324  	//
 14325  	//        root is the number of index bits for the root table.  When len exceeds
 14326  	//        root, sub-tables are created pointed to by the root entry with an index
 14327  	//        of the low root bits of huff.  This is saved in low to check for when a
 14328  	//        new sub-table should be started.  drop is zero when the root table is
 14329  	//        being filled, and drop is root when sub-tables are being filled.
 14330  	//
 14331  	//        When a new sub-table is needed, it is necessary to look ahead in the
 14332  	//        code lengths to determine what size sub-table is needed.  The length
 14333  	//        counts are used for this, and so count[] is decremented as codes are
 14334  	//        entered in the tables.
 14335  	//
 14336  	//        used keeps track of how many table entries have been allocated from the
 14337  	//        provided *table space.  It is checked for LENS and DIST tables against
 14338  	//        the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
 14339  	//        the initial root table size constants.  See the comments in inftrees.h
 14340  	//        for more information.
 14341  	//
 14342  	//        sym increments through all symbols, and the loop terminates when
 14343  	//        all codes of length max, i.e. all codes, have been processed.  This
 14344  	//        routine permits incomplete codes, so another loop after this one fills
 14345  	//        in the rest of the decoding tables with invalid code markers.
 14346  	//
 14347  
 14348  	// set up for code type
 14349  	switch type1 {
 14350  	case CODES:
 14351  		base = libc.AssignUintptr(&extra, work) // dummy value--not used
 14352  		match = uint32(20)
 14353  		break
 14354  	case LENS:
 14355  		base = uintptr(unsafe.Pointer(&lbase))
 14356  		extra = uintptr(unsafe.Pointer(&lext))
 14357  		match = uint32(257)
 14358  		break
 14359  	default: // DISTS
 14360  		base = uintptr(unsafe.Pointer(&dbase))
 14361  		extra = uintptr(unsafe.Pointer(&dext))
 14362  		match = uint32(0)
 14363  	}
 14364  
 14365  	// initialize state for loop
 14366  	huff = uint32(0)                            // starting code
 14367  	sym = uint32(0)                             // starting code symbol
 14368  	len = min                                   // starting code length
 14369  	next = *(*uintptr)(unsafe.Pointer(table))   // current table to fill in
 14370  	curr = root                                 // current table index bits
 14371  	drop = uint32(0)                            // current bits to drop from code for index
 14372  	low = libc.Uint32(libc.Uint32FromInt32(-1)) // trigger new sub-table when len > root
 14373  	used = (uint32(1) << root)                  // use root table entries
 14374  	mask = (used - uint32(1))                   // mask for comparing low
 14375  
 14376  	// check available table space
 14377  	if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) {
 14378  		return 1
 14379  	}
 14380  
 14381  	// process all codes and make table entries
 14382  	for {
 14383  		// create table entry
 14384  		here.Fbits = (uint8(len - drop))
 14385  		if (uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) + 1) < match {
 14386  			here.Fop = uint8(0)
 14387  			here.Fval = *(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))
 14388  		} else if uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) >= match {
 14389  			here.Fop = uint8(*(*uint16)(unsafe.Pointer(extra + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2)))
 14390  			here.Fval = *(*uint16)(unsafe.Pointer(base + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2))
 14391  		} else {
 14392  			here.Fop = (uint8(32 + 64)) // end of block
 14393  			here.Fval = uint16(0)
 14394  		}
 14395  
 14396  		// replicate for those indices with low len bits equal to huff
 14397  		incr = (uint32(1) << (len - drop))
 14398  		fill = (uint32(1) << curr)
 14399  		min = fill // save offset to next table
 14400  		for ok := true; ok; ok = (fill != uint32(0)) {
 14401  			fill = fill - (incr)
 14402  			*(*Code)(unsafe.Pointer(next + uintptr(((huff>>drop)+fill))*4)) = here
 14403  		}
 14404  
 14405  		// backwards increment the len-bit code huff
 14406  		incr = (uint32(1) << (len - uint32(1)))
 14407  		for (huff & incr) != 0 {
 14408  			incr >>= 1
 14409  		}
 14410  		if incr != uint32(0) {
 14411  			huff = huff & (incr - uint32(1))
 14412  			huff = huff + (incr)
 14413  		} else {
 14414  			huff = uint32(0)
 14415  		}
 14416  
 14417  		// go to next symbol, update count, len
 14418  		sym++
 14419  		if int32(libc.PreDecUint16(&(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2))), 1)) == 0 {
 14420  			if len == max {
 14421  				break
 14422  			}
 14423  			len = uint32(*(*uint16)(unsafe.Pointer(lens + uintptr(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))*2)))
 14424  		}
 14425  
 14426  		// create new sub-table if needed
 14427  		if (len > root) && ((huff & mask) != low) {
 14428  			// if first time, transition to sub-tables
 14429  			if drop == uint32(0) {
 14430  				drop = root
 14431  			}
 14432  
 14433  			// increment past last table
 14434  			next += 4 * (uintptr(min)) // here min is 1 << curr
 14435  
 14436  			// determine length of next table
 14437  			curr = (len - drop)
 14438  			left = (int32(1) << curr)
 14439  			for (curr + drop) < max {
 14440  				left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr((curr+drop))*2))))
 14441  				if left <= 0 {
 14442  					break
 14443  				}
 14444  				curr++
 14445  				left <<= 1
 14446  			}
 14447  
 14448  			// check for enough space
 14449  			used = used + (uint32(1) << curr)
 14450  			if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) {
 14451  				return 1
 14452  			}
 14453  
 14454  			// point entry in root table to sub-table
 14455  			low = (huff & mask)
 14456  			(*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fop = uint8(curr)
 14457  			(*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fbits = uint8(root)
 14458  			(*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fval = (uint16((int64(next) - int64(*(*uintptr)(unsafe.Pointer(table)))) / 4))
 14459  		}
 14460  	}
 14461  
 14462  	// fill in remaining table entry if code is incomplete (guaranteed to have
 14463  	//        at most one remaining entry, since if the code is incomplete, the
 14464  	//        maximum code length that was allowed to get this far is one bit)
 14465  	if huff != uint32(0) {
 14466  		here.Fop = uint8(64) // invalid code marker
 14467  		here.Fbits = (uint8(len - drop))
 14468  		here.Fval = uint16(0)
 14469  		*(*Code)(unsafe.Pointer(next + uintptr(huff)*4)) = here
 14470  	}
 14471  
 14472  	// set return parameters
 14473  	*(*uintptr)(unsafe.Pointer(table)) += (uintptr(used)) * 4
 14474  	*(*uint32)(unsafe.Pointer(bits)) = root
 14475  	return 0
 14476  }
 14477  
 14478  var lbase = [31]uint16{ // Length codes 257..285 base
 14479  	uint16(3), uint16(4), uint16(5), uint16(6), uint16(7), uint16(8), uint16(9), uint16(10), uint16(11), uint16(13), uint16(15), uint16(17), uint16(19), uint16(23), uint16(27), uint16(31),
 14480  			uint16(35), uint16(43), uint16(51), uint16(59), uint16(67), uint16(83), uint16(99), uint16(115), uint16(131), uint16(163), uint16(195), uint16(227), uint16(258), uint16(0), uint16(0)} /* inftrees.c:60:33 */
 14481  var lext = [31]uint16{ // Length codes 257..285 extra
 14482  	uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(17), uint16(17), uint16(17), uint16(17), uint16(18), uint16(18), uint16(18), uint16(18),
 14483  			uint16(19), uint16(19), uint16(19), uint16(19), uint16(20), uint16(20), uint16(20), uint16(20), uint16(21), uint16(21), uint16(21), uint16(21), uint16(16), uint16(77), uint16(202)} /* inftrees.c:63:33 */
 14484  var dbase = [32]uint16{ // Distance codes 0..29 base
 14485  	uint16(1), uint16(2), uint16(3), uint16(4), uint16(5), uint16(7), uint16(9), uint16(13), uint16(17), uint16(25), uint16(33), uint16(49), uint16(65), uint16(97), uint16(129), uint16(193),
 14486  	uint16(257), uint16(385), uint16(513), uint16(769), uint16(1025), uint16(1537), uint16(2049), uint16(3073), uint16(4097), uint16(6145),
 14487  			uint16(8193), uint16(12289), uint16(16385), uint16(24577), uint16(0), uint16(0)} /* inftrees.c:66:33 */
 14488  var dext = [32]uint16{ // Distance codes 0..29 extra
 14489  	uint16(16), uint16(16), uint16(16), uint16(16), uint16(17), uint16(17), uint16(18), uint16(18), uint16(19), uint16(19), uint16(20), uint16(20), uint16(21), uint16(21), uint16(22), uint16(22),
 14490  	uint16(23), uint16(23), uint16(24), uint16(24), uint16(25), uint16(25), uint16(26), uint16(26), uint16(27), uint16(27),
 14491  	uint16(28), uint16(28), uint16(29), uint16(29), uint16(64), uint16(64)} /* inftrees.c:70:33 */
 14492  
 14493  type Static_tree_desc = Static_tree_desc_s /* deflate.h:84:36 */
 14494  
 14495  // ===========================================================================
 14496  // Constants
 14497  
 14498  // Bit length codes must not exceed MAX_BL_BITS bits
 14499  
 14500  // end of block literal code
 14501  
 14502  // repeat previous bit length 3-6 times (2 bits of repeat count)
 14503  
 14504  // repeat a zero length 3-10 times  (3 bits of repeat count)
 14505  
 14506  // repeat a zero length 11-138 times  (7 bits of repeat count)
 14507  
 14508  var extra_lbits = [29]int32{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0} /* trees.c:62:17 */
 14509  
 14510  var extra_dbits = [30]int32{0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13} /* trees.c:65:17 */
 14511  
 14512  var extra_blbits = [19]int32{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7} /* trees.c:68:17 */
 14513  
 14514  var bl_order = [19]Uch{Uch(16), Uch(17), Uch(18), Uch(0), Uch(8), Uch(7), Uch(9), Uch(6), Uch(10), Uch(5), Uch(11), Uch(4), Uch(12), Uch(3), Uch(13), Uch(2), Uch(14), Uch(1), Uch(15)} /* trees.c:71:17 */
 14515  // The lengths of the bit length codes are sent in order of decreasing
 14516  // probability, to avoid transmitting the lengths for unused bit length codes.
 14517  
 14518  // ===========================================================================
 14519  // Local data. These are initialized only once.
 14520  
 14521  // header created automatically with -DGEN_TREES_H
 14522  
 14523  var static_ltree = [288]Ct_data{{Ffc: func() (r struct{ Ffreq Ush }) {
 14524  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12)
 14525  	return r
 14526  }(), Fdl: func() (r struct{ Fdad Ush }) {
 14527  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14528  	return r
 14529  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14530  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(140)
 14531  	return r
 14532  }(), Fdl: func() (r struct{ Fdad Ush }) {
 14533  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14534  	return r
 14535  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14536  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(76)
 14537  	return r
 14538  }(), Fdl: func() (r struct{ Fdad Ush }) {
 14539  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14540  	return r
 14541  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14542  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(204)
 14543  	return r
 14544  }(), Fdl: func() (r struct{ Fdad Ush }) {
 14545  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14546  	return r
 14547  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14548  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(44)
 14549  	return r
 14550  }(), Fdl: func() (r struct{ Fdad Ush }) {
 14551  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14552  	return r
 14553  }()},
 14554  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14555  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(172)
 14556  		return r
 14557  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14558  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14559  		return r
 14560  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14561  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(108)
 14562  		return r
 14563  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14564  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14565  		return r
 14566  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14567  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(236)
 14568  		return r
 14569  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14570  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14571  		return r
 14572  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14573  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28)
 14574  		return r
 14575  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14576  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14577  		return r
 14578  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14579  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(156)
 14580  		return r
 14581  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14582  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14583  		return r
 14584  	}()},
 14585  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14586  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(92)
 14587  		return r
 14588  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14589  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14590  		return r
 14591  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14592  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(220)
 14593  		return r
 14594  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14595  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14596  		return r
 14597  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14598  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(60)
 14599  		return r
 14600  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14601  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14602  		return r
 14603  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14604  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(188)
 14605  		return r
 14606  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14607  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14608  		return r
 14609  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14610  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(124)
 14611  		return r
 14612  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14613  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14614  		return r
 14615  	}()},
 14616  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14617  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(252)
 14618  		return r
 14619  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14620  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14621  		return r
 14622  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14623  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2)
 14624  		return r
 14625  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14626  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14627  		return r
 14628  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14629  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(130)
 14630  		return r
 14631  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14632  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14633  		return r
 14634  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14635  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(66)
 14636  		return r
 14637  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14638  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14639  		return r
 14640  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14641  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(194)
 14642  		return r
 14643  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14644  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14645  		return r
 14646  	}()},
 14647  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14648  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(34)
 14649  		return r
 14650  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14651  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14652  		return r
 14653  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14654  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(162)
 14655  		return r
 14656  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14657  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14658  		return r
 14659  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14660  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(98)
 14661  		return r
 14662  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14663  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14664  		return r
 14665  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14666  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(226)
 14667  		return r
 14668  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14669  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14670  		return r
 14671  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14672  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18)
 14673  		return r
 14674  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14675  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14676  		return r
 14677  	}()},
 14678  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14679  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(146)
 14680  		return r
 14681  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14682  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14683  		return r
 14684  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14685  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(82)
 14686  		return r
 14687  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14688  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14689  		return r
 14690  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14691  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(210)
 14692  		return r
 14693  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14694  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14695  		return r
 14696  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14697  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(50)
 14698  		return r
 14699  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14700  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14701  		return r
 14702  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14703  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(178)
 14704  		return r
 14705  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14706  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14707  		return r
 14708  	}()},
 14709  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14710  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(114)
 14711  		return r
 14712  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14713  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14714  		return r
 14715  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14716  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(242)
 14717  		return r
 14718  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14719  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14720  		return r
 14721  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14722  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10)
 14723  		return r
 14724  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14725  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14726  		return r
 14727  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14728  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(138)
 14729  		return r
 14730  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14731  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14732  		return r
 14733  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14734  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(74)
 14735  		return r
 14736  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14737  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14738  		return r
 14739  	}()},
 14740  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14741  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(202)
 14742  		return r
 14743  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14744  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14745  		return r
 14746  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14747  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(42)
 14748  		return r
 14749  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14750  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14751  		return r
 14752  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14753  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(170)
 14754  		return r
 14755  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14756  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14757  		return r
 14758  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14759  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(106)
 14760  		return r
 14761  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14762  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14763  		return r
 14764  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14765  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(234)
 14766  		return r
 14767  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14768  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14769  		return r
 14770  	}()},
 14771  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14772  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26)
 14773  		return r
 14774  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14775  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14776  		return r
 14777  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14778  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(154)
 14779  		return r
 14780  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14781  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14782  		return r
 14783  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14784  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(90)
 14785  		return r
 14786  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14787  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14788  		return r
 14789  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14790  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(218)
 14791  		return r
 14792  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14793  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14794  		return r
 14795  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14796  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(58)
 14797  		return r
 14798  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14799  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14800  		return r
 14801  	}()},
 14802  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14803  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(186)
 14804  		return r
 14805  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14806  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14807  		return r
 14808  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14809  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(122)
 14810  		return r
 14811  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14812  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14813  		return r
 14814  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14815  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(250)
 14816  		return r
 14817  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14818  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14819  		return r
 14820  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14821  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6)
 14822  		return r
 14823  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14824  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14825  		return r
 14826  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14827  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(134)
 14828  		return r
 14829  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14830  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14831  		return r
 14832  	}()},
 14833  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14834  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(70)
 14835  		return r
 14836  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14837  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14838  		return r
 14839  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14840  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(198)
 14841  		return r
 14842  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14843  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14844  		return r
 14845  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14846  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(38)
 14847  		return r
 14848  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14849  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14850  		return r
 14851  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14852  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(166)
 14853  		return r
 14854  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14855  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14856  		return r
 14857  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14858  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(102)
 14859  		return r
 14860  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14861  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14862  		return r
 14863  	}()},
 14864  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14865  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(230)
 14866  		return r
 14867  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14868  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14869  		return r
 14870  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14871  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22)
 14872  		return r
 14873  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14874  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14875  		return r
 14876  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14877  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(150)
 14878  		return r
 14879  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14880  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14881  		return r
 14882  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14883  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(86)
 14884  		return r
 14885  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14886  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14887  		return r
 14888  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14889  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(214)
 14890  		return r
 14891  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14892  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14893  		return r
 14894  	}()},
 14895  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14896  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(54)
 14897  		return r
 14898  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14899  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14900  		return r
 14901  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14902  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(182)
 14903  		return r
 14904  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14905  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14906  		return r
 14907  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14908  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(118)
 14909  		return r
 14910  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14911  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14912  		return r
 14913  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14914  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(246)
 14915  		return r
 14916  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14917  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14918  		return r
 14919  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14920  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14)
 14921  		return r
 14922  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14923  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14924  		return r
 14925  	}()},
 14926  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14927  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(142)
 14928  		return r
 14929  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14930  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14931  		return r
 14932  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14933  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(78)
 14934  		return r
 14935  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14936  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14937  		return r
 14938  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14939  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(206)
 14940  		return r
 14941  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14942  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14943  		return r
 14944  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14945  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(46)
 14946  		return r
 14947  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14948  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14949  		return r
 14950  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14951  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(174)
 14952  		return r
 14953  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14954  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14955  		return r
 14956  	}()},
 14957  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14958  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(110)
 14959  		return r
 14960  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14961  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14962  		return r
 14963  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14964  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(238)
 14965  		return r
 14966  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14967  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14968  		return r
 14969  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14970  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30)
 14971  		return r
 14972  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14973  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14974  		return r
 14975  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14976  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(158)
 14977  		return r
 14978  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14979  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14980  		return r
 14981  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14982  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(94)
 14983  		return r
 14984  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14985  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14986  		return r
 14987  	}()},
 14988  	{Ffc: func() (r struct{ Ffreq Ush }) {
 14989  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(222)
 14990  		return r
 14991  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14992  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14993  		return r
 14994  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 14995  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(62)
 14996  		return r
 14997  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 14998  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 14999  		return r
 15000  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15001  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(190)
 15002  		return r
 15003  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15004  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15005  		return r
 15006  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15007  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(126)
 15008  		return r
 15009  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15010  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15011  		return r
 15012  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15013  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(254)
 15014  		return r
 15015  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15016  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15017  		return r
 15018  	}()},
 15019  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15020  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1)
 15021  		return r
 15022  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15023  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15024  		return r
 15025  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15026  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(129)
 15027  		return r
 15028  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15029  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15030  		return r
 15031  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15032  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(65)
 15033  		return r
 15034  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15035  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15036  		return r
 15037  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15038  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(193)
 15039  		return r
 15040  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15041  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15042  		return r
 15043  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15044  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(33)
 15045  		return r
 15046  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15047  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15048  		return r
 15049  	}()},
 15050  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15051  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(161)
 15052  		return r
 15053  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15054  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15055  		return r
 15056  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15057  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(97)
 15058  		return r
 15059  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15060  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15061  		return r
 15062  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15063  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(225)
 15064  		return r
 15065  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15066  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15067  		return r
 15068  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15069  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17)
 15070  		return r
 15071  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15072  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15073  		return r
 15074  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15075  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(145)
 15076  		return r
 15077  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15078  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15079  		return r
 15080  	}()},
 15081  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15082  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(81)
 15083  		return r
 15084  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15085  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15086  		return r
 15087  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15088  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(209)
 15089  		return r
 15090  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15091  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15092  		return r
 15093  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15094  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(49)
 15095  		return r
 15096  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15097  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15098  		return r
 15099  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15100  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(177)
 15101  		return r
 15102  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15103  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15104  		return r
 15105  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15106  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(113)
 15107  		return r
 15108  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15109  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15110  		return r
 15111  	}()},
 15112  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15113  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(241)
 15114  		return r
 15115  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15116  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15117  		return r
 15118  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15119  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15120  		return r
 15121  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15122  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15123  		return r
 15124  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15125  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(137)
 15126  		return r
 15127  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15128  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15129  		return r
 15130  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15131  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(73)
 15132  		return r
 15133  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15134  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15135  		return r
 15136  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15137  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(201)
 15138  		return r
 15139  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15140  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15141  		return r
 15142  	}()},
 15143  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15144  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(41)
 15145  		return r
 15146  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15147  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15148  		return r
 15149  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15150  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(169)
 15151  		return r
 15152  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15153  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15154  		return r
 15155  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15156  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(105)
 15157  		return r
 15158  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15159  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15160  		return r
 15161  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15162  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(233)
 15163  		return r
 15164  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15165  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15166  		return r
 15167  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15168  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25)
 15169  		return r
 15170  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15171  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15172  		return r
 15173  	}()},
 15174  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15175  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(153)
 15176  		return r
 15177  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15178  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15179  		return r
 15180  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15181  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(89)
 15182  		return r
 15183  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15184  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15185  		return r
 15186  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15187  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(217)
 15188  		return r
 15189  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15190  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15191  		return r
 15192  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15193  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(57)
 15194  		return r
 15195  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15196  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15197  		return r
 15198  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15199  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(185)
 15200  		return r
 15201  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15202  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15203  		return r
 15204  	}()},
 15205  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15206  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(121)
 15207  		return r
 15208  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15209  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15210  		return r
 15211  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15212  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(249)
 15213  		return r
 15214  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15215  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15216  		return r
 15217  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15218  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 15219  		return r
 15220  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15221  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15222  		return r
 15223  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15224  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(133)
 15225  		return r
 15226  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15227  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15228  		return r
 15229  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15230  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(69)
 15231  		return r
 15232  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15233  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15234  		return r
 15235  	}()},
 15236  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15237  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(197)
 15238  		return r
 15239  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15240  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15241  		return r
 15242  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15243  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(37)
 15244  		return r
 15245  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15246  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15247  		return r
 15248  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15249  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(165)
 15250  		return r
 15251  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15252  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15253  		return r
 15254  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15255  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(101)
 15256  		return r
 15257  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15258  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15259  		return r
 15260  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15261  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(229)
 15262  		return r
 15263  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15264  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15265  		return r
 15266  	}()},
 15267  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15268  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21)
 15269  		return r
 15270  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15271  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15272  		return r
 15273  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15274  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(149)
 15275  		return r
 15276  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15277  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15278  		return r
 15279  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15280  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(85)
 15281  		return r
 15282  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15283  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15284  		return r
 15285  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15286  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(213)
 15287  		return r
 15288  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15289  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15290  		return r
 15291  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15292  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(53)
 15293  		return r
 15294  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15295  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15296  		return r
 15297  	}()},
 15298  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15299  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(181)
 15300  		return r
 15301  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15302  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15303  		return r
 15304  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15305  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(117)
 15306  		return r
 15307  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15308  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15309  		return r
 15310  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15311  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(245)
 15312  		return r
 15313  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15314  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15315  		return r
 15316  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15317  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13)
 15318  		return r
 15319  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15320  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15321  		return r
 15322  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15323  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(141)
 15324  		return r
 15325  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15326  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15327  		return r
 15328  	}()},
 15329  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15330  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(77)
 15331  		return r
 15332  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15333  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15334  		return r
 15335  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15336  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(205)
 15337  		return r
 15338  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15339  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15340  		return r
 15341  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15342  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(45)
 15343  		return r
 15344  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15345  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15346  		return r
 15347  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15348  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(173)
 15349  		return r
 15350  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15351  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15352  		return r
 15353  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15354  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(109)
 15355  		return r
 15356  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15357  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15358  		return r
 15359  	}()},
 15360  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15361  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(237)
 15362  		return r
 15363  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15364  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15365  		return r
 15366  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15367  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29)
 15368  		return r
 15369  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15370  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15371  		return r
 15372  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15373  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(157)
 15374  		return r
 15375  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15376  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15377  		return r
 15378  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15379  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(93)
 15380  		return r
 15381  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15382  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15383  		return r
 15384  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15385  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(221)
 15386  		return r
 15387  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15388  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15389  		return r
 15390  	}()},
 15391  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15392  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(61)
 15393  		return r
 15394  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15395  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15396  		return r
 15397  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15398  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(189)
 15399  		return r
 15400  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15401  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15402  		return r
 15403  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15404  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(125)
 15405  		return r
 15406  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15407  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15408  		return r
 15409  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15410  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(253)
 15411  		return r
 15412  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15413  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15414  		return r
 15415  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15416  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19)
 15417  		return r
 15418  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15419  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15420  		return r
 15421  	}()},
 15422  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15423  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(275)
 15424  		return r
 15425  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15426  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15427  		return r
 15428  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15429  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(147)
 15430  		return r
 15431  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15432  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15433  		return r
 15434  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15435  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(403)
 15436  		return r
 15437  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15438  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15439  		return r
 15440  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15441  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(83)
 15442  		return r
 15443  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15444  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15445  		return r
 15446  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15447  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(339)
 15448  		return r
 15449  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15450  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15451  		return r
 15452  	}()},
 15453  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15454  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(211)
 15455  		return r
 15456  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15457  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15458  		return r
 15459  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15460  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(467)
 15461  		return r
 15462  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15463  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15464  		return r
 15465  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15466  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(51)
 15467  		return r
 15468  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15469  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15470  		return r
 15471  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15472  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(307)
 15473  		return r
 15474  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15475  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15476  		return r
 15477  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15478  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(179)
 15479  		return r
 15480  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15481  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15482  		return r
 15483  	}()},
 15484  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15485  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(435)
 15486  		return r
 15487  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15488  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15489  		return r
 15490  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15491  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(115)
 15492  		return r
 15493  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15494  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15495  		return r
 15496  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15497  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(371)
 15498  		return r
 15499  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15500  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15501  		return r
 15502  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15503  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(243)
 15504  		return r
 15505  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15506  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15507  		return r
 15508  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15509  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(499)
 15510  		return r
 15511  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15512  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15513  		return r
 15514  	}()},
 15515  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15516  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11)
 15517  		return r
 15518  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15519  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15520  		return r
 15521  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15522  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(267)
 15523  		return r
 15524  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15525  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15526  		return r
 15527  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15528  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(139)
 15529  		return r
 15530  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15531  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15532  		return r
 15533  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15534  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(395)
 15535  		return r
 15536  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15537  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15538  		return r
 15539  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15540  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(75)
 15541  		return r
 15542  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15543  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15544  		return r
 15545  	}()},
 15546  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15547  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(331)
 15548  		return r
 15549  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15550  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15551  		return r
 15552  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15553  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(203)
 15554  		return r
 15555  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15556  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15557  		return r
 15558  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15559  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(459)
 15560  		return r
 15561  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15562  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15563  		return r
 15564  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15565  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(43)
 15566  		return r
 15567  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15568  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15569  		return r
 15570  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15571  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(299)
 15572  		return r
 15573  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15574  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15575  		return r
 15576  	}()},
 15577  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15578  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(171)
 15579  		return r
 15580  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15581  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15582  		return r
 15583  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15584  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(427)
 15585  		return r
 15586  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15587  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15588  		return r
 15589  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15590  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(107)
 15591  		return r
 15592  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15593  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15594  		return r
 15595  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15596  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(363)
 15597  		return r
 15598  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15599  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15600  		return r
 15601  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15602  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(235)
 15603  		return r
 15604  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15605  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15606  		return r
 15607  	}()},
 15608  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15609  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(491)
 15610  		return r
 15611  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15612  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15613  		return r
 15614  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15615  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27)
 15616  		return r
 15617  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15618  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15619  		return r
 15620  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15621  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(283)
 15622  		return r
 15623  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15624  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15625  		return r
 15626  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15627  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(155)
 15628  		return r
 15629  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15630  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15631  		return r
 15632  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15633  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(411)
 15634  		return r
 15635  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15636  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15637  		return r
 15638  	}()},
 15639  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15640  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(91)
 15641  		return r
 15642  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15643  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15644  		return r
 15645  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15646  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(347)
 15647  		return r
 15648  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15649  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15650  		return r
 15651  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15652  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(219)
 15653  		return r
 15654  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15655  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15656  		return r
 15657  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15658  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(475)
 15659  		return r
 15660  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15661  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15662  		return r
 15663  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15664  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(59)
 15665  		return r
 15666  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15667  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15668  		return r
 15669  	}()},
 15670  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15671  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(315)
 15672  		return r
 15673  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15674  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15675  		return r
 15676  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15677  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(187)
 15678  		return r
 15679  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15680  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15681  		return r
 15682  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15683  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(443)
 15684  		return r
 15685  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15686  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15687  		return r
 15688  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15689  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(123)
 15690  		return r
 15691  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15692  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15693  		return r
 15694  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15695  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(379)
 15696  		return r
 15697  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15698  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15699  		return r
 15700  	}()},
 15701  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15702  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(251)
 15703  		return r
 15704  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15705  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15706  		return r
 15707  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15708  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(507)
 15709  		return r
 15710  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15711  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15712  		return r
 15713  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15714  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 15715  		return r
 15716  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15717  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15718  		return r
 15719  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15720  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(263)
 15721  		return r
 15722  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15723  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15724  		return r
 15725  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15726  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(135)
 15727  		return r
 15728  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15729  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15730  		return r
 15731  	}()},
 15732  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15733  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(391)
 15734  		return r
 15735  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15736  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15737  		return r
 15738  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15739  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(71)
 15740  		return r
 15741  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15742  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15743  		return r
 15744  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15745  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(327)
 15746  		return r
 15747  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15748  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15749  		return r
 15750  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15751  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(199)
 15752  		return r
 15753  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15754  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15755  		return r
 15756  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15757  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(455)
 15758  		return r
 15759  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15760  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15761  		return r
 15762  	}()},
 15763  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15764  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(39)
 15765  		return r
 15766  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15767  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15768  		return r
 15769  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15770  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(295)
 15771  		return r
 15772  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15773  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15774  		return r
 15775  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15776  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(167)
 15777  		return r
 15778  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15779  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15780  		return r
 15781  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15782  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(423)
 15783  		return r
 15784  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15785  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15786  		return r
 15787  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15788  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(103)
 15789  		return r
 15790  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15791  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15792  		return r
 15793  	}()},
 15794  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15795  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(359)
 15796  		return r
 15797  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15798  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15799  		return r
 15800  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15801  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(231)
 15802  		return r
 15803  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15804  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15805  		return r
 15806  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15807  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(487)
 15808  		return r
 15809  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15810  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15811  		return r
 15812  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15813  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23)
 15814  		return r
 15815  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15816  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15817  		return r
 15818  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15819  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(279)
 15820  		return r
 15821  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15822  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15823  		return r
 15824  	}()},
 15825  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15826  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(151)
 15827  		return r
 15828  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15829  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15830  		return r
 15831  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15832  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(407)
 15833  		return r
 15834  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15835  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15836  		return r
 15837  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15838  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(87)
 15839  		return r
 15840  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15841  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15842  		return r
 15843  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15844  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(343)
 15845  		return r
 15846  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15847  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15848  		return r
 15849  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15850  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(215)
 15851  		return r
 15852  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15853  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15854  		return r
 15855  	}()},
 15856  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15857  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(471)
 15858  		return r
 15859  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15860  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15861  		return r
 15862  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15863  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(55)
 15864  		return r
 15865  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15866  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15867  		return r
 15868  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15869  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(311)
 15870  		return r
 15871  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15872  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15873  		return r
 15874  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15875  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(183)
 15876  		return r
 15877  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15878  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15879  		return r
 15880  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15881  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(439)
 15882  		return r
 15883  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15884  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15885  		return r
 15886  	}()},
 15887  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15888  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(119)
 15889  		return r
 15890  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15891  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15892  		return r
 15893  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15894  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(375)
 15895  		return r
 15896  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15897  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15898  		return r
 15899  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15900  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(247)
 15901  		return r
 15902  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15903  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15904  		return r
 15905  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15906  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(503)
 15907  		return r
 15908  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15909  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15910  		return r
 15911  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15912  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(15)
 15913  		return r
 15914  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15915  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15916  		return r
 15917  	}()},
 15918  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15919  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(271)
 15920  		return r
 15921  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15922  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15923  		return r
 15924  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15925  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(143)
 15926  		return r
 15927  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15928  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15929  		return r
 15930  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15931  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(399)
 15932  		return r
 15933  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15934  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15935  		return r
 15936  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15937  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(79)
 15938  		return r
 15939  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15940  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15941  		return r
 15942  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15943  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(335)
 15944  		return r
 15945  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15946  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15947  		return r
 15948  	}()},
 15949  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15950  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(207)
 15951  		return r
 15952  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15953  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15954  		return r
 15955  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15956  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(463)
 15957  		return r
 15958  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15959  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15960  		return r
 15961  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15962  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(47)
 15963  		return r
 15964  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15965  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15966  		return r
 15967  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15968  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(303)
 15969  		return r
 15970  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15971  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15972  		return r
 15973  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15974  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(175)
 15975  		return r
 15976  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15977  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15978  		return r
 15979  	}()},
 15980  	{Ffc: func() (r struct{ Ffreq Ush }) {
 15981  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(431)
 15982  		return r
 15983  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15984  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15985  		return r
 15986  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15987  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(111)
 15988  		return r
 15989  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15990  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15991  		return r
 15992  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15993  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(367)
 15994  		return r
 15995  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 15996  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 15997  		return r
 15998  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15999  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(239)
 16000  		return r
 16001  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16002  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16003  		return r
 16004  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16005  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(495)
 16006  		return r
 16007  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16008  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16009  		return r
 16010  	}()},
 16011  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16012  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(31)
 16013  		return r
 16014  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16015  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16016  		return r
 16017  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16018  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(287)
 16019  		return r
 16020  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16021  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16022  		return r
 16023  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16024  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(159)
 16025  		return r
 16026  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16027  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16028  		return r
 16029  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16030  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(415)
 16031  		return r
 16032  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16033  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16034  		return r
 16035  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16036  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(95)
 16037  		return r
 16038  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16039  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16040  		return r
 16041  	}()},
 16042  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16043  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(351)
 16044  		return r
 16045  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16046  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16047  		return r
 16048  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16049  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(223)
 16050  		return r
 16051  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16052  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16053  		return r
 16054  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16055  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(479)
 16056  		return r
 16057  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16058  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16059  		return r
 16060  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16061  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(63)
 16062  		return r
 16063  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16064  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16065  		return r
 16066  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16067  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(319)
 16068  		return r
 16069  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16070  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16071  		return r
 16072  	}()},
 16073  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16074  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(191)
 16075  		return r
 16076  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16077  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16078  		return r
 16079  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16080  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(447)
 16081  		return r
 16082  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16083  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16084  		return r
 16085  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16086  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(127)
 16087  		return r
 16088  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16089  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16090  		return r
 16091  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16092  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(383)
 16093  		return r
 16094  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16095  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16096  		return r
 16097  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16098  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(255)
 16099  		return r
 16100  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16101  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16102  		return r
 16103  	}()},
 16104  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16105  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(511)
 16106  		return r
 16107  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16108  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16109  		return r
 16110  	}()}, {Fdl: func() (r struct{ Fdad Ush }) {
 16111  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16112  		return r
 16113  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16114  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(64)
 16115  		return r
 16116  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16117  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16118  		return r
 16119  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16120  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(32)
 16121  		return r
 16122  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16123  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16124  		return r
 16125  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16126  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(96)
 16127  		return r
 16128  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16129  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16130  		return r
 16131  	}()},
 16132  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16133  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16)
 16134  		return r
 16135  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16136  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16137  		return r
 16138  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16139  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(80)
 16140  		return r
 16141  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16142  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16143  		return r
 16144  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16145  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(48)
 16146  		return r
 16147  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16148  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16149  		return r
 16150  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16151  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(112)
 16152  		return r
 16153  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16154  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16155  		return r
 16156  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16157  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16158  		return r
 16159  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16160  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16161  		return r
 16162  	}()},
 16163  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16164  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(72)
 16165  		return r
 16166  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16167  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16168  		return r
 16169  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16170  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(40)
 16171  		return r
 16172  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16173  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16174  		return r
 16175  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16176  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(104)
 16177  		return r
 16178  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16179  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16180  		return r
 16181  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16182  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24)
 16183  		return r
 16184  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16185  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16186  		return r
 16187  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16188  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(88)
 16189  		return r
 16190  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16191  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16192  		return r
 16193  	}()},
 16194  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16195  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(56)
 16196  		return r
 16197  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16198  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16199  		return r
 16200  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16201  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(120)
 16202  		return r
 16203  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16204  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16205  		return r
 16206  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16207  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4)
 16208  		return r
 16209  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16210  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16211  		return r
 16212  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16213  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(68)
 16214  		return r
 16215  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16216  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16217  		return r
 16218  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16219  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(36)
 16220  		return r
 16221  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16222  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16223  		return r
 16224  	}()},
 16225  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16226  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(100)
 16227  		return r
 16228  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16229  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16230  		return r
 16231  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16232  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20)
 16233  		return r
 16234  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16235  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16236  		return r
 16237  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16238  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(84)
 16239  		return r
 16240  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16241  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16242  		return r
 16243  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16244  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(52)
 16245  		return r
 16246  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16247  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16248  		return r
 16249  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16250  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(116)
 16251  		return r
 16252  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16253  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16254  		return r
 16255  	}()},
 16256  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16257  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3)
 16258  		return r
 16259  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16260  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16261  		return r
 16262  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16263  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(131)
 16264  		return r
 16265  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16266  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16267  		return r
 16268  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16269  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(67)
 16270  		return r
 16271  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16272  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16273  		return r
 16274  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16275  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(195)
 16276  		return r
 16277  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16278  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16279  		return r
 16280  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16281  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(35)
 16282  		return r
 16283  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16284  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16285  		return r
 16286  	}()},
 16287  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16288  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(163)
 16289  		return r
 16290  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16291  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16292  		return r
 16293  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16294  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(99)
 16295  		return r
 16296  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16297  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16298  		return r
 16299  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16300  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(227)
 16301  		return r
 16302  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16303  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16304  		return r
 16305  	}()}} /* trees.h:3:21 */
 16306  
 16307  var static_dtree = [30]Ct_data{{Fdl: func() (r struct{ Fdad Ush }) {
 16308  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16309  	return r
 16310  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16311  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16)
 16312  	return r
 16313  }(), Fdl: func() (r struct{ Fdad Ush }) {
 16314  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16315  	return r
 16316  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16317  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16318  	return r
 16319  }(), Fdl: func() (r struct{ Fdad Ush }) {
 16320  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16321  	return r
 16322  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16323  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24)
 16324  	return r
 16325  }(), Fdl: func() (r struct{ Fdad Ush }) {
 16326  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16327  	return r
 16328  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16329  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4)
 16330  	return r
 16331  }(), Fdl: func() (r struct{ Fdad Ush }) {
 16332  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16333  	return r
 16334  }()},
 16335  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16336  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20)
 16337  		return r
 16338  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16339  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16340  		return r
 16341  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16342  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12)
 16343  		return r
 16344  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16345  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16346  		return r
 16347  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16348  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28)
 16349  		return r
 16350  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16351  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16352  		return r
 16353  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16354  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2)
 16355  		return r
 16356  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16357  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16358  		return r
 16359  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16360  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18)
 16361  		return r
 16362  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16363  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16364  		return r
 16365  	}()},
 16366  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16367  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10)
 16368  		return r
 16369  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16370  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16371  		return r
 16372  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16373  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26)
 16374  		return r
 16375  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16376  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16377  		return r
 16378  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16379  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6)
 16380  		return r
 16381  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16382  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16383  		return r
 16384  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16385  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22)
 16386  		return r
 16387  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16388  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16389  		return r
 16390  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16391  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14)
 16392  		return r
 16393  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16394  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16395  		return r
 16396  	}()},
 16397  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16398  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30)
 16399  		return r
 16400  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16401  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16402  		return r
 16403  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16404  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1)
 16405  		return r
 16406  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16407  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16408  		return r
 16409  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16410  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17)
 16411  		return r
 16412  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16413  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16414  		return r
 16415  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16416  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16417  		return r
 16418  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16419  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16420  		return r
 16421  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16422  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25)
 16423  		return r
 16424  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16425  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16426  		return r
 16427  	}()},
 16428  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16429  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16430  		return r
 16431  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16432  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16433  		return r
 16434  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16435  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21)
 16436  		return r
 16437  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16438  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16439  		return r
 16440  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16441  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13)
 16442  		return r
 16443  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16444  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16445  		return r
 16446  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16447  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29)
 16448  		return r
 16449  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16450  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16451  		return r
 16452  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16453  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3)
 16454  		return r
 16455  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16456  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16457  		return r
 16458  	}()},
 16459  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16460  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19)
 16461  		return r
 16462  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16463  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16464  		return r
 16465  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16466  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11)
 16467  		return r
 16468  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16469  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16470  		return r
 16471  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16472  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27)
 16473  		return r
 16474  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16475  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16476  		return r
 16477  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16478  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 16479  		return r
 16480  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16481  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16482  		return r
 16483  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16484  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23)
 16485  		return r
 16486  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16487  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16488  		return r
 16489  	}()}} /* trees.h:64:21 */
 16490  
 16491  var X_dist_code = [512]Uch{
 16492  	Uch(0), Uch(1), Uch(2), Uch(3), Uch(4), Uch(4), Uch(5), Uch(5), Uch(6), Uch(6), Uch(6), Uch(6), Uch(7), Uch(7), Uch(7), Uch(7), Uch(8), Uch(8), Uch(8), Uch(8),
 16493  	Uch(8), Uch(8), Uch(8), Uch(8), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10),
 16494  	Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11),
 16495  	Uch(11), Uch(11), Uch(11), Uch(11), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12),
 16496  	Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(13), Uch(13), Uch(13), Uch(13),
 16497  	Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13),
 16498  	Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14),
 16499  	Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14),
 16500  	Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14),
 16501  	Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15),
 16502  	Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15),
 16503  	Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15),
 16504  	Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(0), Uch(0), Uch(16), Uch(17),
 16505  	Uch(18), Uch(18), Uch(19), Uch(19), Uch(20), Uch(20), Uch(20), Uch(20), Uch(21), Uch(21), Uch(21), Uch(21), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22),
 16506  	Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24),
 16507  	Uch(24), Uch(24), Uch(24), Uch(24), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25),
 16508  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26),
 16509  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27),
 16510  	Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27),
 16511  	Uch(27), Uch(27), Uch(27), Uch(27), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28),
 16512  	Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28),
 16513  	Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28),
 16514  	Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 16515  	Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 16516  	Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 16517  	Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 16518  } /* trees.h:73:25 */
 16519  
 16520  var X_length_code = [256]Uch{
 16521  	Uch(0), Uch(1), Uch(2), Uch(3), Uch(4), Uch(5), Uch(6), Uch(7), Uch(8), Uch(8), Uch(9), Uch(9), Uch(10), Uch(10), Uch(11), Uch(11), Uch(12), Uch(12), Uch(12), Uch(12),
 16522  	Uch(13), Uch(13), Uch(13), Uch(13), Uch(14), Uch(14), Uch(14), Uch(14), Uch(15), Uch(15), Uch(15), Uch(15), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16),
 16523  	Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(19), Uch(19), Uch(19), Uch(19),
 16524  	Uch(19), Uch(19), Uch(19), Uch(19), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20),
 16525  	Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(22), Uch(22), Uch(22), Uch(22),
 16526  	Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23),
 16527  	Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24),
 16528  	Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24),
 16529  	Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25),
 16530  	Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26),
 16531  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26),
 16532  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27),
 16533  	Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(28),
 16534  } /* trees.h:102:25 */
 16535  
 16536  var base_length = [29]int32{
 16537  	0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
 16538  	64, 80, 96, 112, 128, 160, 192, 224, 0,
 16539  } /* trees.h:118:17 */
 16540  
 16541  var base_dist = [30]int32{
 16542  	0, 1, 2, 3, 4, 6, 8, 12, 16, 24,
 16543  	32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
 16544  	1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576,
 16545  } /* trees.h:123:17 */
 16546  
 16547  var static_l_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Fextra_base: (LITERALS + 1), Felems: ((LITERALS + 1) + LENGTH_CODES), Fmax_length: MAX_BITS} /* trees.c:125:31 */
 16548  
 16549  var static_d_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Felems: D_CODES, Fmax_length: MAX_BITS} /* trees.c:128:31 */
 16550  
 16551  var static_bl_desc = Static_tree_desc{Fextra_bits: 0, Felems: BL_CODES, Fmax_length: MAX_BL_BITS} /* trees.c:131:31 */
 16552  
 16553  // Send a code of the given tree. c and tree must not have side effects
 16554  
 16555  // ===========================================================================
 16556  // Output a short LSB first on the stream.
 16557  // IN assertion: there is enough room in pendingBuf.
 16558  
 16559  // ===========================================================================
 16560  // Send a value on a given number of bits.
 16561  // IN assertion: length <= 16 and value fits in length bits.
 16562  
 16563  // the arguments must not have side effects
 16564  
 16565  // ===========================================================================
 16566  // Initialize the various 'constant' tables.
 16567  func tr_static_init(tls *libc.TLS) { /* trees.c:232:12: */
 16568  }
 16569  
 16570  // ===========================================================================
 16571  // Genererate the file trees.h describing the static trees.
 16572  
 16573  // ===========================================================================
 16574  // Initialize the tree data structures for a new zlib stream.
 16575  func X_tr_init(tls *libc.TLS, s uintptr) { /* trees.c:379:20: */
 16576  	tr_static_init(tls)
 16577  
 16578  	(*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fdyn_tree = s + 212 /* &.dyn_ltree */
 16579  	(*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_l_desc))
 16580  
 16581  	(*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fdyn_tree = s + 2504 /* &.dyn_dtree */
 16582  	(*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_d_desc))
 16583  
 16584  	(*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fdyn_tree = s + 2748 /* &.bl_tree */
 16585  	(*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_bl_desc))
 16586  
 16587  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0)
 16588  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0
 16589  
 16590  	// Initialize the first block of the first file:
 16591  	init_block(tls, s)
 16592  }
 16593  
 16594  // ===========================================================================
 16595  // Initialize a new block.
 16596  func init_block(tls *libc.TLS, s uintptr) { /* trees.c:407:12: */
 16597  	var n int32 // iterates over tree elements
 16598  
 16599  	// Initialize the trees.
 16600  	for n = 0; n < ((LITERALS + 1) + LENGTH_CODES); n++ {
 16601  		*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */)) = Ush(0)
 16602  	}
 16603  	for n = 0; n < D_CODES; n++ {
 16604  		*(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr(n)*4 /* &.fc */)) = Ush(0)
 16605  	}
 16606  	for n = 0; n < BL_CODES; n++ {
 16607  		*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(n)*4 /* &.fc */)) = Ush(0)
 16608  	}
 16609  
 16610  	*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 256*4 /* &.fc */)) = Ush(1)
 16611  	(*Deflate_state)(unsafe.Pointer(s)).Fopt_len = libc.AssignPtrUint64(s+5920 /* &.static_len */, uint64(0))
 16612  	(*Deflate_state)(unsafe.Pointer(s)).Flast_lit = libc.AssignPtrUint32(s+5928 /* &.matches */, UInt(0))
 16613  }
 16614  
 16615  // Index within the heap array of least frequent node in the Huffman tree
 16616  
 16617  // ===========================================================================
 16618  // Remove the smallest element from the heap and recreate the heap with
 16619  // one less element. Updates heap and heap_len.
 16620  
 16621  // ===========================================================================
 16622  // Compares to subtrees, using the tree depth as tie breaker when
 16623  // the subtrees have equal frequency. This minimizes the worst case length.
 16624  
 16625  // ===========================================================================
 16626  // Restore the heap property by moving down the tree starting at node k,
 16627  // exchanging a node with the smallest of its two sons if necessary, stopping
 16628  // when the heap property is re-established (each father smaller than its
 16629  // two sons).
 16630  func pqdownheap(tls *libc.TLS, s uintptr, tree uintptr, k int32) { /* trees.c:451:12: */
 16631  	var v int32 = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(k)*4))
 16632  	var j int32 = (k << 1) // left son of k
 16633  	for j <= (*Deflate_state)(unsafe.Pointer(s)).Fheap_len {
 16634  		// Set j to the smallest of the two sons:
 16635  		if (j < (*Deflate_state)(unsafe.Pointer(s)).Fheap_len) && ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) || ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((j+1))*4)))))) <= int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4))))))))) {
 16636  			j++
 16637  		}
 16638  		// Exit if v is smaller than both sons
 16639  		if (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) || ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4 /* &.fc */))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(v)))) <= int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4)))))))) {
 16640  			break
 16641  		}
 16642  
 16643  		// Exchange v with the smallest son
 16644  		*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(k)*4)) = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(j)*4))
 16645  		k = j
 16646  
 16647  		// And continue down the tree, setting j to the left son of k
 16648  		j <<= 1
 16649  	}
 16650  	*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(k)*4)) = v
 16651  }
 16652  
 16653  // ===========================================================================
 16654  // Compute the optimal bit lengths for a tree and update the total bit length
 16655  // for the current block.
 16656  // IN assertion: the fields freq and dad are set, heap[heap_max] and
 16657  //    above are the tree nodes sorted by increasing frequency.
 16658  // OUT assertions: the field len is set to the optimal bit length, the
 16659  //     array bl_count contains the frequencies for each bit length.
 16660  //     The length opt_len is updated; static_len is also updated if stree is
 16661  //     not null.
 16662  func gen_bitlen(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:486:12: */
 16663  	var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree
 16664  	var max_code int32 = (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code
 16665  	var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree
 16666  	var extra uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_bits
 16667  	var base int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_base
 16668  	var max_length int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fmax_length
 16669  	var h int32 // heap index
 16670  	var n int32
 16671  	var m int32            // iterate over the tree elements
 16672  	var bits int32         // bit length
 16673  	var xbits int32        // extra bits
 16674  	var f Ush              // frequency
 16675  	var overflow int32 = 0 // number of elements with bit length too large
 16676  
 16677  	for bits = 0; bits <= MAX_BITS; bits++ {
 16678  		*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2)) = Ush(0)
 16679  	}
 16680  
 16681  	// In a first pass, compute the optimal bit lengths (which may
 16682  	// overflow in the case of the bit length tree).
 16683  	*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fheap_max)*4)))*4 + 2 /* &.dl */)) = Ush(0) // root of the heap
 16684  
 16685  	for h = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_max + 1); h < ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1); h++ {
 16686  		n = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(h)*4))
 16687  		bits = (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)))*4 + 2 /* &.dl */))) + 1)
 16688  		if bits > max_length {
 16689  			bits = max_length
 16690  			overflow++
 16691  		}
 16692  		*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(bits)
 16693  		// We overwrite tree[n].Dad which is no longer needed
 16694  
 16695  		if n > max_code {
 16696  			continue
 16697  		} // not a leaf node
 16698  
 16699  		*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2))++
 16700  		xbits = 0
 16701  		if n >= base {
 16702  			xbits = *(*Intf)(unsafe.Pointer(extra + uintptr((n-base))*4))
 16703  		}
 16704  		f = *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))
 16705  		*(*Ulg)(unsafe.Pointer(s + 5912 /* &.opt_len */)) += (Ulg(f) * Ulg((uint32(bits + xbits))))
 16706  		if stree != 0 {
 16707  			*(*Ulg)(unsafe.Pointer(s + 5920 /* &.static_len */)) += (Ulg(f) * Ulg((uint32(int32(*(*Ush)(unsafe.Pointer(stree + uintptr(n)*4 + 2 /* &.dl */))) + xbits))))
 16708  		}
 16709  	}
 16710  	if overflow == 0 {
 16711  		return
 16712  	}
 16713  
 16714  	// This happens for example on obj2 and pic of the Calgary corpus
 16715  
 16716  	// Find the first bit length which could increase:
 16717  	for ok := true; ok; ok = (overflow > 0) {
 16718  		bits = (max_length - 1)
 16719  		for int32(*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2))) == 0 {
 16720  			bits--
 16721  		}
 16722  		*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2))--               // move one leaf down the tree
 16723  		*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr((bits+1))*2)) += Ush((2)) // move one overflow item as its brother
 16724  		*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(max_length)*2))--
 16725  		// The brother of the overflow item also moves one step up,
 16726  		// but this does not affect bl_count[max_length]
 16727  		overflow = overflow - (2)
 16728  	}
 16729  
 16730  	// Now recompute all bit lengths, scanning in increasing frequency.
 16731  	// h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
 16732  	// lengths instead of fixing only the wrong ones. This idea is taken
 16733  	// from 'ar' written by Haruhiko Okumura.)
 16734  	for bits = max_length; bits != 0; bits-- {
 16735  		n = int32(*(*Ush)(unsafe.Pointer((s + 2976 /* &.bl_count */) + uintptr(bits)*2)))
 16736  		for n != 0 {
 16737  			m = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&h, 1))*4))
 16738  			if m > max_code {
 16739  				continue
 16740  			}
 16741  			if uint32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */))) != uint32(bits) {
 16742  
 16743  				*(*Ulg)(unsafe.Pointer(s + 5912 /* &.opt_len */)) += ((Ulg(bits) - Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)))) * Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 /* &.fc */))))
 16744  				*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)) = Ush(bits)
 16745  			}
 16746  			n--
 16747  		}
 16748  	}
 16749  }
 16750  
 16751  // ===========================================================================
 16752  // Generate the codes for a given tree and bit counts (which need not be
 16753  // optimal).
 16754  // IN assertion: the array bl_count contains the bit length statistics for
 16755  // the given tree and the field len is set for all tree elements.
 16756  // OUT assertion: the field code is set for all tree elements of non
 16757  //     zero code length.
 16758  func gen_codes(tls *libc.TLS, tree uintptr, max_code int32, bl_count uintptr) { /* trees.c:572:12: */
 16759  	bp := tls.Alloc(32)
 16760  	defer tls.Free(32)
 16761  
 16762  	// var next_code [16]Ush at bp, 32
 16763  	// next code value for each bit length
 16764  	var code uint32 = uint32(0) // running code value
 16765  	var bits int32              // bit index
 16766  	var n int32                 // code index
 16767  
 16768  	// The distribution counts are first used to generate the code values
 16769  	// without bit reversal.
 16770  	for bits = 1; bits <= MAX_BITS; bits++ {
 16771  		code = ((code + uint32(*(*Ushf)(unsafe.Pointer(bl_count + uintptr((bits-1))*2)))) << 1)
 16772  		*(*Ush)(unsafe.Pointer(bp /* &next_code[0] */ + uintptr(bits)*2)) = Ush(code)
 16773  	}
 16774  	// Check that the bit counts in bl_count are consistent. The last code
 16775  	// must be all ones.
 16776  
 16777  	for n = 0; n <= max_code; n++ {
 16778  		var len int32 = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)))
 16779  		if len == 0 {
 16780  			continue
 16781  		}
 16782  		// Now reverse the bits
 16783  		*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */)) = Ush(bi_reverse(tls, uint32(libc.PostIncUint16(&*(*Ush)(unsafe.Pointer(bp /* &next_code[0] */ + uintptr(len)*2)), 1)), len))
 16784  
 16785  	}
 16786  }
 16787  
 16788  // ===========================================================================
 16789  // Construct one Huffman tree and assigns the code bit strings and lengths.
 16790  // Update the total bit length for the current block.
 16791  // IN assertion: the field freq is set for all tree elements.
 16792  // OUT assertions: the fields len and code are set to the optimal bit length
 16793  //     and corresponding code. The length opt_len is updated; static_len is
 16794  //     also updated if stree is not null. The field max_code is set.
 16795  func build_tree(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:615:12: */
 16796  	var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree
 16797  	var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree
 16798  	var elems int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Felems
 16799  	var n int32
 16800  	var m int32             // iterate over heap elements
 16801  	var max_code int32 = -1 // largest code with non zero frequency
 16802  	var node int32          // new node being created
 16803  
 16804  	// Construct the initial heap, with least frequent element in
 16805  	// heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
 16806  	// heap[0] is not used.
 16807  	(*Deflate_state)(unsafe.Pointer(s)).Fheap_len = 0
 16808  	(*Deflate_state)(unsafe.Pointer(s)).Fheap_max = ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1)
 16809  
 16810  	for n = 0; n < elems; n++ {
 16811  		if int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))) != 0 {
 16812  			*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4)) = libc.AssignInt32(&max_code, n)
 16813  			*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(n))) = Uch(0)
 16814  		} else {
 16815  			*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(0)
 16816  		}
 16817  	}
 16818  
 16819  	// The pkzip format requires that at least one distance code exists,
 16820  	// and that at least one bit should be sent even if there is only one
 16821  	// possible code. So to avoid special checks later on we force at least
 16822  	// two codes of non zero frequency.
 16823  	for (*Deflate_state)(unsafe.Pointer(s)).Fheap_len < 2 {
 16824  		node = libc.AssignPtrInt32((s+3008 /* &.heap */)+uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4, func() int32 {
 16825  			if max_code < 2 {
 16826  				return libc.PreIncInt32(&max_code, 1)
 16827  			}
 16828  			return 0
 16829  		}())
 16830  		*(*Ush)(unsafe.Pointer(tree + uintptr(node)*4 /* &.fc */)) = Ush(1)
 16831  		*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(node))) = Uch(0)
 16832  		(*Deflate_state)(unsafe.Pointer(s)).Fopt_len--
 16833  		if stree != 0 {
 16834  			*(*Ulg)(unsafe.Pointer(s + 5920 /* &.static_len */)) -= (Ulg(*(*Ush)(unsafe.Pointer(stree + uintptr(node)*4 + 2 /* &.dl */))))
 16835  		}
 16836  		// node is 0 or 1 so it does not have extra bits
 16837  	}
 16838  	(*Tree_desc)(unsafe.Pointer(desc)).Fmax_code = max_code
 16839  
 16840  	// The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
 16841  	// establish sub-heaps of increasing lengths:
 16842  	for n = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len / 2); n >= 1; n-- {
 16843  		pqdownheap(tls, s, tree, n)
 16844  	}
 16845  
 16846  	// Construct the Huffman tree by repeatedly combining the least two
 16847  	// frequent nodes.
 16848  	node = elems // next internal node of the tree
 16849  	for ok := true; ok; ok = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len >= 2) {
 16850  		{
 16851  			n = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4))
 16852  			*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PostDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_len, 1))*4))
 16853  			pqdownheap(tls, s, tree, SMALLEST)
 16854  		}
 16855  		// n = node of least frequency
 16856  		m = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) // m = node of next least frequency
 16857  
 16858  		*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = n // keep the nodes sorted by frequency
 16859  		*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = m
 16860  
 16861  		// Create a new node father of n and m
 16862  		*(*Ush)(unsafe.Pointer(tree + uintptr(node)*4 /* &.fc */)) = (Ush(int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))) + int32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 /* &.fc */)))))
 16863  		*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(node))) = (Uch((func() int32 {
 16864  			if int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(n)))) >= int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(m)))) {
 16865  				return int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(n))))
 16866  			}
 16867  			return int32(*(*Uch)(unsafe.Pointer((s + 5308 /* &.depth */) + uintptr(m))))
 16868  		}()) + 1))
 16869  		*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = libc.AssignPtrUint16(tree+uintptr(m)*4+2 /* &.dl */ /* &.dad */, Ush(node))
 16870  		// and insert the new node in the heap
 16871  		*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4)) = libc.PostIncInt32(&node, 1)
 16872  		pqdownheap(tls, s, tree, SMALLEST)
 16873  
 16874  	}
 16875  
 16876  	*(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = *(*int32)(unsafe.Pointer((s + 3008 /* &.heap */) + 1*4))
 16877  
 16878  	// At this point, the fields freq and dad are set. We can now
 16879  	// generate the bit lengths.
 16880  	gen_bitlen(tls, s, desc)
 16881  
 16882  	// The field len is now set, we can generate the bit codes
 16883  	gen_codes(tls, tree, max_code, s+2976 /* &.bl_count */)
 16884  }
 16885  
 16886  // ===========================================================================
 16887  // Scan a literal or distance tree to determine the frequencies of the codes
 16888  // in the bit length tree.
 16889  func scan_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:703:12: */
 16890  	var n int32                                                             // iterates over all tree elements
 16891  	var prevlen int32 = -1                                                  // last emitted length
 16892  	var curlen int32                                                        // length of current code
 16893  	var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code
 16894  	var count int32 = 0                                                     // repeat count of the current code
 16895  	var max_count int32 = 7                                                 // max repeat count
 16896  	var min_count int32 = 4                                                 // min repeat count
 16897  
 16898  	if nextlen == 0 {
 16899  		max_count = 138
 16900  		min_count = 3
 16901  	}
 16902  	*(*Ush)(unsafe.Pointer(tree + uintptr((max_code+1))*4 + 2 /* &.dl */)) = Ush(0xffff) // guard
 16903  
 16904  	for n = 0; n <= max_code; n++ {
 16905  		curlen = nextlen
 16906  		nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */)))
 16907  		if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) {
 16908  			continue
 16909  		} else if count < min_count {
 16910  			*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */ /* &.freq */)) += Ush((count))
 16911  		} else if curlen != 0 {
 16912  			if curlen != prevlen {
 16913  				*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))++
 16914  			}
 16915  			*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 /* &.fc */))++
 16916  		} else if count <= 10 {
 16917  			*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 /* &.fc */))++
 16918  		} else {
 16919  			*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 /* &.fc */))++
 16920  		}
 16921  		count = 0
 16922  		prevlen = curlen
 16923  		if nextlen == 0 {
 16924  			max_count = 138
 16925  			min_count = 3
 16926  		} else if curlen == nextlen {
 16927  			max_count = 6
 16928  			min_count = 3
 16929  		} else {
 16930  			max_count = 7
 16931  			min_count = 4
 16932  		}
 16933  	}
 16934  }
 16935  
 16936  // ===========================================================================
 16937  // Send a literal or distance tree in compressed form, using the codes in
 16938  // bl_tree.
 16939  func send_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:748:12: */
 16940  	var n int32                                                             // iterates over all tree elements
 16941  	var prevlen int32 = -1                                                  // last emitted length
 16942  	var curlen int32                                                        // length of current code
 16943  	var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code
 16944  	var count int32 = 0                                                     // repeat count of the current code
 16945  	var max_count int32 = 7                                                 // max repeat count
 16946  	var min_count int32 = 4                                                 // min repeat count
 16947  
 16948  	/* tree[max_code+1].Len = -1; */ // guard already set
 16949  	if nextlen == 0 {
 16950  		max_count = 138
 16951  		min_count = 3
 16952  	}
 16953  
 16954  	for n = 0; n <= max_code; n++ {
 16955  		curlen = nextlen
 16956  		nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */)))
 16957  		if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) {
 16958  			continue
 16959  		} else if count < min_count {
 16960  			for ok := true; ok; ok = (libc.PreDecInt32(&count, 1) != 0) {
 16961  				{
 16962  					var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */)))
 16963  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 16964  						var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))
 16965  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 16966  						{
 16967  							{
 16968  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 16969  							}
 16970  							{
 16971  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 16972  							}
 16973  
 16974  						}
 16975  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 16976  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 16977  					} else {
 16978  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 16979  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 16980  					}
 16981  				}
 16982  			}
 16983  
 16984  		} else if curlen != 0 {
 16985  			if curlen != prevlen {
 16986  				{
 16987  					var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */)))
 16988  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 16989  						var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))
 16990  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 16991  						{
 16992  							{
 16993  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 16994  							}
 16995  							{
 16996  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 16997  							}
 16998  
 16999  						}
 17000  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17001  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17002  					} else {
 17003  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17004  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17005  					}
 17006  				}
 17007  				count--
 17008  			}
 17009  
 17010  			{
 17011  				var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 + 2 /* &.dl */)))
 17012  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17013  					var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 /* &.fc */)))
 17014  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17015  					{
 17016  						{
 17017  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17018  						}
 17019  						{
 17020  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17021  						}
 17022  
 17023  					}
 17024  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17025  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17026  				} else {
 17027  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 16*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17028  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17029  				}
 17030  			}
 17031  			{
 17032  				var len int32 = 2
 17033  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17034  					var val int32 = (count - 3)
 17035  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17036  					{
 17037  						{
 17038  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17039  						}
 17040  						{
 17041  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17042  						}
 17043  
 17044  					}
 17045  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17046  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17047  				} else {
 17048  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17049  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17050  				}
 17051  			}
 17052  
 17053  		} else if count <= 10 {
 17054  			{
 17055  				var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 + 2 /* &.dl */)))
 17056  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17057  					var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 /* &.fc */)))
 17058  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17059  					{
 17060  						{
 17061  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17062  						}
 17063  						{
 17064  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17065  						}
 17066  
 17067  					}
 17068  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17069  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17070  				} else {
 17071  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 17*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17072  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17073  				}
 17074  			}
 17075  			{
 17076  				var len int32 = 3
 17077  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17078  					var val int32 = (count - 3)
 17079  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17080  					{
 17081  						{
 17082  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17083  						}
 17084  						{
 17085  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17086  						}
 17087  
 17088  					}
 17089  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17090  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17091  				} else {
 17092  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17093  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17094  				}
 17095  			}
 17096  
 17097  		} else {
 17098  			{
 17099  				var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 + 2 /* &.dl */)))
 17100  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17101  					var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 /* &.fc */)))
 17102  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17103  					{
 17104  						{
 17105  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17106  						}
 17107  						{
 17108  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17109  						}
 17110  
 17111  					}
 17112  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17113  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17114  				} else {
 17115  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + 18*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17116  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17117  				}
 17118  			}
 17119  			{
 17120  				var len int32 = 7
 17121  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17122  					var val int32 = (count - 11)
 17123  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17124  					{
 17125  						{
 17126  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17127  						}
 17128  						{
 17129  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17130  						}
 17131  
 17132  					}
 17133  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17134  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17135  				} else {
 17136  					*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(count - 11))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17137  					*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17138  				}
 17139  			}
 17140  
 17141  		}
 17142  		count = 0
 17143  		prevlen = curlen
 17144  		if nextlen == 0 {
 17145  			max_count = 138
 17146  			min_count = 3
 17147  		} else if curlen == nextlen {
 17148  			max_count = 6
 17149  			min_count = 3
 17150  		} else {
 17151  			max_count = 7
 17152  			min_count = 4
 17153  		}
 17154  	}
 17155  }
 17156  
 17157  // ===========================================================================
 17158  // Construct the Huffman tree for the bit lengths and return the index in
 17159  // bl_order of the last bit length code to send.
 17160  func build_bl_tree(tls *libc.TLS, s uintptr) int32 { /* trees.c:799:11: */
 17161  	var max_blindex int32 // index of last bit length code of non zero freq
 17162  
 17163  	// Determine the bit length frequencies for literal and distance trees
 17164  	scan_tree(tls, s, s+212 /* &.dyn_ltree */, (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code)
 17165  	scan_tree(tls, s, s+2504 /* &.dyn_dtree */, (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code)
 17166  
 17167  	// Build the bit length tree:
 17168  	build_tree(tls, s, (s + 2952 /* &.bl_desc */))
 17169  	// opt_len now includes the length of the tree representations, except
 17170  	// the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
 17171  
 17172  	// Determine the number of bit length codes to send. The pkzip format
 17173  	// requires that at least 4 bit length codes be sent. (appnote.txt says
 17174  	// 3 but the actual value used is 4.)
 17175  	for max_blindex = (BL_CODES - 1); max_blindex >= 3; max_blindex-- {
 17176  		if int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(bl_order[max_blindex])*4 + 2 /* &.dl */))) != 0 {
 17177  			break
 17178  		}
 17179  	}
 17180  	// Update opt_len to include the bit length tree and counts
 17181  	*(*Ulg)(unsafe.Pointer(s + 5912 /* &.opt_len */)) += ((((uint64(3) * (Ulg(max_blindex) + uint64(1))) + uint64(5)) + uint64(5)) + uint64(4))
 17182  
 17183  	return max_blindex
 17184  }
 17185  
 17186  // ===========================================================================
 17187  // Send the header for a block using dynamic Huffman trees: the counts, the
 17188  // lengths of the bit length codes, the literal tree and the distance tree.
 17189  // IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
 17190  func send_all_trees(tls *libc.TLS, s uintptr, lcodes int32, dcodes int32, blcodes int32) { /* trees.c:834:12: */
 17191  	var rank int32 // index in bl_order
 17192  
 17193  	{
 17194  		var len int32 = 5
 17195  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17196  			var val int32 = (lcodes - 257)
 17197  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17198  			{
 17199  				{
 17200  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17201  				}
 17202  				{
 17203  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17204  				}
 17205  
 17206  			}
 17207  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17208  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17209  		} else {
 17210  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(lcodes - 257))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17211  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17212  		}
 17213  	}
 17214  	/* not +255 as stated in appnote.txt */
 17215  	{
 17216  		var len int32 = 5
 17217  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17218  			var val int32 = (dcodes - 1)
 17219  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17220  			{
 17221  				{
 17222  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17223  				}
 17224  				{
 17225  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17226  				}
 17227  
 17228  			}
 17229  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17230  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17231  		} else {
 17232  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(dcodes - 1))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17233  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17234  		}
 17235  	}
 17236  
 17237  	{
 17238  		var len int32 = 4
 17239  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17240  			var val int32 = (blcodes - 4)
 17241  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17242  			{
 17243  				{
 17244  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17245  				}
 17246  				{
 17247  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17248  				}
 17249  
 17250  			}
 17251  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17252  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17253  		} else {
 17254  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(blcodes - 4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17255  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17256  		}
 17257  	}
 17258  	// not -3 as stated in appnote.txt
 17259  	for rank = 0; rank < blcodes; rank++ {
 17260  
 17261  		{
 17262  			var len int32 = 3
 17263  			if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17264  				var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */)))
 17265  				*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17266  				{
 17267  					{
 17268  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17269  					}
 17270  					{
 17271  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17272  					}
 17273  
 17274  				}
 17275  				(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17276  				*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17277  			} else {
 17278  				*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2748 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17279  				*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17280  			}
 17281  		}
 17282  
 17283  	}
 17284  
 17285  	send_tree(tls, s, s+212 /* &.dyn_ltree */, (lcodes - 1)) // literal tree
 17286  
 17287  	send_tree(tls, s, s+2504 /* &.dyn_dtree */, (dcodes - 1)) // distance tree
 17288  
 17289  }
 17290  
 17291  // ===========================================================================
 17292  // Send a stored block
 17293  func X_tr_stored_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:863:20: */
 17294  	{
 17295  		var len int32 = 3
 17296  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17297  			var val int32 = ((int32(STORED_BLOCK) << 1) + last)
 17298  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17299  			{
 17300  				{
 17301  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17302  				}
 17303  				{
 17304  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17305  				}
 17306  
 17307  			}
 17308  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17309  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17310  		} else {
 17311  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STORED_BLOCK) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17312  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17313  		}
 17314  	}
 17315  	// send block type
 17316  	bi_windup(tls, s) /* align on byte boundary */
 17317  	{
 17318  		{
 17319  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(stored_len))) & 0xff))
 17320  		}
 17321  		{
 17322  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(stored_len))) >> 8))
 17323  		}
 17324  
 17325  	}
 17326  
 17327  	{
 17328  		{
 17329  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(^stored_len))) & 0xff))
 17330  		}
 17331  		{
 17332  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(^stored_len))) >> 8))
 17333  		}
 17334  
 17335  	}
 17336  
 17337  	libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), buf, stored_len)
 17338  	*(*Ulg)(unsafe.Pointer(s + 40 /* &.pending */)) += (stored_len)
 17339  }
 17340  
 17341  // ===========================================================================
 17342  // Flush the bits in the bit buffer to pending output (leaves at most 7 bits)
 17343  func X_tr_flush_bits(tls *libc.TLS, s uintptr) { /* trees.c:886:20: */
 17344  	bi_flush(tls, s)
 17345  }
 17346  
 17347  // ===========================================================================
 17348  // Send one empty static block to give enough lookahead for inflate.
 17349  // This takes 10 bits, of which 7 may remain in the bit buffer.
 17350  func X_tr_align(tls *libc.TLS, s uintptr) { /* trees.c:896:20: */
 17351  	{
 17352  		var len int32 = 3
 17353  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17354  			var val int32 = (int32(STATIC_TREES) << 1)
 17355  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17356  			{
 17357  				{
 17358  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17359  				}
 17360  				{
 17361  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17362  				}
 17363  
 17364  			}
 17365  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17366  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17367  		} else {
 17368  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(int32((Ush(int32(STATIC_TREES) << 1)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17369  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17370  		}
 17371  	}
 17372  
 17373  	{
 17374  		var len int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 + 2 /* &.dl */)))
 17375  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17376  			var val int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */)))
 17377  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17378  			{
 17379  				{
 17380  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17381  				}
 17382  				{
 17383  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17384  				}
 17385  
 17386  			}
 17387  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17388  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17389  		} else {
 17390  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17391  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17392  		}
 17393  	}
 17394  
 17395  	bi_flush(tls, s)
 17396  }
 17397  
 17398  // ===========================================================================
 17399  // Determine the best encoding for the current block: dynamic trees, static
 17400  // trees or store, and write out the encoded block.
 17401  func X_tr_flush_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:911:20: */
 17402  	var opt_lenb Ulg
 17403  	var static_lenb Ulg       // opt_len and static_len in bytes
 17404  	var max_blindex int32 = 0 // index of last bit length code of non zero freq
 17405  
 17406  	// Build the Huffman trees unless a stored block is forced
 17407  	if (*Deflate_state)(unsafe.Pointer(s)).Flevel > 0 {
 17408  
 17409  		// Check if the file is binary or text
 17410  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type == Z_UNKNOWN {
 17411  			(*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type = detect_data_type(tls, s)
 17412  		}
 17413  
 17414  		// Construct the literal and distance trees
 17415  		build_tree(tls, s, (s + 2904 /* &.l_desc */))
 17416  
 17417  		build_tree(tls, s, (s + 2928 /* &.d_desc */))
 17418  
 17419  		// At this point, opt_len and static_len are the total bit lengths of
 17420  		// the compressed block data, excluding the tree representations.
 17421  
 17422  		// Build the bit length tree for the above two trees, and get the index
 17423  		// in bl_order of the last bit length code to send.
 17424  		max_blindex = build_bl_tree(tls, s)
 17425  
 17426  		// Determine the best encoding. Compute the block lengths in bytes.
 17427  		opt_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fopt_len + uint64(3)) + uint64(7)) >> 3)
 17428  		static_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fstatic_len + uint64(3)) + uint64(7)) >> 3)
 17429  
 17430  		if static_lenb <= opt_lenb {
 17431  			opt_lenb = static_lenb
 17432  		}
 17433  
 17434  	} else {
 17435  
 17436  		opt_lenb = libc.AssignUint64(&static_lenb, (stored_len + uint64(5))) // force a stored block
 17437  	}
 17438  
 17439  	if ((stored_len + uint64(4)) <= opt_lenb) && (buf != uintptr(0)) {
 17440  		// 4: two words for the lengths
 17441  		// The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
 17442  		// Otherwise we can't have processed more than WSIZE input bytes since
 17443  		// the last block flush, because compression would have been
 17444  		// successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
 17445  		// transform a block into a stored block.
 17446  		X_tr_stored_block(tls, s, buf, stored_len, last)
 17447  
 17448  	} else if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FIXED) || (static_lenb == opt_lenb) {
 17449  		{
 17450  			var len int32 = 3
 17451  			if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17452  				var val int32 = ((int32(STATIC_TREES) << 1) + last)
 17453  				*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17454  				{
 17455  					{
 17456  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17457  					}
 17458  					{
 17459  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17460  					}
 17461  
 17462  				}
 17463  				(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17464  				*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17465  			} else {
 17466  				*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STATIC_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17467  				*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17468  			}
 17469  		}
 17470  
 17471  		compress_block(tls, s, uintptr(uintptr(unsafe.Pointer(&static_ltree))),
 17472  			uintptr(uintptr(unsafe.Pointer(&static_dtree))))
 17473  	} else {
 17474  		{
 17475  			var len int32 = 3
 17476  			if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17477  				var val int32 = ((int32(DYN_TREES) << 1) + last)
 17478  				*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17479  				{
 17480  					{
 17481  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17482  					}
 17483  					{
 17484  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17485  					}
 17486  
 17487  				}
 17488  				(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17489  				*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17490  			} else {
 17491  				*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush((int32(DYN_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17492  				*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17493  			}
 17494  		}
 17495  
 17496  		send_all_trees(tls, s, ((*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code + 1), ((*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code + 1),
 17497  			(max_blindex + 1))
 17498  		compress_block(tls, s, s+212, /* &.dyn_ltree */
 17499  			s+2504 /* &.dyn_dtree */)
 17500  	}
 17501  
 17502  	// The above check is made mod 2^32, for files larger than 512 MB
 17503  	// and uLong implemented on 32 bits.
 17504  	init_block(tls, s)
 17505  
 17506  	if last != 0 {
 17507  		bi_windup(tls, s)
 17508  	}
 17509  
 17510  }
 17511  
 17512  // ===========================================================================
 17513  // Save the match info and tally the frequency counts. Return true if
 17514  // the current block must be flushed.
 17515  func X_tr_tally(tls *libc.TLS, s uintptr, dist uint32, lc uint32) int32 { /* trees.c:1014:19: */
 17516  	*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ush(dist)
 17517  	*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = Uch(lc)
 17518  	if dist == uint32(0) {
 17519  		// lc is the unmatched char
 17520  		*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(lc)*4 /* &.fc */))++
 17521  	} else {
 17522  		(*Deflate_state)(unsafe.Pointer(s)).Fmatches++
 17523  		// Here, lc is the match length - MIN_MATCH
 17524  		dist-- // dist = match distance - 1
 17525  
 17526  		*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[lc])+LITERALS)+1))*4 /* &.fc */))++
 17527  		*(*Ush)(unsafe.Pointer((s + 2504 /* &.dyn_dtree */) + uintptr((func() int32 {
 17528  			if (dist) < uint32(256) {
 17529  				return int32(X_dist_code[dist])
 17530  			}
 17531  			return int32(X_dist_code[(uint32(256) + ((dist) >> 7))])
 17532  		}()))*4 /* &.fc */))++
 17533  	}
 17534  
 17535  	return (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
 17536  	// We avoid equality with lit_bufsize because of wraparound at 64K
 17537  	// on 16 bit machines and because stored blocks are restricted to
 17538  	// 64K-1 bytes.
 17539  }
 17540  
 17541  // ===========================================================================
 17542  // Send the block data compressed using the given Huffman trees
 17543  func compress_block(tls *libc.TLS, s uintptr, ltree uintptr, dtree uintptr) { /* trees.c:1064:12: */
 17544  	var dist uint32           // distance of matched string
 17545  	var lc int32              // match length or unmatched char (if dist == 0)
 17546  	var lx uint32 = uint32(0) // running index in l_buf
 17547  	var code uint32           // the code to send
 17548  	var extra int32           // number of extra bits to send
 17549  
 17550  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != UInt(0) {
 17551  		for ok := true; ok; ok = (lx < (*Deflate_state)(unsafe.Pointer(s)).Flast_lit) {
 17552  			dist = uint32(*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr(lx)*2)))
 17553  			lc = int32(*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&lx, 1)))))
 17554  			if dist == uint32(0) {
 17555  				{
 17556  					var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 + 2 /* &.dl */)))
 17557  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17558  						var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */)))
 17559  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17560  						{
 17561  							{
 17562  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17563  							}
 17564  							{
 17565  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17566  							}
 17567  
 17568  						}
 17569  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17570  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17571  					} else {
 17572  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17573  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17574  					}
 17575  				}
 17576  				// send a literal byte
 17577  
 17578  			} else {
 17579  				// Here, lc is the match length - MIN_MATCH
 17580  				code = uint32(X_length_code[lc])
 17581  				{
 17582  					var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 + 2 /* &.dl */)))
 17583  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17584  						var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */)))
 17585  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17586  						{
 17587  							{
 17588  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17589  							}
 17590  							{
 17591  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17592  							}
 17593  
 17594  						}
 17595  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17596  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17597  					} else {
 17598  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17599  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17600  					}
 17601  				}
 17602  				// send the length code
 17603  				extra = extra_lbits[code]
 17604  				if extra != 0 {
 17605  					lc = lc - (base_length[code])
 17606  					{
 17607  						var len int32 = extra
 17608  						if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17609  							var val int32 = lc
 17610  							*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17611  							{
 17612  								{
 17613  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17614  								}
 17615  								{
 17616  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17617  								}
 17618  
 17619  							}
 17620  							(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17621  							*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17622  						} else {
 17623  							*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(lc))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17624  							*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17625  						}
 17626  					}
 17627  					// send the extra length bits
 17628  				}
 17629  				dist-- // dist is now the match distance - 1
 17630  				code = func() uint32 {
 17631  					if (dist) < uint32(256) {
 17632  						return uint32(X_dist_code[dist])
 17633  					}
 17634  					return uint32(X_dist_code[(uint32(256) + ((dist) >> 7))])
 17635  				}()
 17636  
 17637  				{
 17638  					var len int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 + 2 /* &.dl */)))
 17639  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17640  						var val int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */)))
 17641  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17642  						{
 17643  							{
 17644  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17645  							}
 17646  							{
 17647  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17648  							}
 17649  
 17650  						}
 17651  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17652  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17653  					} else {
 17654  						*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17655  						*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17656  					}
 17657  				}
 17658  				// send the distance code
 17659  				extra = extra_dbits[code]
 17660  				if extra != 0 {
 17661  					dist = dist - (uint32(base_dist[code]))
 17662  					{
 17663  						var len int32 = extra
 17664  						if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17665  							var val int32 = int32(dist)
 17666  							*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17667  							{
 17668  								{
 17669  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17670  								}
 17671  								{
 17672  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17673  								}
 17674  
 17675  							}
 17676  							(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17677  							*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17678  						} else {
 17679  							*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((Ush(dist))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17680  							*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17681  						}
 17682  					}
 17683  					// send the extra distance bits
 17684  				}
 17685  			} // literal or match pair ?
 17686  
 17687  			// Check that the overlay between pending_buf and d_buf+l_buf is ok:
 17688  
 17689  		}
 17690  	}
 17691  
 17692  	{
 17693  		var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 + 2 /* &.dl */)))
 17694  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 17695  			var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */)))
 17696  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17697  			{
 17698  				{
 17699  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17700  				}
 17701  				{
 17702  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17703  				}
 17704  
 17705  			}
 17706  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 17707  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len - Buf_size)
 17708  		} else {
 17709  			*(*Ush)(unsafe.Pointer(s + 5936 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 17710  			*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) += (len)
 17711  		}
 17712  	}
 17713  
 17714  }
 17715  
 17716  // ===========================================================================
 17717  // Check if the data type is TEXT or BINARY, using the following algorithm:
 17718  // - TEXT if the two conditions below are satisfied:
 17719  //    a) There are no non-portable control characters belonging to the
 17720  //       "black list" (0..6, 14..25, 28..31).
 17721  //    b) There is at least one printable character belonging to the
 17722  //       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
 17723  // - BINARY otherwise.
 17724  // - The following partially-portable control characters form a
 17725  //   "gray list" that is ignored in this detection algorithm:
 17726  //   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
 17727  // IN assertion: the fields Freq of dyn_ltree are set.
 17728  func detect_data_type(tls *libc.TLS, s uintptr) int32 { /* trees.c:1124:11: */
 17729  	// black_mask is the bit mask of black-listed bytes
 17730  	// set bits 0..6, 14..25, and 28..31
 17731  	// 0xf3ffc07f = binary 11110011111111111100000001111111
 17732  	var black_mask uint64 = 0xf3ffc07f
 17733  	var n int32
 17734  
 17735  	// Check for non-textual ("black-listed") bytes.
 17736  	n = 0
 17737  __1:
 17738  	if !(n <= 31) {
 17739  		goto __3
 17740  	}
 17741  	if ((black_mask & uint64(1)) != 0) && (int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0) {
 17742  		return Z_BINARY
 17743  	}
 17744  	goto __2
 17745  __2:
 17746  	n++
 17747  	black_mask >>= 1
 17748  	goto __1
 17749  	goto __3
 17750  __3:
 17751  	;
 17752  
 17753  	// Check for textual ("white-listed") bytes.
 17754  	if ((int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 9*4 /* &.fc */))) != 0) || (int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 10*4 /* &.fc */))) != 0)) ||
 17755  		(int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + 13*4 /* &.fc */))) != 0) {
 17756  		return Z_TEXT
 17757  	}
 17758  	for n = 32; n < LITERALS; n++ {
 17759  		if int32(*(*Ush)(unsafe.Pointer((s + 212 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0 {
 17760  			return Z_TEXT
 17761  		}
 17762  	}
 17763  
 17764  	// There are no "black-listed" or "white-listed" bytes:
 17765  	// this stream either is empty or has tolerated ("gray-listed") bytes only.
 17766  	return Z_BINARY
 17767  }
 17768  
 17769  // ===========================================================================
 17770  // Reverse the first len bits of a code, using straightforward code (a faster
 17771  // method would use a table)
 17772  // IN assertion: 1 <= len <= 15
 17773  func bi_reverse(tls *libc.TLS, code uint32, len int32) uint32 { /* trees.c:1158:16: */
 17774  	var res uint32 = uint32(0)
 17775  	for ok := true; ok; ok = (libc.PreDecInt32(&len, 1) > 0) {
 17776  		res = res | (code & uint32(1))
 17777  		code >>= 1
 17778  		res <<= 1
 17779  	}
 17780  	return (res >> 1)
 17781  }
 17782  
 17783  // ===========================================================================
 17784  // Flush the bit buffer, keeping at most 7 bits in it.
 17785  func bi_flush(tls *libc.TLS, s uintptr) { /* trees.c:1173:12: */
 17786  	if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid == 16 {
 17787  		{
 17788  			{
 17789  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17790  			}
 17791  			{
 17792  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17793  			}
 17794  
 17795  		}
 17796  
 17797  		(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0)
 17798  		(*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0
 17799  	} else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid >= 8 {
 17800  		{
 17801  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)
 17802  		}
 17803  
 17804  		libc.AssignShrPtrUint16(s+5936 /* &.bi_buf */, int(8))
 17805  		*(*int32)(unsafe.Pointer(s + 5940 /* &.bi_valid */)) -= (8)
 17806  	}
 17807  }
 17808  
 17809  // ===========================================================================
 17810  // Flush the bit buffer and align the output on a byte boundary
 17811  func bi_windup(tls *libc.TLS, s uintptr) { /* trees.c:1190:12: */
 17812  	if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 8 {
 17813  		{
 17814  			{
 17815  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 17816  			}
 17817  			{
 17818  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 17819  			}
 17820  
 17821  		}
 17822  
 17823  	} else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 0 {
 17824  		{
 17825  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint64(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)
 17826  		}
 17827  
 17828  	}
 17829  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0)
 17830  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0
 17831  }
 17832  
 17833  // ===========================================================================
 17834  //      Decompresses the source buffer into the destination buffer.  *sourceLen is
 17835  //    the byte length of the source buffer. Upon entry, *destLen is the total size
 17836  //    of the destination buffer, which must be large enough to hold the entire
 17837  //    uncompressed data. (The size of the uncompressed data must have been saved
 17838  //    previously by the compressor and transmitted to the decompressor by some
 17839  //    mechanism outside the scope of this compression library.) Upon exit,
 17840  //    *destLen is the size of the decompressed data and *sourceLen is the number
 17841  //    of source bytes consumed. Upon return, source + *sourceLen points to the
 17842  //    first unused input byte.
 17843  //
 17844  //      uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough
 17845  //    memory, Z_BUF_ERROR if there was not enough room in the output buffer, or
 17846  //    Z_DATA_ERROR if the input data was corrupted, including if the input data is
 17847  //    an incomplete zlib stream.
 17848  func Xuncompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen uintptr) int32 { /* uncompr.c:27:13: */
 17849  	bp := tls.Alloc(120)
 17850  	defer tls.Free(120)
 17851  
 17852  	// var stream Z_stream at bp+8, 112
 17853  
 17854  	var err int32
 17855  	var max UInt = libc.Uint32(libc.Uint32FromInt32(-1))
 17856  	var len ULong
 17857  	var left ULong
 17858  	// var buf [1]Byte at bp, 1
 17859  	// for detection of incomplete stream when *destLen == 0
 17860  
 17861  	len = *(*ULong)(unsafe.Pointer(sourceLen))
 17862  	if *(*ULongf)(unsafe.Pointer(destLen)) != 0 {
 17863  		left = *(*ULongf)(unsafe.Pointer(destLen))
 17864  		*(*ULongf)(unsafe.Pointer(destLen)) = uint64(0)
 17865  	} else {
 17866  		left = uint64(1)
 17867  		dest = bp /* &buf[0] */
 17868  	}
 17869  
 17870  	(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fnext_in = source
 17871  	(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in = UInt(0)
 17872  	(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fzalloc = uintptr(0)
 17873  	(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fzfree = uintptr(0)
 17874  	(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fopaque = uintptr(0)
 17875  
 17876  	err = XinflateInit_(tls, bp+8 /* &stream */, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{})))
 17877  	if err != Z_OK {
 17878  		return err
 17879  	}
 17880  
 17881  	(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Fnext_out = dest
 17882  	(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out = UInt(0)
 17883  
 17884  	for ok := true; ok; ok = (err == Z_OK) {
 17885  		if (*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_out == UInt(0) {
 17886  			(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out = func() uint32 {
 17887  				if left > ULong(max) {
 17888  					return max
 17889  				}
 17890  				return UInt(left)
 17891  			}()
 17892  			left = left - (ULong((*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_out))
 17893  		}
 17894  		if (*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_in == UInt(0) {
 17895  			(*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in = func() uint32 {
 17896  				if len > ULong(max) {
 17897  					return max
 17898  				}
 17899  				return UInt(len)
 17900  			}()
 17901  			len = len - (ULong((*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Favail_in))
 17902  		}
 17903  		err = Xinflate(tls, bp+8 /* &stream */, Z_NO_FLUSH)
 17904  	}
 17905  
 17906  	*(*ULong)(unsafe.Pointer(sourceLen)) -= (len + ULong((*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_in))
 17907  	if dest != bp /* buf */ {
 17908  		*(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp + 8 /* &stream */)).Ftotal_out
 17909  	} else if ((*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Ftotal_out != 0) && (err == (-5)) {
 17910  		left = uint64(1)
 17911  	}
 17912  
 17913  	XinflateEnd(tls, bp+8 /* &stream */)
 17914  	if err == Z_STREAM_END {
 17915  		return Z_OK
 17916  	}
 17917  	if err == Z_NEED_DICT {
 17918  		return -3
 17919  	}
 17920  	if (err == (-5)) && ((left + ULong((*Z_stream)(unsafe.Pointer(bp+8 /* &stream */)).Favail_out)) != 0) {
 17921  		return -3
 17922  	}
 17923  	return err
 17924  }
 17925  
 17926  func Xuncompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* uncompr.c:86:13: */
 17927  	bp := tls.Alloc(8)
 17928  	defer tls.Free(8)
 17929  	*(*ULong)(unsafe.Pointer(bp)) = sourceLen
 17930  
 17931  	return Xuncompress2(tls, dest, destLen, source, bp /* &sourceLen */)
 17932  }
 17933  
 17934  // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
 17935  //    value -- needed when comparing unsigned to z_off64_t, which is signed
 17936  //    (possible z_off64_t types off_t, off64_t, and long are all signed)
 17937  
 17938  var Xz_errmsg = [10]uintptr{
 17939  	uintptr(ts + 876 /* "need dictionary" */),     // Z_NEED_DICT       2
 17940  	uintptr(ts + 892 /* "stream end" */),          // Z_STREAM_END      1
 17941  	uintptr(ts + 101 /* "" */),                    // Z_OK              0
 17942  	uintptr(ts + 903 /* "file error" */),          // Z_ERRNO         (-1)
 17943  	uintptr(ts + 914 /* "stream error" */),        // Z_STREAM_ERROR  (-2)
 17944  	uintptr(ts + 927 /* "data error" */),          // Z_DATA_ERROR    (-3)
 17945  	uintptr(ts + 938 /* "insufficient mem..." */), // Z_MEM_ERROR     (-4)
 17946  	uintptr(ts + 958 /* "buffer error" */),        // Z_BUF_ERROR     (-5)
 17947  	uintptr(ts + 971 /* "incompatible ver..." */), // Z_VERSION_ERROR (-6)
 17948  	uintptr(ts + 101 /* "" */),
 17949  } /* zutil.c:13:14 */
 17950  
 17951  func XzlibVersion(tls *libc.TLS) uintptr { /* zutil.c:27:12: */
 17952  	return ts /* "1.2.11" */
 17953  }
 17954  
 17955  func XzlibCompileFlags(tls *libc.TLS) ULong { /* zutil.c:32:15: */
 17956  	var flags ULong
 17957  
 17958  	flags = uint64(0)
 17959  	switch int32(unsafe.Sizeof(UInt(0))) {
 17960  	case 2:
 17961  		break
 17962  	case 4:
 17963  		flags = flags + (uint64(1))
 17964  		break
 17965  	case 8:
 17966  		flags = flags + (uint64(2))
 17967  		break
 17968  	default:
 17969  		flags = flags + (uint64(3))
 17970  	}
 17971  	switch int32(unsafe.Sizeof(ULong(0))) {
 17972  	case 2:
 17973  		break
 17974  	case 4:
 17975  		flags = flags + (uint64(int32(1) << 2))
 17976  		break
 17977  	case 8:
 17978  		flags = flags + (uint64(int32(2) << 2))
 17979  		break
 17980  	default:
 17981  		flags = flags + (uint64(int32(3) << 2))
 17982  	}
 17983  	switch int32(unsafe.Sizeof(Voidpf(0))) {
 17984  	case 2:
 17985  		break
 17986  	case 4:
 17987  		flags = flags + (uint64(int32(1) << 4))
 17988  		break
 17989  	case 8:
 17990  		flags = flags + (uint64(int32(2) << 4))
 17991  		break
 17992  	default:
 17993  		flags = flags + (uint64(int32(3) << 4))
 17994  	}
 17995  	switch int32(unsafe.Sizeof(Off_t(0))) {
 17996  	case 2:
 17997  		break
 17998  	case 4:
 17999  		flags = flags + (uint64(int32(1) << 6))
 18000  		break
 18001  	case 8:
 18002  		flags = flags + (uint64(int32(2) << 6))
 18003  		break
 18004  	default:
 18005  		flags = flags + (uint64(int32(3) << 6))
 18006  	}
 18007  	return flags
 18008  }
 18009  
 18010  // exported to allow conversion of error code to string for compress() and
 18011  // uncompress()
 18012  func XzError(tls *libc.TLS, err int32) uintptr { /* zutil.c:133:12: */
 18013  	return Xz_errmsg[(Z_NEED_DICT - (err))]
 18014  }
 18015  
 18016  func Xzcalloc(tls *libc.TLS, opaque Voidpf, items uint32, size uint32) Voidpf { /* zutil.c:305:22: */
 18017  	_ = opaque
 18018  	if uint64(unsafe.Sizeof(UInt(0))) > uint64(2) {
 18019  		return libc.Xmalloc(tls, (uint64(items * size)))
 18020  	}
 18021  	return libc.Xcalloc(tls, uint64(items), uint64(size))
 18022  }
 18023  
 18024  func Xzcfree(tls *libc.TLS, opaque Voidpf, ptr Voidpf) { /* zutil.c:315:20: */
 18025  	_ = opaque
 18026  	libc.Xfree(tls, ptr)
 18027  }
 18028  
 18029  func init() {
 18030  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 8 /* .func */)) = deflate_stored // deflate.c:136:29:
 18031  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 24 /* .func */)) = deflate_fast  // deflate.c:137:29:
 18032  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 40 /* .func */)) = deflate_fast  // deflate.c:138:29:
 18033  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 56 /* .func */)) = deflate_fast  // deflate.c:139:29:
 18034  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 72 /* .func */)) = deflate_slow  // deflate.c:141:29:
 18035  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 88 /* .func */)) = deflate_slow  // deflate.c:142:29:
 18036  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 104 /* .func */)) = deflate_slow // deflate.c:143:29:
 18037  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 120 /* .func */)) = deflate_slow // deflate.c:144:29:
 18038  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 136 /* .func */)) = deflate_slow // deflate.c:145:30:
 18039  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 152 /* .func */)) = deflate_slow // deflate.c:146:30:
 18040  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_bl_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_blbits))            // trees.c:132:22:
 18041  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_dtree))            // trees.c:129:2:
 18042  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_dbits))              // trees.c:129:16:
 18043  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_ltree))            // trees.c:126:2:
 18044  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 8 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_lbits))              // trees.c:126:16:
 18045  }
 18046  
 18047  var ts1 = "1.2.11\x00 deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler \x00%s\x00<fd:%d>\x00out of memory\x00\x00%s%s%s\x00: \x00unexpected end of file\x00internal error: inflate stream corrupt\x00compressed data error\x00request does not fit in an int\x00request does not fit in a size_t\x00out of room to push characters\x00internal error: deflate stream corrupt\x00requested length does not fit in int\x00invalid block type\x00invalid stored block lengths\x00too many length or distance symbols\x00invalid code lengths set\x00invalid bit length repeat\x00invalid code -- missing end-of-block\x00invalid literal/lengths set\x00invalid distances set\x00invalid literal/length code\x00invalid distance code\x00invalid distance too far back\x00incorrect header check\x00unknown compression method\x00invalid window size\x00unknown header flags set\x00header crc mismatch\x00incorrect data check\x00incorrect length check\x00 inflate 1.2.11 Copyright 1995-2017 Mark Adler \x00need dictionary\x00stream end\x00file error\x00stream error\x00data error\x00insufficient memory\x00buffer error\x00incompatible version\x00"
 18048  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data