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

     1  // Code generated by 'ccgo -export-defines "" -export-enums "" -export-externs X -export-fields F -export-structs "" -export-typedefs "" -o lib/z_linux_arm.go -pkgname z -trace-translation-units /tmp/go-generate-1705985058/cdb.json libz.a', DO NOT EDIT.
     2  
     3  package z
     4  
     5  import (
     6  	"math"
     7  	"reflect"
     8  	"sync/atomic"
     9  	"unsafe"
    10  
    11  	"modernc.org/libc"
    12  	"modernc.org/libc/sys/types"
    13  )
    14  
    15  var _ = math.Pi
    16  var _ reflect.Kind
    17  var _ atomic.Value
    18  var _ unsafe.Pointer
    19  var _ types.Size_t
    20  
    21  const (
    22  	AIO_PRIO_DELTA_MAX                   = 20
    23  	BASE                                 = 65521
    24  	BC_BASE_MAX                          = 99
    25  	BC_DIM_MAX                           = 2048
    26  	BC_SCALE_MAX                         = 99
    27  	BC_STRING_MAX                        = 1000
    28  	BIG_ENDIAN                           = 4321
    29  	BYTE_ORDER                           = 1234
    30  	CHARCLASS_NAME_MAX                   = 2048
    31  	CHAR_BIT                             = 8
    32  	CHAR_MAX                             = 255
    33  	CHAR_MIN                             = 0
    34  	COLL_WEIGHTS_MAX                     = 255
    35  	DEF_MEM_LEVEL                        = 8
    36  	DEF_WBITS                            = 15
    37  	DELAYTIMER_MAX                       = 2147483647
    38  	DYN_TREES                            = 2
    39  	EXIT_FAILURE                         = 1
    40  	EXIT_SUCCESS                         = 0
    41  	EXPR_NEST_MAX                        = 32
    42  	FAR                                  = 0
    43  	FD_SETSIZE                           = 1024
    44  	F_LOCK                               = 1
    45  	F_OK                                 = 0
    46  	F_TEST                               = 3
    47  	F_TLOCK                              = 2
    48  	F_ULOCK                              = 0
    49  	HAVE_HIDDEN                          = 1
    50  	HAVE_MEMCPY                          = 0
    51  	HOST_NAME_MAX                        = 64
    52  	INT_MAX                              = 2147483647
    53  	INT_MIN                              = -2147483648
    54  	LINE_MAX                             = 2048
    55  	LITTLE_ENDIAN                        = 1234
    56  	LLONG_MAX                            = 9223372036854775807
    57  	LLONG_MIN                            = -9223372036854775808
    58  	LOGIN_NAME_MAX                       = 256
    59  	LONG_MAX                             = 2147483647
    60  	LONG_MIN                             = -2147483648
    61  	L_INCR                               = 1
    62  	L_SET                                = 0
    63  	L_XTND                               = 2
    64  	MAX_CANON                            = 255
    65  	MAX_INPUT                            = 255
    66  	MAX_MATCH                            = 258
    67  	MAX_MEM_LEVEL                        = 9
    68  	MAX_WBITS                            = 15
    69  	MB_LEN_MAX                           = 16
    70  	MIN_MATCH                            = 3
    71  	MQ_PRIO_MAX                          = 32768
    72  	NAME_MAX                             = 255
    73  	NGROUPS_MAX                          = 65536
    74  	NMAX                                 = 5552
    75  	OS_CODE                              = 3
    76  	PATH_MAX                             = 4096
    77  	PDP_ENDIAN                           = 3412
    78  	PIPE_BUF                             = 4096
    79  	PRESET_DICT                          = 0x20
    80  	PTHREAD_DESTRUCTOR_ITERATIONS        = 4
    81  	PTHREAD_KEYS_MAX                     = 1024
    82  	PTHREAD_STACK_MIN                    = 16384
    83  	RAND_MAX                             = 2147483647
    84  	RE_DUP_MAX                           = 32767
    85  	RTSIG_MAX                            = 32
    86  	R_OK                                 = 4
    87  	SCHAR_MAX                            = 127
    88  	SCHAR_MIN                            = -128
    89  	SEEK_CUR                             = 1
    90  	SEEK_END                             = 2
    91  	SEEK_SET                             = 0
    92  	SEM_VALUE_MAX                        = 2147483647
    93  	SHRT_MAX                             = 32767
    94  	SHRT_MIN                             = -32768
    95  	SSIZE_MAX                            = 2147483647
    96  	STATIC_TREES                         = 1
    97  	STDC                                 = 0
    98  	STDC99                               = 0
    99  	STDERR_FILENO                        = 2
   100  	STDIN_FILENO                         = 0
   101  	STDOUT_FILENO                        = 1
   102  	STORED_BLOCK                         = 0
   103  	TTY_NAME_MAX                         = 32
   104  	UCHAR_MAX                            = 255
   105  	UINT_MAX                             = 4294967295
   106  	ULLONG_MAX                           = 18446744073709551615
   107  	ULONG_MAX                            = 4294967295
   108  	USHRT_MAX                            = 65535
   109  	WCONTINUED                           = 8
   110  	WEXITED                              = 4
   111  	WNOHANG                              = 1
   112  	WNOWAIT                              = 0x01000000
   113  	WSTOPPED                             = 2
   114  	WUNTRACED                            = 2
   115  	W_OK                                 = 2
   116  	XATTR_LIST_MAX                       = 65536
   117  	XATTR_NAME_MAX                       = 255
   118  	XATTR_SIZE_MAX                       = 65536
   119  	X_OK                                 = 1
   120  	ZCONF_H                              = 0
   121  	ZEXPORT                              = 0
   122  	ZEXPORTVA                            = 0
   123  	ZLIB_H                               = 0
   124  	ZLIB_VERNUM                          = 0x12b0
   125  	ZLIB_VERSION                         = "1.2.11"
   126  	ZLIB_VER_MAJOR                       = 1
   127  	ZLIB_VER_MINOR                       = 2
   128  	ZLIB_VER_REVISION                    = 11
   129  	ZLIB_VER_SUBREVISION                 = 0
   130  	ZUTIL_H                              = 0
   131  	Z_ASCII                              = 1
   132  	Z_BEST_COMPRESSION                   = 9
   133  	Z_BEST_SPEED                         = 1
   134  	Z_BINARY                             = 0
   135  	Z_BLOCK                              = 5
   136  	Z_BUF_ERROR                          = -5
   137  	Z_DATA_ERROR                         = -3
   138  	Z_DEFAULT_COMPRESSION                = -1
   139  	Z_DEFAULT_STRATEGY                   = 0
   140  	Z_DEFLATED                           = 8
   141  	Z_ERRNO                              = -1
   142  	Z_FILTERED                           = 1
   143  	Z_FINISH                             = 4
   144  	Z_FIXED                              = 4
   145  	Z_FULL_FLUSH                         = 3
   146  	Z_HAVE_STDARG_H                      = 0
   147  	Z_HAVE_UNISTD_H                      = 0
   148  	Z_HUFFMAN_ONLY                       = 2
   149  	Z_LARGE64                            = 0
   150  	Z_LFS64                              = 0
   151  	Z_MEM_ERROR                          = -4
   152  	Z_NEED_DICT                          = 2
   153  	Z_NO_COMPRESSION                     = 0
   154  	Z_NO_FLUSH                           = 0
   155  	Z_NULL                               = 0
   156  	Z_OK                                 = 0
   157  	Z_PARTIAL_FLUSH                      = 1
   158  	Z_RLE                                = 3
   159  	Z_STREAM_END                         = 1
   160  	Z_STREAM_ERROR                       = -2
   161  	Z_SYNC_FLUSH                         = 2
   162  	Z_TEXT                               = 1
   163  	Z_TREES                              = 6
   164  	Z_UNKNOWN                            = 2
   165  	Z_VERSION_ERROR                      = -6
   166  	Z_WANT64                             = 0
   167  	X_ALLOCA_H                           = 1
   168  	X_ANSI_STDARG_H_                     = 0
   169  	X_ANSI_STDDEF_H                      = 0
   170  	X_ATFILE_SOURCE                      = 1
   171  	X_BITS_BYTESWAP_H                    = 1
   172  	X_BITS_ENDIANNESS_H                  = 1
   173  	X_BITS_ENDIAN_H                      = 1
   174  	X_BITS_FLOATN_COMMON_H               = 0
   175  	X_BITS_POSIX1_LIM_H                  = 1
   176  	X_BITS_POSIX2_LIM_H                  = 1
   177  	X_BITS_POSIX_OPT_H                   = 1
   178  	X_BITS_PTHREADTYPES_ARCH_H           = 1
   179  	X_BITS_PTHREADTYPES_COMMON_H         = 1
   180  	X_BITS_STDINT_INTN_H                 = 1
   181  	X_BITS_TIME64_H                      = 1
   182  	X_BITS_TYPESIZES_H                   = 1
   183  	X_BITS_TYPES_H                       = 1
   184  	X_BITS_TYPES_LOCALE_T_H              = 1
   185  	X_BITS_TYPES___LOCALE_T_H            = 1
   186  	X_BITS_UINTN_IDENTITY_H              = 1
   187  	X_BSD_PTRDIFF_T_                     = 0
   188  	X_BSD_SIZE_T_                        = 0
   189  	X_BSD_SIZE_T_DEFINED_                = 0
   190  	X_DEFAULT_SOURCE                     = 1
   191  	X_ENDIAN_H                           = 1
   192  	X_FEATURES_H                         = 1
   193  	X_FILE_OFFSET_BITS                   = 64
   194  	X_GCC_LIMITS_H_                      = 0
   195  	X_GCC_MAX_ALIGN_T                    = 0
   196  	X_GCC_PTRDIFF_T                      = 0
   197  	X_GCC_SIZE_T                         = 0
   198  	X_GCC_WCHAR_T                        = 0
   199  	X_GETOPT_CORE_H                      = 1
   200  	X_GETOPT_POSIX_H                     = 1
   201  	X_LARGEFILE64_SOURCE                 = 1
   202  	X_LFS64_ASYNCHRONOUS_IO              = 1
   203  	X_LFS64_LARGEFILE                    = 1
   204  	X_LFS64_STDIO                        = 1
   205  	X_LFS_ASYNCHRONOUS_IO                = 1
   206  	X_LFS_LARGEFILE                      = 1
   207  	X_LIBC_LIMITS_H_                     = 1
   208  	X_LIMITS_H___                        = 0
   209  	X_LINUX_LIMITS_H                     = 0
   210  	X_POSIX2_BC_BASE_MAX                 = 99
   211  	X_POSIX2_BC_DIM_MAX                  = 2048
   212  	X_POSIX2_BC_SCALE_MAX                = 99
   213  	X_POSIX2_BC_STRING_MAX               = 1000
   214  	X_POSIX2_CHARCLASS_NAME_MAX          = 14
   215  	X_POSIX2_CHAR_TERM                   = 200809
   216  	X_POSIX2_COLL_WEIGHTS_MAX            = 2
   217  	X_POSIX2_C_BIND                      = 200809
   218  	X_POSIX2_C_DEV                       = 200809
   219  	X_POSIX2_C_VERSION                   = 200809
   220  	X_POSIX2_EXPR_NEST_MAX               = 32
   221  	X_POSIX2_LINE_MAX                    = 2048
   222  	X_POSIX2_LOCALEDEF                   = 200809
   223  	X_POSIX2_RE_DUP_MAX                  = 255
   224  	X_POSIX2_SW_DEV                      = 200809
   225  	X_POSIX2_VERSION                     = 200809
   226  	X_POSIX_ADVISORY_INFO                = 200809
   227  	X_POSIX_AIO_LISTIO_MAX               = 2
   228  	X_POSIX_AIO_MAX                      = 1
   229  	X_POSIX_ARG_MAX                      = 4096
   230  	X_POSIX_ASYNCHRONOUS_IO              = 200809
   231  	X_POSIX_ASYNC_IO                     = 1
   232  	X_POSIX_BARRIERS                     = 200809
   233  	X_POSIX_CHILD_MAX                    = 25
   234  	X_POSIX_CHOWN_RESTRICTED             = 0
   235  	X_POSIX_CLOCKRES_MIN                 = 20000000
   236  	X_POSIX_CLOCK_SELECTION              = 200809
   237  	X_POSIX_CPUTIME                      = 0
   238  	X_POSIX_C_SOURCE                     = 200809
   239  	X_POSIX_DELAYTIMER_MAX               = 32
   240  	X_POSIX_FSYNC                        = 200809
   241  	X_POSIX_HOST_NAME_MAX                = 255
   242  	X_POSIX_IPV6                         = 200809
   243  	X_POSIX_JOB_CONTROL                  = 1
   244  	X_POSIX_LINK_MAX                     = 8
   245  	X_POSIX_LOGIN_NAME_MAX               = 9
   246  	X_POSIX_MAPPED_FILES                 = 200809
   247  	X_POSIX_MAX_CANON                    = 255
   248  	X_POSIX_MAX_INPUT                    = 255
   249  	X_POSIX_MEMLOCK                      = 200809
   250  	X_POSIX_MEMLOCK_RANGE                = 200809
   251  	X_POSIX_MEMORY_PROTECTION            = 200809
   252  	X_POSIX_MESSAGE_PASSING              = 200809
   253  	X_POSIX_MONOTONIC_CLOCK              = 0
   254  	X_POSIX_MQ_OPEN_MAX                  = 8
   255  	X_POSIX_MQ_PRIO_MAX                  = 32
   256  	X_POSIX_NAME_MAX                     = 14
   257  	X_POSIX_NGROUPS_MAX                  = 8
   258  	X_POSIX_NO_TRUNC                     = 1
   259  	X_POSIX_OPEN_MAX                     = 20
   260  	X_POSIX_PATH_MAX                     = 256
   261  	X_POSIX_PIPE_BUF                     = 512
   262  	X_POSIX_PRIORITIZED_IO               = 200809
   263  	X_POSIX_PRIORITY_SCHEDULING          = 200809
   264  	X_POSIX_RAW_SOCKETS                  = 200809
   265  	X_POSIX_READER_WRITER_LOCKS          = 200809
   266  	X_POSIX_REALTIME_SIGNALS             = 200809
   267  	X_POSIX_REENTRANT_FUNCTIONS          = 1
   268  	X_POSIX_REGEXP                       = 1
   269  	X_POSIX_RE_DUP_MAX                   = 255
   270  	X_POSIX_RTSIG_MAX                    = 8
   271  	X_POSIX_SAVED_IDS                    = 1
   272  	X_POSIX_SEMAPHORES                   = 200809
   273  	X_POSIX_SEM_NSEMS_MAX                = 256
   274  	X_POSIX_SEM_VALUE_MAX                = 32767
   275  	X_POSIX_SHARED_MEMORY_OBJECTS        = 200809
   276  	X_POSIX_SHELL                        = 1
   277  	X_POSIX_SIGQUEUE_MAX                 = 32
   278  	X_POSIX_SOURCE                       = 1
   279  	X_POSIX_SPAWN                        = 200809
   280  	X_POSIX_SPIN_LOCKS                   = 200809
   281  	X_POSIX_SPORADIC_SERVER              = -1
   282  	X_POSIX_SSIZE_MAX                    = 32767
   283  	X_POSIX_STREAM_MAX                   = 8
   284  	X_POSIX_SYMLINK_MAX                  = 255
   285  	X_POSIX_SYMLOOP_MAX                  = 8
   286  	X_POSIX_SYNCHRONIZED_IO              = 200809
   287  	X_POSIX_THREADS                      = 200809
   288  	X_POSIX_THREAD_ATTR_STACKADDR        = 200809
   289  	X_POSIX_THREAD_ATTR_STACKSIZE        = 200809
   290  	X_POSIX_THREAD_CPUTIME               = 0
   291  	X_POSIX_THREAD_DESTRUCTOR_ITERATIONS = 4
   292  	X_POSIX_THREAD_KEYS_MAX              = 128
   293  	X_POSIX_THREAD_PRIORITY_SCHEDULING   = 200809
   294  	X_POSIX_THREAD_PRIO_INHERIT          = 200809
   295  	X_POSIX_THREAD_PRIO_PROTECT          = 200809
   296  	X_POSIX_THREAD_PROCESS_SHARED        = 200809
   297  	X_POSIX_THREAD_ROBUST_PRIO_INHERIT   = 200809
   298  	X_POSIX_THREAD_ROBUST_PRIO_PROTECT   = -1
   299  	X_POSIX_THREAD_SAFE_FUNCTIONS        = 200809
   300  	X_POSIX_THREAD_SPORADIC_SERVER       = -1
   301  	X_POSIX_THREAD_THREADS_MAX           = 64
   302  	X_POSIX_TIMEOUTS                     = 200809
   303  	X_POSIX_TIMERS                       = 200809
   304  	X_POSIX_TIMER_MAX                    = 32
   305  	X_POSIX_TRACE                        = -1
   306  	X_POSIX_TRACE_EVENT_FILTER           = -1
   307  	X_POSIX_TRACE_INHERIT                = -1
   308  	X_POSIX_TRACE_LOG                    = -1
   309  	X_POSIX_TTY_NAME_MAX                 = 9
   310  	X_POSIX_TYPED_MEMORY_OBJECTS         = -1
   311  	X_POSIX_TZNAME_MAX                   = 6
   312  	X_POSIX_V6_ILP32_OFF32               = 1
   313  	X_POSIX_V6_ILP32_OFFBIG              = 1
   314  	X_POSIX_V6_LP64_OFF64                = -1
   315  	X_POSIX_V6_LPBIG_OFFBIG              = -1
   316  	X_POSIX_V7_ILP32_OFF32               = 1
   317  	X_POSIX_V7_ILP32_OFFBIG              = 1
   318  	X_POSIX_V7_LP64_OFF64                = -1
   319  	X_POSIX_V7_LPBIG_OFFBIG              = -1
   320  	X_POSIX_VDISABLE                     = 0
   321  	X_POSIX_VERSION                      = 200809
   322  	X_PTRDIFF_T                          = 0
   323  	X_PTRDIFF_T_                         = 0
   324  	X_PTRDIFF_T_DECLARED                 = 0
   325  	X_SIZET_                             = 0
   326  	X_SIZE_T                             = 0
   327  	X_SIZE_T_                            = 0
   328  	X_SIZE_T_DECLARED                    = 0
   329  	X_SIZE_T_DEFINED                     = 0
   330  	X_SIZE_T_DEFINED_                    = 0
   331  	X_STDARG_H                           = 0
   332  	X_STDC_PREDEF_H                      = 1
   333  	X_STDDEF_H                           = 0
   334  	X_STDDEF_H_                          = 0
   335  	X_STDLIB_H                           = 1
   336  	X_STRINGS_H                          = 1
   337  	X_STRING_H                           = 1
   338  	X_STRUCT_TIMESPEC                    = 1
   339  	X_SYS_CDEFS_H                        = 1
   340  	X_SYS_SELECT_H                       = 1
   341  	X_SYS_SIZE_T_H                       = 0
   342  	X_SYS_TYPES_H                        = 1
   343  	X_THREAD_MUTEX_INTERNAL_H            = 1
   344  	X_THREAD_SHARED_TYPES_H              = 1
   345  	X_T_PTRDIFF                          = 0
   346  	X_T_PTRDIFF_                         = 0
   347  	X_T_SIZE                             = 0
   348  	X_T_SIZE_                            = 0
   349  	X_T_WCHAR                            = 0
   350  	X_T_WCHAR_                           = 0
   351  	X_UNISTD_H                           = 1
   352  	X_VA_LIST                            = 0
   353  	X_VA_LIST_                           = 0
   354  	X_VA_LIST_DEFINED                    = 0
   355  	X_VA_LIST_T_H                        = 0
   356  	X_WCHAR_T                            = 0
   357  	X_WCHAR_T_                           = 0
   358  	X_WCHAR_T_DECLARED                   = 0
   359  	X_WCHAR_T_DEFINED                    = 0
   360  	X_WCHAR_T_DEFINED_                   = 0
   361  	X_WCHAR_T_H                          = 0
   362  	X_XBS5_ILP32_OFF32                   = 1
   363  	X_XBS5_ILP32_OFFBIG                  = 1
   364  	X_XBS5_LP64_OFF64                    = -1
   365  	X_XBS5_LPBIG_OFFBIG                  = -1
   366  	X_XOPEN_ENH_I18N                     = 1
   367  	X_XOPEN_LEGACY                       = 1
   368  	X_XOPEN_REALTIME                     = 1
   369  	X_XOPEN_REALTIME_THREADS             = 1
   370  	X_XOPEN_SHM                          = 1
   371  	X_XOPEN_UNIX                         = 1
   372  	X_XOPEN_VERSION                      = 700
   373  	X_XOPEN_XCU_VERSION                  = 4
   374  	X_XOPEN_XPG2                         = 1
   375  	X_XOPEN_XPG3                         = 1
   376  	X_XOPEN_XPG4                         = 1
   377  	Linux                                = 1
   378  	Unix                                 = 1
   379  	Z_const                              = 0
   380  	BYFOUR                               = 0
   381  	GF2_DIM                              = 32
   382  	TBLS                                 = 8
   383  	BL_CODES                             = 19
   384  	BUSY_STATE                           = 113
   385  	Buf_size                             = 16
   386  	COMMENT_STATE                        = 91
   387  	DEFLATE_H                            = 0
   388  	D_CODES                              = 30
   389  	EXTRA_STATE                          = 69
   390  	FINISH_STATE                         = 666
   391  	GZIP                                 = 0
   392  	GZIP_STATE                           = 57
   393  	HCRC_STATE                           = 103
   394  	HEAP_SIZE                            = 573
   395  	INIT_STATE                           = 42
   396  	LENGTH_CODES                         = 29
   397  	LITERALS                             = 256
   398  	L_CODES                              = 286
   399  	MAX_BITS                             = 15
   400  	MAX_STORED                           = 65535
   401  	MIN_LOOKAHEAD                        = 262
   402  	NAME_STATE                           = 73
   403  	NIL                                  = 0
   404  	TOO_FAR                              = 4096
   405  	WIN_INIT                             = 258
   406  	AT_EACCESS                           = 0x200
   407  	AT_FDCWD                             = -100
   408  	AT_REMOVEDIR                         = 0x200
   409  	AT_SYMLINK_FOLLOW                    = 0x400
   410  	AT_SYMLINK_NOFOLLOW                  = 0x100
   411  	BUFSIZ                               = 8192
   412  	COPY1                                = 1
   413  	E2BIG                                = 7
   414  	EACCES                               = 13
   415  	EADDRINUSE                           = 98
   416  	EADDRNOTAVAIL                        = 99
   417  	EADV                                 = 68
   418  	EAFNOSUPPORT                         = 97
   419  	EAGAIN                               = 11
   420  	EALREADY                             = 114
   421  	EBADE                                = 52
   422  	EBADF                                = 9
   423  	EBADFD                               = 77
   424  	EBADMSG                              = 74
   425  	EBADR                                = 53
   426  	EBADRQC                              = 56
   427  	EBADSLT                              = 57
   428  	EBFONT                               = 59
   429  	EBUSY                                = 16
   430  	ECANCELED                            = 125
   431  	ECHILD                               = 10
   432  	ECHRNG                               = 44
   433  	ECOMM                                = 70
   434  	ECONNABORTED                         = 103
   435  	ECONNREFUSED                         = 111
   436  	ECONNRESET                           = 104
   437  	EDEADLK                              = 35
   438  	EDEADLOCK                            = 35
   439  	EDESTADDRREQ                         = 89
   440  	EDOM                                 = 33
   441  	EDOTDOT                              = 73
   442  	EDQUOT                               = 122
   443  	EEXIST                               = 17
   444  	EFAULT                               = 14
   445  	EFBIG                                = 27
   446  	EHOSTDOWN                            = 112
   447  	EHOSTUNREACH                         = 113
   448  	EHWPOISON                            = 133
   449  	EIDRM                                = 43
   450  	EILSEQ                               = 84
   451  	EINPROGRESS                          = 115
   452  	EINTR                                = 4
   453  	EINVAL                               = 22
   454  	EIO                                  = 5
   455  	EISCONN                              = 106
   456  	EISDIR                               = 21
   457  	EISNAM                               = 120
   458  	EKEYEXPIRED                          = 127
   459  	EKEYREJECTED                         = 129
   460  	EKEYREVOKED                          = 128
   461  	EL2HLT                               = 51
   462  	EL2NSYNC                             = 45
   463  	EL3HLT                               = 46
   464  	EL3RST                               = 47
   465  	ELIBACC                              = 79
   466  	ELIBBAD                              = 80
   467  	ELIBEXEC                             = 83
   468  	ELIBMAX                              = 82
   469  	ELIBSCN                              = 81
   470  	ELNRNG                               = 48
   471  	ELOOP                                = 40
   472  	EMEDIUMTYPE                          = 124
   473  	EMFILE                               = 24
   474  	EMLINK                               = 31
   475  	EMSGSIZE                             = 90
   476  	EMULTIHOP                            = 72
   477  	ENAMETOOLONG                         = 36
   478  	ENAVAIL                              = 119
   479  	ENETDOWN                             = 100
   480  	ENETRESET                            = 102
   481  	ENETUNREACH                          = 101
   482  	ENFILE                               = 23
   483  	ENOANO                               = 55
   484  	ENOBUFS                              = 105
   485  	ENOCSI                               = 50
   486  	ENODATA                              = 61
   487  	ENODEV                               = 19
   488  	ENOENT                               = 2
   489  	ENOEXEC                              = 8
   490  	ENOKEY                               = 126
   491  	ENOLCK                               = 37
   492  	ENOLINK                              = 67
   493  	ENOMEDIUM                            = 123
   494  	ENOMEM                               = 12
   495  	ENOMSG                               = 42
   496  	ENONET                               = 64
   497  	ENOPKG                               = 65
   498  	ENOPROTOOPT                          = 92
   499  	ENOSPC                               = 28
   500  	ENOSR                                = 63
   501  	ENOSTR                               = 60
   502  	ENOSYS                               = 38
   503  	ENOTBLK                              = 15
   504  	ENOTCONN                             = 107
   505  	ENOTDIR                              = 20
   506  	ENOTEMPTY                            = 39
   507  	ENOTNAM                              = 118
   508  	ENOTRECOVERABLE                      = 131
   509  	ENOTSOCK                             = 88
   510  	ENOTSUP                              = 95
   511  	ENOTTY                               = 25
   512  	ENOTUNIQ                             = 76
   513  	ENXIO                                = 6
   514  	EOF                                  = -1
   515  	EOPNOTSUPP                           = 95
   516  	EOVERFLOW                            = 75
   517  	EOWNERDEAD                           = 130
   518  	EPERM                                = 1
   519  	EPFNOSUPPORT                         = 96
   520  	EPIPE                                = 32
   521  	EPROTO                               = 71
   522  	EPROTONOSUPPORT                      = 93
   523  	EPROTOTYPE                           = 91
   524  	ERANGE                               = 34
   525  	EREMCHG                              = 78
   526  	EREMOTE                              = 66
   527  	EREMOTEIO                            = 121
   528  	ERESTART                             = 85
   529  	ERFKILL                              = 132
   530  	EROFS                                = 30
   531  	ESHUTDOWN                            = 108
   532  	ESOCKTNOSUPPORT                      = 94
   533  	ESPIPE                               = 29
   534  	ESRCH                                = 3
   535  	ESRMNT                               = 69
   536  	ESTALE                               = 116
   537  	ESTRPIPE                             = 86
   538  	ETIME                                = 62
   539  	ETIMEDOUT                            = 110
   540  	ETOOMANYREFS                         = 109
   541  	ETXTBSY                              = 26
   542  	EUCLEAN                              = 117
   543  	EUNATCH                              = 49
   544  	EUSERS                               = 87
   545  	EWOULDBLOCK                          = 11
   546  	EXDEV                                = 18
   547  	EXFULL                               = 54
   548  	FAPPEND                              = 1024
   549  	FASYNC                               = 8192
   550  	FD_CLOEXEC                           = 1
   551  	FFSYNC                               = 1052672
   552  	FILENAME_MAX                         = 4096
   553  	FNDELAY                              = 2048
   554  	FNONBLOCK                            = 2048
   555  	FOPEN_MAX                            = 16
   556  	F_DUPFD                              = 0
   557  	F_DUPFD_CLOEXEC                      = 1030
   558  	F_EXLCK                              = 4
   559  	F_GETFD                              = 1
   560  	F_GETFL                              = 3
   561  	F_GETLK                              = 5
   562  	F_GETLK64                            = 12
   563  	F_GETOWN                             = 9
   564  	F_RDLCK                              = 0
   565  	F_SETFD                              = 2
   566  	F_SETFL                              = 4
   567  	F_SETLK                              = 6
   568  	F_SETLK64                            = 13
   569  	F_SETLKW                             = 7
   570  	F_SETLKW64                           = 14
   571  	F_SETOWN                             = 8
   572  	F_SHLCK                              = 8
   573  	F_UNLCK                              = 2
   574  	F_WRLCK                              = 1
   575  	GZBUFSIZE                            = 8192
   576  	GZ_APPEND                            = 1
   577  	GZ_NONE                              = 0
   578  	GZ_READ                              = 7247
   579  	GZ_WRITE                             = 31153
   580  	HAVE_VSNPRINTF                       = 0
   581  	LOCK_EX                              = 2
   582  	LOCK_NB                              = 4
   583  	LOCK_SH                              = 1
   584  	LOCK_UN                              = 8
   585  	LOOK                                 = 0
   586  	L_ctermid                            = 9
   587  	L_tmpnam                             = 20
   588  	O_ACCMODE                            = 0003
   589  	O_APPEND                             = 02000
   590  	O_ASYNC                              = 020000
   591  	O_CLOEXEC                            = 524288
   592  	O_CREAT                              = 0100
   593  	O_DIRECTORY                          = 16384
   594  	O_DSYNC                              = 4096
   595  	O_EXCL                               = 0200
   596  	O_FSYNC                              = 1052672
   597  	O_LARGEFILE                          = 131072
   598  	O_NDELAY                             = 2048
   599  	O_NOCTTY                             = 0400
   600  	O_NOFOLLOW                           = 32768
   601  	O_NONBLOCK                           = 04000
   602  	O_RDONLY                             = 00
   603  	O_RDWR                               = 02
   604  	O_RSYNC                              = 1052672
   605  	O_SYNC                               = 04010000
   606  	O_TRUNC                              = 01000
   607  	O_WRONLY                             = 01
   608  	POSIX_FADV_DONTNEED                  = 4
   609  	POSIX_FADV_NOREUSE                   = 5
   610  	POSIX_FADV_NORMAL                    = 0
   611  	POSIX_FADV_RANDOM                    = 1
   612  	POSIX_FADV_SEQUENTIAL                = 2
   613  	POSIX_FADV_WILLNEED                  = 3
   614  	P_tmpdir                             = "/tmp"
   615  	S_IFBLK                              = 24576
   616  	S_IFCHR                              = 8192
   617  	S_IFDIR                              = 16384
   618  	S_IFIFO                              = 4096
   619  	S_IFLNK                              = 40960
   620  	S_IFMT                               = 61440
   621  	S_IFREG                              = 32768
   622  	S_IFSOCK                             = 49152
   623  	S_IRGRP                              = 32
   624  	S_IROTH                              = 4
   625  	S_IRUSR                              = 256
   626  	S_IRWXG                              = 56
   627  	S_IRWXO                              = 7
   628  	S_IRWXU                              = 448
   629  	S_ISGID                              = 1024
   630  	S_ISUID                              = 2048
   631  	S_ISVTX                              = 512
   632  	S_IWGRP                              = 16
   633  	S_IWOTH                              = 2
   634  	S_IWUSR                              = 128
   635  	S_IXGRP                              = 8
   636  	S_IXOTH                              = 1
   637  	S_IXUSR                              = 64
   638  	TMP_MAX                              = 238328
   639  	UTIME_NOW                            = 1073741823
   640  	UTIME_OMIT                           = 1073741822
   641  	X_ASM_GENERIC_ERRNO_BASE_H           = 0
   642  	X_ASM_GENERIC_ERRNO_H                = 0
   643  	X_BITS_ERRNO_H                       = 1
   644  	X_BITS_STAT_H                        = 1
   645  	X_BITS_STDIO_LIM_H                   = 1
   646  	X_ERRNO_H                            = 1
   647  	X_FCNTL_H                            = 1
   648  	X_IOFBF                              = 0
   649  	X_IOLBF                              = 1
   650  	X_IONBF                              = 2
   651  	X_IO_EOF_SEEN                        = 0x0010
   652  	X_IO_ERR_SEEN                        = 0x0020
   653  	X_IO_USER_LOCK                       = 0x8000
   654  	X_LARGEFILE_SOURCE                   = 1
   655  	X_MKNOD_VER                          = 1
   656  	X_MKNOD_VER_LINUX                    = 1
   657  	X_MKNOD_VER_SVR4                     = 2
   658  	X_STATBUF_ST_BLKSIZE                 = 0
   659  	X_STATBUF_ST_NSEC                    = 0
   660  	X_STATBUF_ST_RDEV                    = 0
   661  	X_STAT_VER                           = 3
   662  	X_STAT_VER_KERNEL                    = 1
   663  	X_STAT_VER_LINUX                     = 3
   664  	X_STAT_VER_LINUX_OLD                 = 1
   665  	X_STAT_VER_SVR4                      = 2
   666  	X_STDIO_H                            = 1
   667  	ENOUGH                               = 1444
   668  	ENOUGH_DISTS                         = 592
   669  	ENOUGH_LENS                          = 852
   670  	GUNZIP                               = 0
   671  	MAXBITS                              = 15
   672  	DIST_CODE_LEN                        = 512
   673  	END_BLOCK                            = 256
   674  	MAX_BL_BITS                          = 7
   675  	REPZ_11_138                          = 18
   676  	REPZ_3_10                            = 17
   677  	REP_3_6                              = 16
   678  	SMALLEST                             = 1
   679  )
   680  
   681  // Get the `_PC_*' symbols for the NAME argument to `pathconf' and `fpathconf';
   682  //    the `_SC_*' symbols for the NAME argument to `sysconf';
   683  //    and the `_CS_*' symbols for the NAME argument to `confstr'.
   684  // `sysconf', `pathconf', and `confstr' NAME values.  Generic version.
   685  //    Copyright (C) 1993-2020 Free Software Foundation, Inc.
   686  //    This file is part of the GNU C Library.
   687  //
   688  //    The GNU C Library is free software; you can redistribute it and/or
   689  //    modify it under the terms of the GNU Lesser General Public
   690  //    License as published by the Free Software Foundation; either
   691  //    version 2.1 of the License, or (at your option) any later version.
   692  //
   693  //    The GNU C Library is distributed in the hope that it will be useful,
   694  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
   695  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   696  //    Lesser General Public License for more details.
   697  //
   698  //    You should have received a copy of the GNU Lesser General Public
   699  //    License along with the GNU C Library; if not, see
   700  //    <https://www.gnu.org/licenses/>.
   701  
   702  // Values for the NAME argument to `pathconf' and `fpathconf'.
   703  const ( /* confname.h:24:1: */
   704  	X_PC_LINK_MAX           = 0
   705  	X_PC_MAX_CANON          = 1
   706  	X_PC_MAX_INPUT          = 2
   707  	X_PC_NAME_MAX           = 3
   708  	X_PC_PATH_MAX           = 4
   709  	X_PC_PIPE_BUF           = 5
   710  	X_PC_CHOWN_RESTRICTED   = 6
   711  	X_PC_NO_TRUNC           = 7
   712  	X_PC_VDISABLE           = 8
   713  	X_PC_SYNC_IO            = 9
   714  	X_PC_ASYNC_IO           = 10
   715  	X_PC_PRIO_IO            = 11
   716  	X_PC_SOCK_MAXBUF        = 12
   717  	X_PC_FILESIZEBITS       = 13
   718  	X_PC_REC_INCR_XFER_SIZE = 14
   719  	X_PC_REC_MAX_XFER_SIZE  = 15
   720  	X_PC_REC_MIN_XFER_SIZE  = 16
   721  	X_PC_REC_XFER_ALIGN     = 17
   722  	X_PC_ALLOC_SIZE_MIN     = 18
   723  	X_PC_SYMLINK_MAX        = 19
   724  	X_PC_2_SYMLINKS         = 20
   725  )
   726  
   727  // Values for the NAME argument to `confstr'.
   728  const ( /* confname.h:533:1: */
   729  	X_CS_PATH = 0 // The default search path.
   730  
   731  	X_CS_V6_WIDTH_RESTRICTED_ENVS = 1
   732  
   733  	X_CS_GNU_LIBC_VERSION       = 2
   734  	X_CS_GNU_LIBPTHREAD_VERSION = 3
   735  
   736  	X_CS_V5_WIDTH_RESTRICTED_ENVS = 4
   737  
   738  	X_CS_V7_WIDTH_RESTRICTED_ENVS = 5
   739  
   740  	X_CS_LFS_CFLAGS      = 1000
   741  	X_CS_LFS_LDFLAGS     = 1001
   742  	X_CS_LFS_LIBS        = 1002
   743  	X_CS_LFS_LINTFLAGS   = 1003
   744  	X_CS_LFS64_CFLAGS    = 1004
   745  	X_CS_LFS64_LDFLAGS   = 1005
   746  	X_CS_LFS64_LIBS      = 1006
   747  	X_CS_LFS64_LINTFLAGS = 1007
   748  
   749  	X_CS_XBS5_ILP32_OFF32_CFLAGS     = 1100
   750  	X_CS_XBS5_ILP32_OFF32_LDFLAGS    = 1101
   751  	X_CS_XBS5_ILP32_OFF32_LIBS       = 1102
   752  	X_CS_XBS5_ILP32_OFF32_LINTFLAGS  = 1103
   753  	X_CS_XBS5_ILP32_OFFBIG_CFLAGS    = 1104
   754  	X_CS_XBS5_ILP32_OFFBIG_LDFLAGS   = 1105
   755  	X_CS_XBS5_ILP32_OFFBIG_LIBS      = 1106
   756  	X_CS_XBS5_ILP32_OFFBIG_LINTFLAGS = 1107
   757  	X_CS_XBS5_LP64_OFF64_CFLAGS      = 1108
   758  	X_CS_XBS5_LP64_OFF64_LDFLAGS     = 1109
   759  	X_CS_XBS5_LP64_OFF64_LIBS        = 1110
   760  	X_CS_XBS5_LP64_OFF64_LINTFLAGS   = 1111
   761  	X_CS_XBS5_LPBIG_OFFBIG_CFLAGS    = 1112
   762  	X_CS_XBS5_LPBIG_OFFBIG_LDFLAGS   = 1113
   763  	X_CS_XBS5_LPBIG_OFFBIG_LIBS      = 1114
   764  	X_CS_XBS5_LPBIG_OFFBIG_LINTFLAGS = 1115
   765  
   766  	X_CS_POSIX_V6_ILP32_OFF32_CFLAGS     = 1116
   767  	X_CS_POSIX_V6_ILP32_OFF32_LDFLAGS    = 1117
   768  	X_CS_POSIX_V6_ILP32_OFF32_LIBS       = 1118
   769  	X_CS_POSIX_V6_ILP32_OFF32_LINTFLAGS  = 1119
   770  	X_CS_POSIX_V6_ILP32_OFFBIG_CFLAGS    = 1120
   771  	X_CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS   = 1121
   772  	X_CS_POSIX_V6_ILP32_OFFBIG_LIBS      = 1122
   773  	X_CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS = 1123
   774  	X_CS_POSIX_V6_LP64_OFF64_CFLAGS      = 1124
   775  	X_CS_POSIX_V6_LP64_OFF64_LDFLAGS     = 1125
   776  	X_CS_POSIX_V6_LP64_OFF64_LIBS        = 1126
   777  	X_CS_POSIX_V6_LP64_OFF64_LINTFLAGS   = 1127
   778  	X_CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS    = 1128
   779  	X_CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS   = 1129
   780  	X_CS_POSIX_V6_LPBIG_OFFBIG_LIBS      = 1130
   781  	X_CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS = 1131
   782  
   783  	X_CS_POSIX_V7_ILP32_OFF32_CFLAGS     = 1132
   784  	X_CS_POSIX_V7_ILP32_OFF32_LDFLAGS    = 1133
   785  	X_CS_POSIX_V7_ILP32_OFF32_LIBS       = 1134
   786  	X_CS_POSIX_V7_ILP32_OFF32_LINTFLAGS  = 1135
   787  	X_CS_POSIX_V7_ILP32_OFFBIG_CFLAGS    = 1136
   788  	X_CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS   = 1137
   789  	X_CS_POSIX_V7_ILP32_OFFBIG_LIBS      = 1138
   790  	X_CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS = 1139
   791  	X_CS_POSIX_V7_LP64_OFF64_CFLAGS      = 1140
   792  	X_CS_POSIX_V7_LP64_OFF64_LDFLAGS     = 1141
   793  	X_CS_POSIX_V7_LP64_OFF64_LIBS        = 1142
   794  	X_CS_POSIX_V7_LP64_OFF64_LINTFLAGS   = 1143
   795  	X_CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS    = 1144
   796  	X_CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS   = 1145
   797  	X_CS_POSIX_V7_LPBIG_OFFBIG_LIBS      = 1146
   798  	X_CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS = 1147
   799  
   800  	X_CS_V6_ENV = 1148
   801  	X_CS_V7_ENV = 1149
   802  )
   803  
   804  // Values for the argument to `sysconf'.
   805  const ( /* confname.h:71:1: */
   806  	X_SC_ARG_MAX               = 0
   807  	X_SC_CHILD_MAX             = 1
   808  	X_SC_CLK_TCK               = 2
   809  	X_SC_NGROUPS_MAX           = 3
   810  	X_SC_OPEN_MAX              = 4
   811  	X_SC_STREAM_MAX            = 5
   812  	X_SC_TZNAME_MAX            = 6
   813  	X_SC_JOB_CONTROL           = 7
   814  	X_SC_SAVED_IDS             = 8
   815  	X_SC_REALTIME_SIGNALS      = 9
   816  	X_SC_PRIORITY_SCHEDULING   = 10
   817  	X_SC_TIMERS                = 11
   818  	X_SC_ASYNCHRONOUS_IO       = 12
   819  	X_SC_PRIORITIZED_IO        = 13
   820  	X_SC_SYNCHRONIZED_IO       = 14
   821  	X_SC_FSYNC                 = 15
   822  	X_SC_MAPPED_FILES          = 16
   823  	X_SC_MEMLOCK               = 17
   824  	X_SC_MEMLOCK_RANGE         = 18
   825  	X_SC_MEMORY_PROTECTION     = 19
   826  	X_SC_MESSAGE_PASSING       = 20
   827  	X_SC_SEMAPHORES            = 21
   828  	X_SC_SHARED_MEMORY_OBJECTS = 22
   829  	X_SC_AIO_LISTIO_MAX        = 23
   830  	X_SC_AIO_MAX               = 24
   831  	X_SC_AIO_PRIO_DELTA_MAX    = 25
   832  	X_SC_DELAYTIMER_MAX        = 26
   833  	X_SC_MQ_OPEN_MAX           = 27
   834  	X_SC_MQ_PRIO_MAX           = 28
   835  	X_SC_VERSION               = 29
   836  	X_SC_PAGESIZE              = 30
   837  	X_SC_RTSIG_MAX             = 31
   838  	X_SC_SEM_NSEMS_MAX         = 32
   839  	X_SC_SEM_VALUE_MAX         = 33
   840  	X_SC_SIGQUEUE_MAX          = 34
   841  	X_SC_TIMER_MAX             = 35
   842  
   843  	// Values for the argument to `sysconf'
   844  	//        corresponding to _POSIX2_* symbols.
   845  	X_SC_BC_BASE_MAX        = 36
   846  	X_SC_BC_DIM_MAX         = 37
   847  	X_SC_BC_SCALE_MAX       = 38
   848  	X_SC_BC_STRING_MAX      = 39
   849  	X_SC_COLL_WEIGHTS_MAX   = 40
   850  	X_SC_EQUIV_CLASS_MAX    = 41
   851  	X_SC_EXPR_NEST_MAX      = 42
   852  	X_SC_LINE_MAX           = 43
   853  	X_SC_RE_DUP_MAX         = 44
   854  	X_SC_CHARCLASS_NAME_MAX = 45
   855  
   856  	X_SC_2_VERSION   = 46
   857  	X_SC_2_C_BIND    = 47
   858  	X_SC_2_C_DEV     = 48
   859  	X_SC_2_FORT_DEV  = 49
   860  	X_SC_2_FORT_RUN  = 50
   861  	X_SC_2_SW_DEV    = 51
   862  	X_SC_2_LOCALEDEF = 52
   863  
   864  	X_SC_PII                 = 53
   865  	X_SC_PII_XTI             = 54
   866  	X_SC_PII_SOCKET          = 55
   867  	X_SC_PII_INTERNET        = 56
   868  	X_SC_PII_OSI             = 57
   869  	X_SC_POLL                = 58
   870  	X_SC_SELECT              = 59
   871  	X_SC_UIO_MAXIOV          = 60
   872  	X_SC_IOV_MAX             = 60
   873  	X_SC_PII_INTERNET_STREAM = 61
   874  	X_SC_PII_INTERNET_DGRAM  = 62
   875  	X_SC_PII_OSI_COTS        = 63
   876  	X_SC_PII_OSI_CLTS        = 64
   877  	X_SC_PII_OSI_M           = 65
   878  	X_SC_T_IOV_MAX           = 66
   879  
   880  	// Values according to POSIX 1003.1c (POSIX threads).
   881  	X_SC_THREADS                      = 67
   882  	X_SC_THREAD_SAFE_FUNCTIONS        = 68
   883  	X_SC_GETGR_R_SIZE_MAX             = 69
   884  	X_SC_GETPW_R_SIZE_MAX             = 70
   885  	X_SC_LOGIN_NAME_MAX               = 71
   886  	X_SC_TTY_NAME_MAX                 = 72
   887  	X_SC_THREAD_DESTRUCTOR_ITERATIONS = 73
   888  	X_SC_THREAD_KEYS_MAX              = 74
   889  	X_SC_THREAD_STACK_MIN             = 75
   890  	X_SC_THREAD_THREADS_MAX           = 76
   891  	X_SC_THREAD_ATTR_STACKADDR        = 77
   892  	X_SC_THREAD_ATTR_STACKSIZE        = 78
   893  	X_SC_THREAD_PRIORITY_SCHEDULING   = 79
   894  	X_SC_THREAD_PRIO_INHERIT          = 80
   895  	X_SC_THREAD_PRIO_PROTECT          = 81
   896  	X_SC_THREAD_PROCESS_SHARED        = 82
   897  
   898  	X_SC_NPROCESSORS_CONF = 83
   899  	X_SC_NPROCESSORS_ONLN = 84
   900  	X_SC_PHYS_PAGES       = 85
   901  	X_SC_AVPHYS_PAGES     = 86
   902  	X_SC_ATEXIT_MAX       = 87
   903  	X_SC_PASS_MAX         = 88
   904  
   905  	X_SC_XOPEN_VERSION     = 89
   906  	X_SC_XOPEN_XCU_VERSION = 90
   907  	X_SC_XOPEN_UNIX        = 91
   908  	X_SC_XOPEN_CRYPT       = 92
   909  	X_SC_XOPEN_ENH_I18N    = 93
   910  	X_SC_XOPEN_SHM         = 94
   911  
   912  	X_SC_2_CHAR_TERM = 95
   913  	X_SC_2_C_VERSION = 96
   914  	X_SC_2_UPE       = 97
   915  
   916  	X_SC_XOPEN_XPG2 = 98
   917  	X_SC_XOPEN_XPG3 = 99
   918  	X_SC_XOPEN_XPG4 = 100
   919  
   920  	X_SC_CHAR_BIT   = 101
   921  	X_SC_CHAR_MAX   = 102
   922  	X_SC_CHAR_MIN   = 103
   923  	X_SC_INT_MAX    = 104
   924  	X_SC_INT_MIN    = 105
   925  	X_SC_LONG_BIT   = 106
   926  	X_SC_WORD_BIT   = 107
   927  	X_SC_MB_LEN_MAX = 108
   928  	X_SC_NZERO      = 109
   929  	X_SC_SSIZE_MAX  = 110
   930  	X_SC_SCHAR_MAX  = 111
   931  	X_SC_SCHAR_MIN  = 112
   932  	X_SC_SHRT_MAX   = 113
   933  	X_SC_SHRT_MIN   = 114
   934  	X_SC_UCHAR_MAX  = 115
   935  	X_SC_UINT_MAX   = 116
   936  	X_SC_ULONG_MAX  = 117
   937  	X_SC_USHRT_MAX  = 118
   938  
   939  	X_SC_NL_ARGMAX  = 119
   940  	X_SC_NL_LANGMAX = 120
   941  	X_SC_NL_MSGMAX  = 121
   942  	X_SC_NL_NMAX    = 122
   943  	X_SC_NL_SETMAX  = 123
   944  	X_SC_NL_TEXTMAX = 124
   945  
   946  	X_SC_XBS5_ILP32_OFF32  = 125
   947  	X_SC_XBS5_ILP32_OFFBIG = 126
   948  	X_SC_XBS5_LP64_OFF64   = 127
   949  	X_SC_XBS5_LPBIG_OFFBIG = 128
   950  
   951  	X_SC_XOPEN_LEGACY           = 129
   952  	X_SC_XOPEN_REALTIME         = 130
   953  	X_SC_XOPEN_REALTIME_THREADS = 131
   954  
   955  	X_SC_ADVISORY_INFO          = 132
   956  	X_SC_BARRIERS               = 133
   957  	X_SC_BASE                   = 134
   958  	X_SC_C_LANG_SUPPORT         = 135
   959  	X_SC_C_LANG_SUPPORT_R       = 136
   960  	X_SC_CLOCK_SELECTION        = 137
   961  	X_SC_CPUTIME                = 138
   962  	X_SC_THREAD_CPUTIME         = 139
   963  	X_SC_DEVICE_IO              = 140
   964  	X_SC_DEVICE_SPECIFIC        = 141
   965  	X_SC_DEVICE_SPECIFIC_R      = 142
   966  	X_SC_FD_MGMT                = 143
   967  	X_SC_FIFO                   = 144
   968  	X_SC_PIPE                   = 145
   969  	X_SC_FILE_ATTRIBUTES        = 146
   970  	X_SC_FILE_LOCKING           = 147
   971  	X_SC_FILE_SYSTEM            = 148
   972  	X_SC_MONOTONIC_CLOCK        = 149
   973  	X_SC_MULTI_PROCESS          = 150
   974  	X_SC_SINGLE_PROCESS         = 151
   975  	X_SC_NETWORKING             = 152
   976  	X_SC_READER_WRITER_LOCKS    = 153
   977  	X_SC_SPIN_LOCKS             = 154
   978  	X_SC_REGEXP                 = 155
   979  	X_SC_REGEX_VERSION          = 156
   980  	X_SC_SHELL                  = 157
   981  	X_SC_SIGNALS                = 158
   982  	X_SC_SPAWN                  = 159
   983  	X_SC_SPORADIC_SERVER        = 160
   984  	X_SC_THREAD_SPORADIC_SERVER = 161
   985  	X_SC_SYSTEM_DATABASE        = 162
   986  	X_SC_SYSTEM_DATABASE_R      = 163
   987  	X_SC_TIMEOUTS               = 164
   988  	X_SC_TYPED_MEMORY_OBJECTS   = 165
   989  	X_SC_USER_GROUPS            = 166
   990  	X_SC_USER_GROUPS_R          = 167
   991  	X_SC_2_PBS                  = 168
   992  	X_SC_2_PBS_ACCOUNTING       = 169
   993  	X_SC_2_PBS_LOCATE           = 170
   994  	X_SC_2_PBS_MESSAGE          = 171
   995  	X_SC_2_PBS_TRACK            = 172
   996  	X_SC_SYMLOOP_MAX            = 173
   997  	X_SC_STREAMS                = 174
   998  	X_SC_2_PBS_CHECKPOINT       = 175
   999  
  1000  	X_SC_V6_ILP32_OFF32  = 176
  1001  	X_SC_V6_ILP32_OFFBIG = 177
  1002  	X_SC_V6_LP64_OFF64   = 178
  1003  	X_SC_V6_LPBIG_OFFBIG = 179
  1004  
  1005  	X_SC_HOST_NAME_MAX      = 180
  1006  	X_SC_TRACE              = 181
  1007  	X_SC_TRACE_EVENT_FILTER = 182
  1008  	X_SC_TRACE_INHERIT      = 183
  1009  	X_SC_TRACE_LOG          = 184
  1010  
  1011  	X_SC_LEVEL1_ICACHE_SIZE     = 185
  1012  	X_SC_LEVEL1_ICACHE_ASSOC    = 186
  1013  	X_SC_LEVEL1_ICACHE_LINESIZE = 187
  1014  	X_SC_LEVEL1_DCACHE_SIZE     = 188
  1015  	X_SC_LEVEL1_DCACHE_ASSOC    = 189
  1016  	X_SC_LEVEL1_DCACHE_LINESIZE = 190
  1017  	X_SC_LEVEL2_CACHE_SIZE      = 191
  1018  	X_SC_LEVEL2_CACHE_ASSOC     = 192
  1019  	X_SC_LEVEL2_CACHE_LINESIZE  = 193
  1020  	X_SC_LEVEL3_CACHE_SIZE      = 194
  1021  	X_SC_LEVEL3_CACHE_ASSOC     = 195
  1022  	X_SC_LEVEL3_CACHE_LINESIZE  = 196
  1023  	X_SC_LEVEL4_CACHE_SIZE      = 197
  1024  	X_SC_LEVEL4_CACHE_ASSOC     = 198
  1025  	X_SC_LEVEL4_CACHE_LINESIZE  = 199
  1026  	// Leave room here, maybe we need a few more cache levels some day.
  1027  
  1028  	X_SC_IPV6        = 235
  1029  	X_SC_RAW_SOCKETS = 236
  1030  
  1031  	X_SC_V7_ILP32_OFF32  = 237
  1032  	X_SC_V7_ILP32_OFFBIG = 238
  1033  	X_SC_V7_LP64_OFF64   = 239
  1034  	X_SC_V7_LPBIG_OFFBIG = 240
  1035  
  1036  	X_SC_SS_REPL_MAX = 241
  1037  
  1038  	X_SC_TRACE_EVENT_NAME_MAX = 242
  1039  	X_SC_TRACE_NAME_MAX       = 243
  1040  	X_SC_TRACE_SYS_MAX        = 244
  1041  	X_SC_TRACE_USER_EVENT_MAX = 245
  1042  
  1043  	X_SC_XOPEN_STREAMS = 246
  1044  
  1045  	X_SC_THREAD_ROBUST_PRIO_INHERIT = 247
  1046  	X_SC_THREAD_ROBUST_PRIO_PROTECT = 248
  1047  )
  1048  
  1049  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1050  //    This file is part of the GNU C Library.
  1051  //
  1052  //    The GNU C Library is free software; you can redistribute it and/or
  1053  //    modify it under the terms of the GNU Lesser General Public
  1054  //    License as published by the Free Software Foundation; either
  1055  //    version 2.1 of the License, or (at your option) any later version.
  1056  //
  1057  //    The GNU C Library is distributed in the hope that it will be useful,
  1058  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1059  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1060  //    Lesser General Public License for more details.
  1061  //
  1062  //    You should have received a copy of the GNU Lesser General Public
  1063  //    License along with the GNU C Library; if not, see
  1064  //    <https://www.gnu.org/licenses/>.
  1065  
  1066  //	ISO C99 Standard: 7.20 General utilities	<stdlib.h>
  1067  
  1068  // Handle feature test macros at the start of a header.
  1069  //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  1070  //    This file is part of the GNU C Library.
  1071  //
  1072  //    The GNU C Library is free software; you can redistribute it and/or
  1073  //    modify it under the terms of the GNU Lesser General Public
  1074  //    License as published by the Free Software Foundation; either
  1075  //    version 2.1 of the License, or (at your option) any later version.
  1076  //
  1077  //    The GNU C Library is distributed in the hope that it will be useful,
  1078  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1079  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1080  //    Lesser General Public License for more details.
  1081  //
  1082  //    You should have received a copy of the GNU Lesser General Public
  1083  //    License along with the GNU C Library; if not, see
  1084  //    <https://www.gnu.org/licenses/>.
  1085  
  1086  // This header is internal to glibc and should not be included outside
  1087  //    of glibc headers.  Headers including it must define
  1088  //    __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first.  This header
  1089  //    cannot have multiple include guards because ISO C feature test
  1090  //    macros depend on the definition of the macro when an affected
  1091  //    header is included, not when the first system header is
  1092  //    included.
  1093  
  1094  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1095  //    This file is part of the GNU C Library.
  1096  //
  1097  //    The GNU C Library is free software; you can redistribute it and/or
  1098  //    modify it under the terms of the GNU Lesser General Public
  1099  //    License as published by the Free Software Foundation; either
  1100  //    version 2.1 of the License, or (at your option) any later version.
  1101  //
  1102  //    The GNU C Library is distributed in the hope that it will be useful,
  1103  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1104  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1105  //    Lesser General Public License for more details.
  1106  //
  1107  //    You should have received a copy of the GNU Lesser General Public
  1108  //    License along with the GNU C Library; if not, see
  1109  //    <https://www.gnu.org/licenses/>.
  1110  
  1111  // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
  1112  //    macro.
  1113  
  1114  // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
  1115  //    macro.  Most but not all symbols enabled by that macro in TS
  1116  //    18661-1 are enabled unconditionally in C2X; the symbols in Annex F
  1117  //    still require that macro in C2X.
  1118  
  1119  // ISO/IEC TS 18661-4:2015 defines the
  1120  //    __STDC_WANT_IEC_60559_FUNCS_EXT__ macro.  Other than the reduction
  1121  //    functions, the symbols from this TS are enabled unconditionally in
  1122  //    C2X.
  1123  
  1124  // ISO/IEC TS 18661-3:2015 defines the
  1125  //    __STDC_WANT_IEC_60559_TYPES_EXT__ macro.
  1126  
  1127  // Get size_t, wchar_t and NULL from <stddef.h>.
  1128  // Copyright (C) 1989-2020 Free Software Foundation, Inc.
  1129  //
  1130  // This file is part of GCC.
  1131  //
  1132  // GCC is free software; you can redistribute it and/or modify
  1133  // it under the terms of the GNU General Public License as published by
  1134  // the Free Software Foundation; either version 3, or (at your option)
  1135  // any later version.
  1136  //
  1137  // GCC is distributed in the hope that it will be useful,
  1138  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  1139  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  1140  // GNU General Public License for more details.
  1141  //
  1142  // Under Section 7 of GPL version 3, you are granted additional
  1143  // permissions described in the GCC Runtime Library Exception, version
  1144  // 3.1, as published by the Free Software Foundation.
  1145  //
  1146  // You should have received a copy of the GNU General Public License and
  1147  // a copy of the GCC Runtime Library Exception along with this program;
  1148  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  1149  // <http://www.gnu.org/licenses/>.
  1150  
  1151  // ISO C Standard:  7.17  Common definitions  <stddef.h>
  1152  
  1153  // Any one of these symbols __need_* means that GNU libc
  1154  //    wants us just to define one data type.  So don't define
  1155  //    the symbols that indicate this file's entire job has been done.
  1156  
  1157  // This avoids lossage on SunOS but only if stdtypes.h comes first.
  1158  //    There's no way to win with the other order!  Sun lossage.
  1159  
  1160  // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
  1161  //    Just ignore it.
  1162  
  1163  // On VxWorks, <type/vxTypesBase.h> may have defined macros like
  1164  //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
  1165  //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
  1166  //    not defined, and so that defining this macro defines _GCC_SIZE_T.
  1167  //    If we find that the macros are still defined at this point, we must
  1168  //    invoke them so that the type is defined as expected.
  1169  
  1170  // In case nobody has defined these types, but we aren't running under
  1171  //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
  1172  //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
  1173  //    parts of GCC is compiled by an older compiler, that actually
  1174  //    include gstddef.h, such as collect2.
  1175  
  1176  // Signed type of difference of two pointers.
  1177  
  1178  // Define this type if we are doing the whole job,
  1179  //    or if we want this type in particular.
  1180  
  1181  // If this symbol has done its job, get rid of it.
  1182  
  1183  // Unsigned type of `sizeof' something.
  1184  
  1185  // Define this type if we are doing the whole job,
  1186  //    or if we want this type in particular.
  1187  
  1188  // Wide character type.
  1189  //    Locale-writers should change this as necessary to
  1190  //    be big enough to hold unique values not between 0 and 127,
  1191  //    and not (wchar_t) -1, for each defined multibyte character.
  1192  
  1193  // Define this type if we are doing the whole job,
  1194  //    or if we want this type in particular.
  1195  
  1196  // A null pointer constant.
  1197  
  1198  // Offset of member MEMBER in a struct of type TYPE.
  1199  
  1200  // XPG requires a few symbols from <sys/wait.h> being defined.
  1201  // Definitions of flag bits for `waitpid' et al.
  1202  //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  1203  //    This file is part of the GNU C Library.
  1204  //
  1205  //    The GNU C Library is free software; you can redistribute it and/or
  1206  //    modify it under the terms of the GNU Lesser General Public
  1207  //    License as published by the Free Software Foundation; either
  1208  //    version 2.1 of the License, or (at your option) any later version.
  1209  //
  1210  //    The GNU C Library is distributed in the hope that it will be useful,
  1211  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1212  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1213  //    Lesser General Public License for more details.
  1214  //
  1215  //    You should have received a copy of the GNU Lesser General Public
  1216  //    License along with the GNU C Library; if not, see
  1217  //    <https://www.gnu.org/licenses/>.
  1218  
  1219  // Bits in the third argument to `waitpid'.
  1220  
  1221  // Bits in the fourth argument to `waitid'.
  1222  
  1223  // The following values are used by the `waitid' function.
  1224  
  1225  // The Linux kernel defines these bare, rather than an enum,
  1226  //    which causes a conflict if the include order is reversed.
  1227  
  1228  const ( /* waitflags.h:52:1: */
  1229  	P_ALL  = 0 // Wait for any child.
  1230  	P_PID  = 1 // Wait for specified process.
  1231  	P_PGID = 2
  1232  )
  1233  
  1234  //
  1235  //   If you use the zlib library in a product, an acknowledgment is welcome
  1236  //   in the documentation of your product. If for some reason you cannot
  1237  //   include such an acknowledgment, I would appreciate that you keep this
  1238  //   copyright string in the executable of your product.
  1239  //
  1240  
  1241  // ===========================================================================
  1242  //  Function prototypes.
  1243  const ( /* deflate.c:66:1: */
  1244  	Need_more      = 0 // block not completed, need more input or more output
  1245  	Block_done     = 1 // block flush performed
  1246  	Finish_started = 2 // finish started, need only more output at next deflate
  1247  	Finish_done    = 3
  1248  )
  1249  
  1250  // inflate.h -- internal inflate state definition
  1251  // Copyright (C) 1995-2016 Mark Adler
  1252  // For conditions of distribution and use, see copyright notice in zlib.h
  1253  
  1254  // WARNING: this file should *not* be used by applications. It is
  1255  //    part of the implementation of the compression library and is
  1256  //    subject to change. Applications should only use zlib.h.
  1257  //
  1258  
  1259  // define NO_GZIP when compiling if you want to disable gzip header and
  1260  //    trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
  1261  //    the crc code when it is not needed.  For shared libraries, gzip decoding
  1262  //    should be left enabled.
  1263  
  1264  // Possible inflate modes between inflate() calls
  1265  const ( /* inflate.h:20:1: */
  1266  	HEAD     = 16180 // i: waiting for magic header
  1267  	FLAGS    = 16181 // i: waiting for method and flags (gzip)
  1268  	TIME     = 16182 // i: waiting for modification time (gzip)
  1269  	OS       = 16183 // i: waiting for extra flags and operating system (gzip)
  1270  	EXLEN    = 16184 // i: waiting for extra length (gzip)
  1271  	EXTRA    = 16185 // i: waiting for extra bytes (gzip)
  1272  	NAME     = 16186 // i: waiting for end of file name (gzip)
  1273  	COMMENT  = 16187 // i: waiting for end of comment (gzip)
  1274  	HCRC     = 16188 // i: waiting for header crc (gzip)
  1275  	DICTID   = 16189 // i: waiting for dictionary check value
  1276  	DICT     = 16190 // waiting for inflateSetDictionary() call
  1277  	TYPE     = 16191 // i: waiting for type bits, including last-flag bit
  1278  	TYPEDO   = 16192 // i: same, but skip check to exit inflate on new block
  1279  	STORED   = 16193 // i: waiting for stored size (length and complement)
  1280  	COPY_    = 16194 // i/o: same as COPY below, but only first time in
  1281  	COPY     = 16195 // i/o: waiting for input or output to copy stored block
  1282  	TABLE    = 16196 // i: waiting for dynamic block table lengths
  1283  	LENLENS  = 16197 // i: waiting for code length code lengths
  1284  	CODELENS = 16198 // i: waiting for length/lit and distance code lengths
  1285  	LEN_     = 16199 // i: same as LEN below, but only first time in
  1286  	LEN      = 16200 // i: waiting for length/lit/eob code
  1287  	LENEXT   = 16201 // i: waiting for length extra bits
  1288  	DIST     = 16202 // i: waiting for distance code
  1289  	DISTEXT  = 16203 // i: waiting for distance extra bits
  1290  	MATCH    = 16204 // o: waiting for output space to copy string
  1291  	LIT      = 16205 // o: waiting for output space to write literal
  1292  	CHECK    = 16206 // i: waiting for 32-bit check value
  1293  	LENGTH   = 16207 // i: waiting for 32-bit length (gzip)
  1294  	DONE     = 16208 // finished check, done -- remain here until reset
  1295  	BAD      = 16209 // got a data error -- remain here until reset
  1296  	MEM      = 16210 // got an inflate() memory error -- remain here until reset
  1297  	SYNC     = 16211
  1298  )
  1299  
  1300  // op values as set by inflate_table():
  1301  //     00000000 - literal
  1302  //     0000tttt - table link, tttt != 0 is the number of table index bits
  1303  //     0001eeee - length or distance, eeee is the number of extra bits
  1304  //     01100000 - end of block
  1305  //     01000000 - invalid code
  1306  //
  1307  
  1308  // Maximum size of the dynamic table.  The maximum number of code structures is
  1309  //    1444, which is the sum of 852 for literal/length codes and 592 for distance
  1310  //    codes.  These values were found by exhaustive searches using the program
  1311  //    examples/enough.c found in the zlib distribtution.  The arguments to that
  1312  //    program are the number of symbols, the initial root table size, and the
  1313  //    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
  1314  //    returns returns 852, and "enough 30 6 15" for distance codes returns 592.
  1315  //    The initial root table size (9 or 6) is found in the fifth argument of the
  1316  //    inflate_table() calls in inflate.c and infback.c.  If the root table size is
  1317  //    changed, then these maximum sizes would be need to be recalculated and
  1318  //    updated.
  1319  
  1320  // Type of code to build for inflate_table()
  1321  const ( /* inftrees.h:54:1: */
  1322  	CODES = 0
  1323  	LENS  = 1
  1324  	DISTS = 2
  1325  )
  1326  
  1327  type Ptrdiff_t = int32 /* <builtin>:3:26 */
  1328  
  1329  type Size_t = uint32 /* <builtin>:9:23 */
  1330  
  1331  type Wchar_t = uint32 /* <builtin>:15:24 */
  1332  
  1333  type X__builtin_va_list = uintptr /* <builtin>:46:14 */
  1334  type X__float128 = float64        /* <builtin>:47:21 */
  1335  
  1336  // A null pointer constant.
  1337  
  1338  // Offset of member MEMBER in a struct of type TYPE.
  1339  
  1340  // Type whose alignment is supported in every context and is at least
  1341  //    as great as that of any standard type not using alignment
  1342  //    specifiers.
  1343  type Max_align_t = struct {
  1344  	F__max_align_ll int64
  1345  	F__max_align_ld float64
  1346  } /* stddef.h:426:3 */
  1347  
  1348  type Z_size_t = Size_t /* zconf.h:248:21 */
  1349  
  1350  // Maximum value for memLevel in deflateInit2
  1351  
  1352  // Maximum value for windowBits in deflateInit2 and inflateInit2.
  1353  // WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
  1354  // created by gzip. (Files created by minigzip can still be extracted by
  1355  // gzip.)
  1356  
  1357  // The memory requirements for deflate are (in bytes):
  1358  //             (1 << (windowBits+2)) +  (1 << (memLevel+9))
  1359  //  that is: 128K for windowBits=15  +  128K for memLevel = 8  (default values)
  1360  //  plus a few kilobytes for small objects. For example, if you want to reduce
  1361  //  the default memory requirements from 256K to 128K, compile with
  1362  //      make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
  1363  //  Of course this will generally degrade compression (there's no free lunch).
  1364  //
  1365  //    The memory requirements for inflate are (in bytes) 1 << windowBits
  1366  //  that is, 32K for windowBits=15 (default value) plus about 7 kilobytes
  1367  //  for small objects.
  1368  
  1369  // Type declarations
  1370  
  1371  // The following definitions for FAR are needed only for MSDOS mixed
  1372  // model programming (small or medium model with some far allocations).
  1373  // This was tested only with MSC; for other MSDOS compilers you may have
  1374  // to define NO_MEMCPY in zutil.h.  If you don't need the mixed model,
  1375  // just define FAR to be empty.
  1376  
  1377  type Byte = uint8   /* zconf.h:391:24 */ // 8 bits
  1378  type UInt = uint32  /* zconf.h:393:24 */ // 16 bits or more
  1379  type ULong = uint32 /* zconf.h:394:24 */ // 32 bits or more
  1380  
  1381  type Bytef = Byte   /* zconf.h:400:22 */
  1382  type Charf = uint8  /* zconf.h:402:19 */
  1383  type Intf = int32   /* zconf.h:403:19 */
  1384  type UIntf = UInt   /* zconf.h:404:19 */
  1385  type ULongf = ULong /* zconf.h:405:19 */
  1386  
  1387  type Voidpc = uintptr /* zconf.h:408:23 */
  1388  type Voidpf = uintptr /* zconf.h:409:23 */
  1389  type Voidp = uintptr  /* zconf.h:410:23 */
  1390  
  1391  // Copyright (C) 1992-2020 Free Software Foundation, Inc.
  1392  //
  1393  // This file is part of GCC.
  1394  //
  1395  // GCC is free software; you can redistribute it and/or modify it under
  1396  // the terms of the GNU General Public License as published by the Free
  1397  // Software Foundation; either version 3, or (at your option) any later
  1398  // version.
  1399  //
  1400  // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  1401  // WARRANTY; without even the implied warranty of MERCHANTABILITY or
  1402  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  1403  // for more details.
  1404  //
  1405  // Under Section 7 of GPL version 3, you are granted additional
  1406  // permissions described in the GCC Runtime Library Exception, version
  1407  // 3.1, as published by the Free Software Foundation.
  1408  //
  1409  // You should have received a copy of the GNU General Public License and
  1410  // a copy of the GCC Runtime Library Exception along with this program;
  1411  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  1412  // <http://www.gnu.org/licenses/>.
  1413  
  1414  // This administrivia gets added to the beginning of limits.h
  1415  //    if the system has its own version of limits.h.
  1416  
  1417  // We use _GCC_LIMITS_H_ because we want this not to match
  1418  //    any macros that the system's limits.h uses for its own purposes.
  1419  
  1420  // Use "..." so that we find syslimits.h only in this same directory.
  1421  // syslimits.h stands for the system's own limits.h file.
  1422  //    If we can use it ok unmodified, then we install this text.
  1423  //    If fixincludes fixes it, then the fixed version is installed
  1424  //    instead of this text.
  1425  
  1426  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1427  //    This file is part of the GNU C Library.
  1428  //
  1429  //    The GNU C Library is free software; you can redistribute it and/or
  1430  //    modify it under the terms of the GNU Lesser General Public
  1431  //    License as published by the Free Software Foundation; either
  1432  //    version 2.1 of the License, or (at your option) any later version.
  1433  //
  1434  //    The GNU C Library is distributed in the hope that it will be useful,
  1435  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1436  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1437  //    Lesser General Public License for more details.
  1438  //
  1439  //    You should have received a copy of the GNU Lesser General Public
  1440  //    License along with the GNU C Library; if not, see
  1441  //    <https://www.gnu.org/licenses/>.
  1442  
  1443  //	ISO C99 Standard: 7.10/5.2.4.2.1 Sizes of integer types	<limits.h>
  1444  
  1445  // Handle feature test macros at the start of a header.
  1446  //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  1447  //    This file is part of the GNU C Library.
  1448  //
  1449  //    The GNU C Library is free software; you can redistribute it and/or
  1450  //    modify it under the terms of the GNU Lesser General Public
  1451  //    License as published by the Free Software Foundation; either
  1452  //    version 2.1 of the License, or (at your option) any later version.
  1453  //
  1454  //    The GNU C Library is distributed in the hope that it will be useful,
  1455  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1456  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1457  //    Lesser General Public License for more details.
  1458  //
  1459  //    You should have received a copy of the GNU Lesser General Public
  1460  //    License along with the GNU C Library; if not, see
  1461  //    <https://www.gnu.org/licenses/>.
  1462  
  1463  // This header is internal to glibc and should not be included outside
  1464  //    of glibc headers.  Headers including it must define
  1465  //    __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first.  This header
  1466  //    cannot have multiple include guards because ISO C feature test
  1467  //    macros depend on the definition of the macro when an affected
  1468  //    header is included, not when the first system header is
  1469  //    included.
  1470  
  1471  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1472  //    This file is part of the GNU C Library.
  1473  //
  1474  //    The GNU C Library is free software; you can redistribute it and/or
  1475  //    modify it under the terms of the GNU Lesser General Public
  1476  //    License as published by the Free Software Foundation; either
  1477  //    version 2.1 of the License, or (at your option) any later version.
  1478  //
  1479  //    The GNU C Library is distributed in the hope that it will be useful,
  1480  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1481  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1482  //    Lesser General Public License for more details.
  1483  //
  1484  //    You should have received a copy of the GNU Lesser General Public
  1485  //    License along with the GNU C Library; if not, see
  1486  //    <https://www.gnu.org/licenses/>.
  1487  
  1488  // These are defined by the user (or the compiler)
  1489  //    to specify the desired environment:
  1490  //
  1491  //    __STRICT_ANSI__	ISO Standard C.
  1492  //    _ISOC99_SOURCE	Extensions to ISO C89 from ISO C99.
  1493  //    _ISOC11_SOURCE	Extensions to ISO C99 from ISO C11.
  1494  //    _ISOC2X_SOURCE	Extensions to ISO C99 from ISO C2X.
  1495  //    __STDC_WANT_LIB_EXT2__
  1496  // 			Extensions to ISO C99 from TR 27431-2:2010.
  1497  //    __STDC_WANT_IEC_60559_BFP_EXT__
  1498  // 			Extensions to ISO C11 from TS 18661-1:2014.
  1499  //    __STDC_WANT_IEC_60559_FUNCS_EXT__
  1500  // 			Extensions to ISO C11 from TS 18661-4:2015.
  1501  //    __STDC_WANT_IEC_60559_TYPES_EXT__
  1502  // 			Extensions to ISO C11 from TS 18661-3:2015.
  1503  //
  1504  //    _POSIX_SOURCE	IEEE Std 1003.1.
  1505  //    _POSIX_C_SOURCE	If ==1, like _POSIX_SOURCE; if >=2 add IEEE Std 1003.2;
  1506  // 			if >=199309L, add IEEE Std 1003.1b-1993;
  1507  // 			if >=199506L, add IEEE Std 1003.1c-1995;
  1508  // 			if >=200112L, all of IEEE 1003.1-2004
  1509  // 			if >=200809L, all of IEEE 1003.1-2008
  1510  //    _XOPEN_SOURCE	Includes POSIX and XPG things.  Set to 500 if
  1511  // 			Single Unix conformance is wanted, to 600 for the
  1512  // 			sixth revision, to 700 for the seventh revision.
  1513  //    _XOPEN_SOURCE_EXTENDED XPG things and X/Open Unix extensions.
  1514  //    _LARGEFILE_SOURCE	Some more functions for correct standard I/O.
  1515  //    _LARGEFILE64_SOURCE	Additional functionality from LFS for large files.
  1516  //    _FILE_OFFSET_BITS=N	Select default filesystem interface.
  1517  //    _ATFILE_SOURCE	Additional *at interfaces.
  1518  //    _GNU_SOURCE		All of the above, plus GNU extensions.
  1519  //    _DEFAULT_SOURCE	The default set of features (taking precedence over
  1520  // 			__STRICT_ANSI__).
  1521  //
  1522  //    _FORTIFY_SOURCE	Add security hardening to many library functions.
  1523  // 			Set to 1 or 2; 2 performs stricter checks than 1.
  1524  //
  1525  //    _REENTRANT, _THREAD_SAFE
  1526  // 			Obsolete; equivalent to _POSIX_C_SOURCE=199506L.
  1527  //
  1528  //    The `-ansi' switch to the GNU C compiler, and standards conformance
  1529  //    options such as `-std=c99', define __STRICT_ANSI__.  If none of
  1530  //    these are defined, or if _DEFAULT_SOURCE is defined, the default is
  1531  //    to have _POSIX_SOURCE set to one and _POSIX_C_SOURCE set to
  1532  //    200809L, as well as enabling miscellaneous functions from BSD and
  1533  //    SVID.  If more than one of these are defined, they accumulate.  For
  1534  //    example __STRICT_ANSI__, _POSIX_SOURCE and _POSIX_C_SOURCE together
  1535  //    give you ISO C, 1003.1, and 1003.2, but nothing else.
  1536  //
  1537  //    These are defined by this file and are used by the
  1538  //    header files to decide what to declare or define:
  1539  //
  1540  //    __GLIBC_USE (F)	Define things from feature set F.  This is defined
  1541  // 			to 1 or 0; the subsequent macros are either defined
  1542  // 			or undefined, and those tests should be moved to
  1543  // 			__GLIBC_USE.
  1544  //    __USE_ISOC11		Define ISO C11 things.
  1545  //    __USE_ISOC99		Define ISO C99 things.
  1546  //    __USE_ISOC95		Define ISO C90 AMD1 (C95) things.
  1547  //    __USE_ISOCXX11	Define ISO C++11 things.
  1548  //    __USE_POSIX		Define IEEE Std 1003.1 things.
  1549  //    __USE_POSIX2		Define IEEE Std 1003.2 things.
  1550  //    __USE_POSIX199309	Define IEEE Std 1003.1, and .1b things.
  1551  //    __USE_POSIX199506	Define IEEE Std 1003.1, .1b, .1c and .1i things.
  1552  //    __USE_XOPEN		Define XPG things.
  1553  //    __USE_XOPEN_EXTENDED	Define X/Open Unix things.
  1554  //    __USE_UNIX98		Define Single Unix V2 things.
  1555  //    __USE_XOPEN2K        Define XPG6 things.
  1556  //    __USE_XOPEN2KXSI     Define XPG6 XSI things.
  1557  //    __USE_XOPEN2K8       Define XPG7 things.
  1558  //    __USE_XOPEN2K8XSI    Define XPG7 XSI things.
  1559  //    __USE_LARGEFILE	Define correct standard I/O things.
  1560  //    __USE_LARGEFILE64	Define LFS things with separate names.
  1561  //    __USE_FILE_OFFSET64	Define 64bit interface as default.
  1562  //    __USE_MISC		Define things from 4.3BSD or System V Unix.
  1563  //    __USE_ATFILE		Define *at interfaces and AT_* constants for them.
  1564  //    __USE_GNU		Define GNU extensions.
  1565  //    __USE_FORTIFY_LEVEL	Additional security measures used, according to level.
  1566  //
  1567  //    The macros `__GNU_LIBRARY__', `__GLIBC__', and `__GLIBC_MINOR__' are
  1568  //    defined by this file unconditionally.  `__GNU_LIBRARY__' is provided
  1569  //    only for compatibility.  All new code should use the other symbols
  1570  //    to test for features.
  1571  //
  1572  //    All macros listed above as possibly being defined by this file are
  1573  //    explicitly undefined if they are not explicitly defined.
  1574  //    Feature-test macros that are not defined by the user or compiler
  1575  //    but are implied by the other feature-test macros defined (or by the
  1576  //    lack of any definitions) are defined by the file.
  1577  //
  1578  //    ISO C feature test macros depend on the definition of the macro
  1579  //    when an affected header is included, not when the first system
  1580  //    header is included, and so they are handled in
  1581  //    <bits/libc-header-start.h>, which does not have a multiple include
  1582  //    guard.  Feature test macros that can be handled from the first
  1583  //    system header included are handled here.
  1584  
  1585  // Undefine everything, so we get a clean slate.
  1586  
  1587  // Suppress kernel-name space pollution unless user expressedly asks
  1588  //    for it.
  1589  
  1590  // Convenience macro to test the version of gcc.
  1591  //    Use like this:
  1592  //    #if __GNUC_PREREQ (2,8)
  1593  //    ... code requiring gcc 2.8 or later ...
  1594  //    #endif
  1595  //    Note: only works for GCC 2.0 and later, because __GNUC_MINOR__ was
  1596  //    added in 2.0.
  1597  
  1598  // Similarly for clang.  Features added to GCC after version 4.2 may
  1599  //    or may not also be available in clang, and clang's definitions of
  1600  //    __GNUC(_MINOR)__ are fixed at 4 and 2 respectively.  Not all such
  1601  //    features can be queried via __has_extension/__has_feature.
  1602  
  1603  // Whether to use feature set F.
  1604  
  1605  // _BSD_SOURCE and _SVID_SOURCE are deprecated aliases for
  1606  //    _DEFAULT_SOURCE.  If _DEFAULT_SOURCE is present we do not
  1607  //    issue a warning; the expectation is that the source is being
  1608  //    transitioned to use the new macro.
  1609  
  1610  // If _GNU_SOURCE was defined by the user, turn on all the other features.
  1611  
  1612  // If nothing (other than _GNU_SOURCE and _DEFAULT_SOURCE) is defined,
  1613  //    define _DEFAULT_SOURCE.
  1614  
  1615  // This is to enable the ISO C2X extension.
  1616  
  1617  // This is to enable the ISO C11 extension.
  1618  
  1619  // This is to enable the ISO C99 extension.
  1620  
  1621  // This is to enable the ISO C90 Amendment 1:1995 extension.
  1622  
  1623  // If none of the ANSI/POSIX macros are defined, or if _DEFAULT_SOURCE
  1624  //    is defined, use POSIX.1-2008 (or another version depending on
  1625  //    _XOPEN_SOURCE).
  1626  
  1627  // Some C libraries once required _REENTRANT and/or _THREAD_SAFE to be
  1628  //    defined in all multithreaded code.  GNU libc has not required this
  1629  //    for many years.  We now treat them as compatibility synonyms for
  1630  //    _POSIX_C_SOURCE=199506L, which is the earliest level of POSIX with
  1631  //    comprehensive support for multithreaded code.  Using them never
  1632  //    lowers the selected level of POSIX conformance, only raises it.
  1633  
  1634  // The function 'gets' existed in C89, but is impossible to use
  1635  //    safely.  It has been removed from ISO C11 and ISO C++14.  Note: for
  1636  //    compatibility with various implementations of <cstdio>, this test
  1637  //    must consider only the value of __cplusplus when compiling C++.
  1638  
  1639  // GNU formerly extended the scanf functions with modified format
  1640  //    specifiers %as, %aS, and %a[...] that allocate a buffer for the
  1641  //    input using malloc.  This extension conflicts with ISO C99, which
  1642  //    defines %a as a standalone format specifier that reads a floating-
  1643  //    point number; moreover, POSIX.1-2008 provides the same feature
  1644  //    using the modifier letter 'm' instead (%ms, %mS, %m[...]).
  1645  //
  1646  //    We now follow C99 unless GNU extensions are active and the compiler
  1647  //    is specifically in C89 or C++98 mode (strict or not).  For
  1648  //    instance, with GCC, -std=gnu11 will have C99-compliant scanf with
  1649  //    or without -D_GNU_SOURCE, but -std=c89 -D_GNU_SOURCE will have the
  1650  //    old extension.
  1651  
  1652  // Get definitions of __STDC_* predefined macros, if the compiler has
  1653  //    not preincluded this header automatically.
  1654  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1655  //    This file is part of the GNU C Library.
  1656  //
  1657  //    The GNU C Library is free software; you can redistribute it and/or
  1658  //    modify it under the terms of the GNU Lesser General Public
  1659  //    License as published by the Free Software Foundation; either
  1660  //    version 2.1 of the License, or (at your option) any later version.
  1661  //
  1662  //    The GNU C Library is distributed in the hope that it will be useful,
  1663  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1664  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1665  //    Lesser General Public License for more details.
  1666  //
  1667  //    You should have received a copy of the GNU Lesser General Public
  1668  //    License along with the GNU C Library; if not, see
  1669  //    <https://www.gnu.org/licenses/>.
  1670  
  1671  // This macro indicates that the installed library is the GNU C Library.
  1672  //    For historic reasons the value now is 6 and this will stay from now
  1673  //    on.  The use of this variable is deprecated.  Use __GLIBC__ and
  1674  //    __GLIBC_MINOR__ now (see below) when you want to test for a specific
  1675  //    GNU C library version and use the values in <gnu/lib-names.h> to get
  1676  //    the sonames of the shared libraries.
  1677  
  1678  // Major and minor version number of the GNU C library package.  Use
  1679  //    these macros to test for features in specific releases.
  1680  
  1681  // This is here only because every header file already includes this one.
  1682  // Copyright (C) 1992-2020 Free Software Foundation, Inc.
  1683  //    This file is part of the GNU C Library.
  1684  //
  1685  //    The GNU C Library is free software; you can redistribute it and/or
  1686  //    modify it under the terms of the GNU Lesser General Public
  1687  //    License as published by the Free Software Foundation; either
  1688  //    version 2.1 of the License, or (at your option) any later version.
  1689  //
  1690  //    The GNU C Library is distributed in the hope that it will be useful,
  1691  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1692  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1693  //    Lesser General Public License for more details.
  1694  //
  1695  //    You should have received a copy of the GNU Lesser General Public
  1696  //    License along with the GNU C Library; if not, see
  1697  //    <https://www.gnu.org/licenses/>.
  1698  
  1699  // We are almost always included from features.h.
  1700  
  1701  // The GNU libc does not support any K&R compilers or the traditional mode
  1702  //    of ISO C compilers anymore.  Check for some of the combinations not
  1703  //    anymore supported.
  1704  
  1705  // Some user header file might have defined this before.
  1706  
  1707  // All functions, except those with callbacks or those that
  1708  //    synchronize memory, are leaf functions.
  1709  
  1710  // GCC can always grok prototypes.  For C++ programs we add throw()
  1711  //    to help it optimize the function calls.  But this works only with
  1712  //    gcc 2.8.x and egcs.  For gcc 3.2 and up we even mark C functions
  1713  //    as non-throwing using a function attribute since programs can use
  1714  //    the -fexceptions options for C code as well.
  1715  
  1716  // Compilers that are not clang may object to
  1717  //        #if defined __clang__ && __has_extension(...)
  1718  //    even though they do not need to evaluate the right-hand side of the &&.
  1719  
  1720  // These two macros are not used in glibc anymore.  They are kept here
  1721  //    only because some other projects expect the macros to be defined.
  1722  
  1723  // For these things, GCC behaves the ANSI way normally,
  1724  //    and the non-ANSI way under -traditional.
  1725  
  1726  // This is not a typedef so `const __ptr_t' does the right thing.
  1727  
  1728  // C++ needs to know that types and declarations are C, not C++.
  1729  
  1730  // Fortify support.
  1731  
  1732  // Support for flexible arrays.
  1733  //    Headers that should use flexible arrays only if they're "real"
  1734  //    (e.g. only if they won't affect sizeof()) should test
  1735  //    #if __glibc_c99_flexarr_available.
  1736  
  1737  // __asm__ ("xyz") is used throughout the headers to rename functions
  1738  //    at the assembly language level.  This is wrapped by the __REDIRECT
  1739  //    macro, in order to support compilers that can do this some other
  1740  //    way.  When compilers don't support asm-names at all, we have to do
  1741  //    preprocessor tricks instead (which don't have exactly the right
  1742  //    semantics, but it's the best we can do).
  1743  //
  1744  //    Example:
  1745  //    int __REDIRECT(setpgrp, (__pid_t pid, __pid_t pgrp), setpgid);
  1746  
  1747  //
  1748  // #elif __SOME_OTHER_COMPILER__
  1749  //
  1750  // # define __REDIRECT(name, proto, alias) name proto; 	_Pragma("let " #name " = " #alias)
  1751  
  1752  // GCC has various useful declarations that can be made with the
  1753  //    `__attribute__' syntax.  All of the ways we use this do fine if
  1754  //    they are omitted for compilers that don't understand it.
  1755  
  1756  // At some point during the gcc 2.96 development the `malloc' attribute
  1757  //    for functions was introduced.  We don't want to use it unconditionally
  1758  //    (although this would be possible) since it generates warnings.
  1759  
  1760  // Tell the compiler which arguments to an allocation function
  1761  //    indicate the size of the allocation.
  1762  
  1763  // At some point during the gcc 2.96 development the `pure' attribute
  1764  //    for functions was introduced.  We don't want to use it unconditionally
  1765  //    (although this would be possible) since it generates warnings.
  1766  
  1767  // This declaration tells the compiler that the value is constant.
  1768  
  1769  // At some point during the gcc 3.1 development the `used' attribute
  1770  //    for functions was introduced.  We don't want to use it unconditionally
  1771  //    (although this would be possible) since it generates warnings.
  1772  
  1773  // Since version 3.2, gcc allows marking deprecated functions.
  1774  
  1775  // Since version 4.5, gcc also allows one to specify the message printed
  1776  //    when a deprecated function is used.  clang claims to be gcc 4.2, but
  1777  //    may also support this feature.
  1778  
  1779  // At some point during the gcc 2.8 development the `format_arg' attribute
  1780  //    for functions was introduced.  We don't want to use it unconditionally
  1781  //    (although this would be possible) since it generates warnings.
  1782  //    If several `format_arg' attributes are given for the same function, in
  1783  //    gcc-3.0 and older, all but the last one are ignored.  In newer gccs,
  1784  //    all designated arguments are considered.
  1785  
  1786  // At some point during the gcc 2.97 development the `strfmon' format
  1787  //    attribute for functions was introduced.  We don't want to use it
  1788  //    unconditionally (although this would be possible) since it
  1789  //    generates warnings.
  1790  
  1791  // The nonull function attribute allows to mark pointer parameters which
  1792  //    must not be NULL.
  1793  
  1794  // If fortification mode, we warn about unused results of certain
  1795  //    function calls which can lead to problems.
  1796  
  1797  // Forces a function to be always inlined.
  1798  // The Linux kernel defines __always_inline in stddef.h (283d7573), and
  1799  //    it conflicts with this definition.  Therefore undefine it first to
  1800  //    allow either header to be included first.
  1801  
  1802  // Associate error messages with the source location of the call site rather
  1803  //    than with the source location inside the function.
  1804  
  1805  // GCC 4.3 and above with -std=c99 or -std=gnu99 implements ISO C99
  1806  //    inline semantics, unless -fgnu89-inline is used.  Using __GNUC_STDC_INLINE__
  1807  //    or __GNUC_GNU_INLINE is not a good enough check for gcc because gcc versions
  1808  //    older than 4.3 may define these macros and still not guarantee GNU inlining
  1809  //    semantics.
  1810  //
  1811  //    clang++ identifies itself as gcc-4.2, but has support for GNU inlining
  1812  //    semantics, that can be checked for by using the __GNUC_STDC_INLINE_ and
  1813  //    __GNUC_GNU_INLINE__ macro definitions.
  1814  
  1815  // GCC 4.3 and above allow passing all anonymous arguments of an
  1816  //    __extern_always_inline function to some other vararg function.
  1817  
  1818  // It is possible to compile containing GCC extensions even if GCC is
  1819  //    run in pedantic mode if the uses are carefully marked using the
  1820  //    `__extension__' keyword.  But this is not generally available before
  1821  //    version 2.8.
  1822  
  1823  // __restrict is known in EGCS 1.2 and above.
  1824  
  1825  // ISO C99 also allows to declare arrays as non-overlapping.  The syntax is
  1826  //      array_name[restrict]
  1827  //    GCC 3.1 supports this.
  1828  
  1829  // Describes a char array whose address can safely be passed as the first
  1830  //    argument to strncpy and strncat, as the char array is not necessarily
  1831  //    a NUL-terminated string.
  1832  
  1833  // Undefine (also defined in libc-symbols.h).
  1834  // Copies attributes from the declaration or type referenced by
  1835  //    the argument.
  1836  
  1837  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  1838  //    This file is part of the GNU C Library.
  1839  //
  1840  //    The GNU C Library is free software; you can redistribute it and/or
  1841  //    modify it under the terms of the GNU Lesser General Public
  1842  //    License as published by the Free Software Foundation; either
  1843  //    version 2.1 of the License, or (at your option) any later version.
  1844  //
  1845  //    The GNU C Library is distributed in the hope that it will be useful,
  1846  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1847  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1848  //    Lesser General Public License for more details.
  1849  //
  1850  //    You should have received a copy of the GNU Lesser General Public
  1851  //    License along with the GNU C Library; if not, see
  1852  //    <https://www.gnu.org/licenses/>.
  1853  
  1854  // Properties of long double type.
  1855  //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  1856  //    This file is part of the GNU C Library.
  1857  //
  1858  //    The GNU C Library is free software; you can redistribute it and/or
  1859  //    modify it under the terms of the GNU Lesser General Public
  1860  //    License  published by the Free Software Foundation; either
  1861  //    version 2.1 of the License, or (at your option) any later version.
  1862  //
  1863  //    The GNU C Library is distributed in the hope that it will be useful,
  1864  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1865  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1866  //    Lesser General Public License for more details.
  1867  //
  1868  //    You should have received a copy of the GNU Lesser General Public
  1869  //    License along with the GNU C Library; if not, see
  1870  //    <https://www.gnu.org/licenses/>.
  1871  
  1872  // This header is included by <sys/cdefs.h>.
  1873  //
  1874  //    If long double is ABI-compatible with double, it should define
  1875  //    __NO_LONG_DOUBLE_MATH to 1; otherwise, it should leave
  1876  //    __NO_LONG_DOUBLE_MATH undefined.
  1877  //
  1878  //    If this build of the GNU C Library supports both long double
  1879  //    ABI-compatible with double and some other long double format not
  1880  //    ABI-compatible with double, it should define
  1881  //    __LONG_DOUBLE_MATH_OPTIONAL to 1; otherwise, it should leave
  1882  //    __LONG_DOUBLE_MATH_OPTIONAL undefined.
  1883  //
  1884  //    If __NO_LONG_DOUBLE_MATH is already defined, this header must not
  1885  //    define anything; this is needed to work with the definition of
  1886  //    __NO_LONG_DOUBLE_MATH in nldbl-compat.h.
  1887  
  1888  // In the default version of this header, long double is
  1889  //    ABI-compatible with double.
  1890  
  1891  // __glibc_macro_warning (MESSAGE) issues warning MESSAGE.  This is
  1892  //    intended for use in preprocessor macros.
  1893  //
  1894  //    Note: MESSAGE must be a _single_ string; concatenation of string
  1895  //    literals is not supported.
  1896  
  1897  // Generic selection (ISO C11) is a C-only feature, available in GCC
  1898  //    since version 4.9.  Previous versions do not provide generic
  1899  //    selection, even though they might set __STDC_VERSION__ to 201112L,
  1900  //    when in -std=c11 mode.  Thus, we must check for !defined __GNUC__
  1901  //    when testing __STDC_VERSION__ for generic selection support.
  1902  //    On the other hand, Clang also defines __GNUC__, so a clang-specific
  1903  //    check is required to enable the use of generic selection.
  1904  
  1905  // If we don't have __REDIRECT, prototypes will be missing if
  1906  //    __USE_FILE_OFFSET64 but not __USE_LARGEFILE[64].
  1907  
  1908  // Decide whether we can define 'extern inline' functions in headers.
  1909  
  1910  // This is here only because every header file already includes this one.
  1911  //    Get the definitions of all the appropriate `__stub_FUNCTION' symbols.
  1912  //    <gnu/stubs.h> contains `#define __stub_FUNCTION' when FUNCTION is a stub
  1913  //    that will always return failure (and set errno to ENOSYS).
  1914  // This file is automatically generated.
  1915  //    This file selects the right generated file of `__stub_FUNCTION' macros
  1916  //    based on the architecture being compiled for.
  1917  
  1918  // This file is automatically generated.
  1919  //    It defines a symbol `__stub_FUNCTION' for each function
  1920  //    in the C library which is a stub, meaning it will fail
  1921  //    every time called, usually setting errno to ENOSYS.
  1922  
  1923  // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
  1924  //    macro.
  1925  
  1926  // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
  1927  //    macro.  Most but not all symbols enabled by that macro in TS
  1928  //    18661-1 are enabled unconditionally in C2X; the symbols in Annex F
  1929  //    still require that macro in C2X.
  1930  
  1931  // ISO/IEC TS 18661-4:2015 defines the
  1932  //    __STDC_WANT_IEC_60559_FUNCS_EXT__ macro.  Other than the reduction
  1933  //    functions, the symbols from this TS are enabled unconditionally in
  1934  //    C2X.
  1935  
  1936  // ISO/IEC TS 18661-3:2015 defines the
  1937  //    __STDC_WANT_IEC_60559_TYPES_EXT__ macro.
  1938  
  1939  // Maximum length of any multibyte character in any locale.
  1940  //    We define this value here since the gcc header does not define
  1941  //    the correct value.
  1942  
  1943  // If we are not using GNU CC we have to define all the symbols ourself.
  1944  //    Otherwise use gcc's definitions (see below).
  1945  
  1946  // Get the compiler's limits.h, which defines almost all the ISO constants.
  1947  //
  1948  //     We put this #include_next outside the double inclusion check because
  1949  //     it should be possible to include this file more than once and still get
  1950  //     the definitions from gcc's header.
  1951  
  1952  // The <limits.h> files in some gcc versions don't define LLONG_MIN,
  1953  //    LLONG_MAX, and ULLONG_MAX.  Instead only the values gcc defined for
  1954  //    ages are available.
  1955  
  1956  // The integer width macros are not defined by GCC's <limits.h> before
  1957  //    GCC 7, or if _GNU_SOURCE rather than
  1958  //    __STDC_WANT_IEC_60559_BFP_EXT__ is used to enable this feature.
  1959  
  1960  // POSIX adds things to <limits.h>.
  1961  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  1962  //    This file is part of the GNU C Library.
  1963  //
  1964  //    The GNU C Library is free software; you can redistribute it and/or
  1965  //    modify it under the terms of the GNU Lesser General Public
  1966  //    License as published by the Free Software Foundation; either
  1967  //    version 2.1 of the License, or (at your option) any later version.
  1968  //
  1969  //    The GNU C Library is distributed in the hope that it will be useful,
  1970  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1971  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1972  //    Lesser General Public License for more details.
  1973  //
  1974  //    You should have received a copy of the GNU Lesser General Public
  1975  //    License along with the GNU C Library; if not, see
  1976  //    <https://www.gnu.org/licenses/>.
  1977  
  1978  //	POSIX Standard: 2.9.2 Minimum Values	Added to <limits.h>
  1979  //
  1980  //	Never include this file directly; use <limits.h> instead.
  1981  
  1982  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  1983  //    This file is part of the GNU C Library.
  1984  //
  1985  //    The GNU C Library is free software; you can redistribute it and/or
  1986  //    modify it under the terms of the GNU Lesser General Public
  1987  //    License as published by the Free Software Foundation; either
  1988  //    version 2.1 of the License, or (at your option) any later version.
  1989  //
  1990  //    The GNU C Library is distributed in the hope that it will be useful,
  1991  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  1992  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  1993  //    Lesser General Public License for more details.
  1994  //
  1995  //    You should have received a copy of the GNU Lesser General Public
  1996  //    License along with the GNU C Library; if not, see
  1997  //    <https://www.gnu.org/licenses/>.
  1998  
  1999  // These are the standard-mandated minimum values.
  2000  
  2001  // Minimum number of operations in one list I/O call.
  2002  
  2003  // Minimal number of outstanding asynchronous I/O operations.
  2004  
  2005  // Maximum length of arguments to `execve', including environment.
  2006  
  2007  // Maximum simultaneous processes per real user ID.
  2008  
  2009  // Minimal number of timer expiration overruns.
  2010  
  2011  // Maximum length of a host name (not including the terminating null)
  2012  //    as returned from the GETHOSTNAME function.
  2013  
  2014  // Maximum link count of a file.
  2015  
  2016  // Maximum length of login name.
  2017  
  2018  // Number of bytes in a terminal canonical input queue.
  2019  
  2020  // Number of bytes for which space will be
  2021  //    available in a terminal input queue.
  2022  
  2023  // Maximum number of message queues open for a process.
  2024  
  2025  // Maximum number of supported message priorities.
  2026  
  2027  // Number of bytes in a filename.
  2028  
  2029  // Number of simultaneous supplementary group IDs per process.
  2030  
  2031  // Number of files one process can have open at once.
  2032  
  2033  // Number of bytes in a pathname.
  2034  
  2035  // Number of bytes than can be written atomically to a pipe.
  2036  
  2037  // The number of repeated occurrences of a BRE permitted by the
  2038  //    REGEXEC and REGCOMP functions when using the interval notation.
  2039  
  2040  // Minimal number of realtime signals reserved for the application.
  2041  
  2042  // Number of semaphores a process can have.
  2043  
  2044  // Maximal value of a semaphore.
  2045  
  2046  // Number of pending realtime signals.
  2047  
  2048  // Largest value of a `ssize_t'.
  2049  
  2050  // Number of streams a process can have open at once.
  2051  
  2052  // The number of bytes in a symbolic link.
  2053  
  2054  // The number of symbolic links that can be traversed in the
  2055  //    resolution of a pathname in the absence of a loop.
  2056  
  2057  // Number of timer for a process.
  2058  
  2059  // Maximum number of characters in a tty name.
  2060  
  2061  // Maximum length of a timezone name (element of `tzname').
  2062  
  2063  // Maximum clock resolution in nanoseconds.
  2064  
  2065  // Get the implementation-specific values for the above.
  2066  // Minimum guaranteed maximum values for system limits.  Linux version.
  2067  //    Copyright (C) 1993-2020 Free Software Foundation, Inc.
  2068  //    This file is part of the GNU C Library.
  2069  //
  2070  //    The GNU C Library is free software; you can redistribute it and/or
  2071  //    modify it under the terms of the GNU Lesser General Public License as
  2072  //    published by the Free Software Foundation; either version 2.1 of the
  2073  //    License, or (at your option) any later version.
  2074  //
  2075  //    The GNU C Library is distributed in the hope that it will be useful,
  2076  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2077  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2078  //    Lesser General Public License for more details.
  2079  //
  2080  //    You should have received a copy of the GNU Lesser General Public
  2081  //    License along with the GNU C Library; see the file COPYING.LIB.  If
  2082  //    not, see <https://www.gnu.org/licenses/>.
  2083  
  2084  // The kernel header pollutes the namespace with the NR_OPEN symbol
  2085  //    and defines LINK_MAX although filesystems have different maxima.  A
  2086  //    similar thing is true for OPEN_MAX: the limit can be changed at
  2087  //    runtime and therefore the macro must not be defined.  Remove this
  2088  //    after including the header if necessary.
  2089  
  2090  // The kernel sources contain a file with all the needed information.
  2091  // SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note
  2092  
  2093  // Have to remove NR_OPEN?
  2094  // Have to remove LINK_MAX?
  2095  // Have to remove OPEN_MAX?
  2096  // Have to remove ARG_MAX?
  2097  
  2098  // The number of data keys per process.
  2099  // This is the value this implementation supports.
  2100  
  2101  // Controlling the iterations of destructors for thread-specific data.
  2102  // Number of iterations this implementation does.
  2103  
  2104  // The number of threads per process.
  2105  // We have no predefined limit on the number of threads.
  2106  
  2107  // Maximum amount by which a process can descrease its asynchronous I/O
  2108  //    priority level.
  2109  
  2110  // Minimum size for a thread.  We are free to choose a reasonable value.
  2111  
  2112  // Maximum number of timer expiration overruns.
  2113  
  2114  // Maximum tty name length.
  2115  
  2116  // Maximum login name length.  This is arbitrary.
  2117  
  2118  // Maximum host name length.
  2119  
  2120  // Maximum message queue priority level.
  2121  
  2122  // Maximum value the semaphore can have.
  2123  
  2124  // ssize_t is not formally required to be the signed type
  2125  //    corresponding to size_t, but it is for all configurations supported
  2126  //    by glibc.
  2127  
  2128  // This value is a guaranteed minimum maximum.
  2129  //    The current maximum can be got from `sysconf'.
  2130  
  2131  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  2132  //    This file is part of the GNU C Library.
  2133  //
  2134  //    The GNU C Library is free software; you can redistribute it and/or
  2135  //    modify it under the terms of the GNU Lesser General Public
  2136  //    License as published by the Free Software Foundation; either
  2137  //    version 2.1 of the License, or (at your option) any later version.
  2138  //
  2139  //    The GNU C Library is distributed in the hope that it will be useful,
  2140  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2141  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2142  //    Lesser General Public License for more details.
  2143  //
  2144  //    You should have received a copy of the GNU Lesser General Public
  2145  //    License along with the GNU C Library; if not, see
  2146  //    <https://www.gnu.org/licenses/>.
  2147  
  2148  // Never include this file directly; include <limits.h> instead.
  2149  
  2150  // The maximum `ibase' and `obase' values allowed by the `bc' utility.
  2151  
  2152  // The maximum number of elements allowed in an array by the `bc' utility.
  2153  
  2154  // The maximum `scale' value allowed by the `bc' utility.
  2155  
  2156  // The maximum length of a string constant accepted by the `bc' utility.
  2157  
  2158  // The maximum number of weights that can be assigned to an entry of
  2159  //    the LC_COLLATE `order' keyword in the locale definition file.
  2160  
  2161  // The maximum number of expressions that can be nested
  2162  //    within parentheses by the `expr' utility.
  2163  
  2164  // The maximum length, in bytes, of an input line.
  2165  
  2166  // The maximum number of repeated occurrences of a regular expression
  2167  //    permitted when using the interval notation `\{M,N\}'.
  2168  
  2169  // The maximum number of bytes in a character class name.  We have no
  2170  //    fixed limit, 2048 is a high number.
  2171  
  2172  // These values are implementation-specific,
  2173  //    and may vary within the implementation.
  2174  //    Their precise values can be obtained from sysconf.
  2175  
  2176  // This value is defined like this in regex.h.
  2177  
  2178  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  2179  //
  2180  // This file is part of GCC.
  2181  //
  2182  // GCC is free software; you can redistribute it and/or modify it under
  2183  // the terms of the GNU General Public License as published by the Free
  2184  // Software Foundation; either version 3, or (at your option) any later
  2185  // version.
  2186  //
  2187  // GCC is distributed in the hope that it will be useful, but WITHOUT ANY
  2188  // WARRANTY; without even the implied warranty of MERCHANTABILITY or
  2189  // FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  2190  // for more details.
  2191  //
  2192  // Under Section 7 of GPL version 3, you are granted additional
  2193  // permissions described in the GCC Runtime Library Exception, version
  2194  // 3.1, as published by the Free Software Foundation.
  2195  //
  2196  // You should have received a copy of the GNU General Public License and
  2197  // a copy of the GCC Runtime Library Exception along with this program;
  2198  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  2199  // <http://www.gnu.org/licenses/>.
  2200  
  2201  // Number of bits in a `char'.
  2202  
  2203  // Maximum length of a multibyte character.
  2204  
  2205  // Minimum and maximum values a `signed char' can hold.
  2206  
  2207  // Maximum value an `unsigned char' can hold.  (Minimum is 0).
  2208  
  2209  // Minimum and maximum values a `char' can hold.
  2210  
  2211  // Minimum and maximum values a `signed short int' can hold.
  2212  
  2213  // Maximum value an `unsigned short int' can hold.  (Minimum is 0).
  2214  
  2215  // Minimum and maximum values a `signed int' can hold.
  2216  
  2217  // Maximum value an `unsigned int' can hold.  (Minimum is 0).
  2218  
  2219  // Minimum and maximum values a `signed long int' can hold.
  2220  //    (Same as `int').
  2221  
  2222  // Maximum value an `unsigned long int' can hold.  (Minimum is 0).
  2223  
  2224  // Minimum and maximum values a `signed long long int' can hold.
  2225  
  2226  // Maximum value an `unsigned long long int' can hold.  (Minimum is 0).
  2227  
  2228  // This administrivia gets added to the end of limits.h
  2229  //    if the system has its own version of limits.h.
  2230  
  2231  type Z_crc_t = uint32 /* zconf.h:429:17 */
  2232  
  2233  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  2234  //    This file is part of the GNU C Library.
  2235  //
  2236  //    The GNU C Library is free software; you can redistribute it and/or
  2237  //    modify it under the terms of the GNU Lesser General Public
  2238  //    License as published by the Free Software Foundation; either
  2239  //    version 2.1 of the License, or (at your option) any later version.
  2240  //
  2241  //    The GNU C Library is distributed in the hope that it will be useful,
  2242  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2243  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2244  //    Lesser General Public License for more details.
  2245  //
  2246  //    You should have received a copy of the GNU Lesser General Public
  2247  //    License along with the GNU C Library; if not, see
  2248  //    <https://www.gnu.org/licenses/>.
  2249  
  2250  //	POSIX Standard: 2.6 Primitive System Data Types	<sys/types.h>
  2251  
  2252  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  2253  //    This file is part of the GNU C Library.
  2254  //
  2255  //    The GNU C Library is free software; you can redistribute it and/or
  2256  //    modify it under the terms of the GNU Lesser General Public
  2257  //    License as published by the Free Software Foundation; either
  2258  //    version 2.1 of the License, or (at your option) any later version.
  2259  //
  2260  //    The GNU C Library is distributed in the hope that it will be useful,
  2261  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2262  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2263  //    Lesser General Public License for more details.
  2264  //
  2265  //    You should have received a copy of the GNU Lesser General Public
  2266  //    License along with the GNU C Library; if not, see
  2267  //    <https://www.gnu.org/licenses/>.
  2268  
  2269  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2270  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2271  //    This file is part of the GNU C Library.
  2272  //
  2273  //    The GNU C Library is free software; you can redistribute it and/or
  2274  //    modify it under the terms of the GNU Lesser General Public
  2275  //    License as published by the Free Software Foundation; either
  2276  //    version 2.1 of the License, or (at your option) any later version.
  2277  //
  2278  //    The GNU C Library is distributed in the hope that it will be useful,
  2279  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2280  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2281  //    Lesser General Public License for more details.
  2282  //
  2283  //    You should have received a copy of the GNU Lesser General Public
  2284  //    License along with the GNU C Library; if not, see
  2285  //    <https://www.gnu.org/licenses/>.
  2286  
  2287  // Never include this file directly; use <sys/types.h> instead.
  2288  
  2289  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  2290  //    This file is part of the GNU C Library.
  2291  //
  2292  //    The GNU C Library is free software; you can redistribute it and/or
  2293  //    modify it under the terms of the GNU Lesser General Public
  2294  //    License as published by the Free Software Foundation; either
  2295  //    version 2.1 of the License, or (at your option) any later version.
  2296  //
  2297  //    The GNU C Library is distributed in the hope that it will be useful,
  2298  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2299  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2300  //    Lesser General Public License for more details.
  2301  //
  2302  //    You should have received a copy of the GNU Lesser General Public
  2303  //    License along with the GNU C Library; if not, see
  2304  //    <https://www.gnu.org/licenses/>.
  2305  
  2306  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  2307  //    This file is part of the GNU C Library.
  2308  //
  2309  //    The GNU C Library is free software; you can redistribute it and/or
  2310  //    modify it under the terms of the GNU Lesser General Public
  2311  //    License as published by the Free Software Foundation; either
  2312  //    version 2.1 of the License, or (at your option) any later version.
  2313  //
  2314  //    The GNU C Library is distributed in the hope that it will be useful,
  2315  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2316  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2317  //    Lesser General Public License for more details.
  2318  //
  2319  //    You should have received a copy of the GNU Lesser General Public
  2320  //    License along with the GNU C Library; if not, see
  2321  //    <https://www.gnu.org/licenses/>.
  2322  
  2323  // Bit size of the time_t type at glibc build time, general case.
  2324  //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  2325  //    This file is part of the GNU C Library.
  2326  //
  2327  //    The GNU C Library is free software; you can redistribute it and/or
  2328  //    modify it under the terms of the GNU Lesser General Public
  2329  //    License as published by the Free Software Foundation; either
  2330  //    version 2.1 of the License, or (at your option) any later version.
  2331  //
  2332  //    The GNU C Library is distributed in the hope that it will be useful,
  2333  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2334  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2335  //    Lesser General Public License for more details.
  2336  //
  2337  //    You should have received a copy of the GNU Lesser General Public
  2338  //    License along with the GNU C Library; if not, see
  2339  //    <https://www.gnu.org/licenses/>.
  2340  
  2341  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  2342  //    This file is part of the GNU C Library.
  2343  //
  2344  //    The GNU C Library is free software; you can redistribute it and/or
  2345  //    modify it under the terms of the GNU Lesser General Public
  2346  //    License as published by the Free Software Foundation; either
  2347  //    version 2.1 of the License, or (at your option) any later version.
  2348  //
  2349  //    The GNU C Library is distributed in the hope that it will be useful,
  2350  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2351  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2352  //    Lesser General Public License for more details.
  2353  //
  2354  //    You should have received a copy of the GNU Lesser General Public
  2355  //    License along with the GNU C Library; if not, see
  2356  //    <https://www.gnu.org/licenses/>.
  2357  
  2358  // Size in bits of the 'time_t' type of the default ABI.
  2359  
  2360  // Convenience types.
  2361  type X__u_char = uint8   /* types.h:31:23 */
  2362  type X__u_short = uint16 /* types.h:32:28 */
  2363  type X__u_int = uint32   /* types.h:33:22 */
  2364  type X__u_long = uint32  /* types.h:34:27 */
  2365  
  2366  // Fixed-size types, underlying types depend on word size and compiler.
  2367  type X__int8_t = int8     /* types.h:37:21 */
  2368  type X__uint8_t = uint8   /* types.h:38:23 */
  2369  type X__int16_t = int16   /* types.h:39:26 */
  2370  type X__uint16_t = uint16 /* types.h:40:28 */
  2371  type X__int32_t = int32   /* types.h:41:20 */
  2372  type X__uint32_t = uint32 /* types.h:42:22 */
  2373  type X__int64_t = int64   /* types.h:47:44 */
  2374  type X__uint64_t = uint64 /* types.h:48:46 */
  2375  
  2376  // Smallest types with at least a given width.
  2377  type X__int_least8_t = X__int8_t     /* types.h:52:18 */
  2378  type X__uint_least8_t = X__uint8_t   /* types.h:53:19 */
  2379  type X__int_least16_t = X__int16_t   /* types.h:54:19 */
  2380  type X__uint_least16_t = X__uint16_t /* types.h:55:20 */
  2381  type X__int_least32_t = X__int32_t   /* types.h:56:19 */
  2382  type X__uint_least32_t = X__uint32_t /* types.h:57:20 */
  2383  type X__int_least64_t = X__int64_t   /* types.h:58:19 */
  2384  type X__uint_least64_t = X__uint64_t /* types.h:59:20 */
  2385  
  2386  // quad_t is also 64 bits.
  2387  type X__quad_t = int64    /* types.h:66:37 */
  2388  type X__u_quad_t = uint64 /* types.h:67:46 */
  2389  
  2390  // Largest integral types.
  2391  type X__intmax_t = int64   /* types.h:75:37 */
  2392  type X__uintmax_t = uint64 /* types.h:76:46 */
  2393  
  2394  // The machine-dependent file <bits/typesizes.h> defines __*_T_TYPE
  2395  //    macros for each of the OS types we define below.  The definitions
  2396  //    of those macros must use the following macros for underlying types.
  2397  //    We define __S<SIZE>_TYPE and __U<SIZE>_TYPE for the signed and unsigned
  2398  //    variants of each of the following integer types on this machine.
  2399  //
  2400  // 	16		-- "natural" 16-bit type (always short)
  2401  // 	32		-- "natural" 32-bit type (always int)
  2402  // 	64		-- "natural" 64-bit type (long or long long)
  2403  // 	LONG32		-- 32-bit type, traditionally long
  2404  // 	QUAD		-- 64-bit type, traditionally long long
  2405  // 	WORD		-- natural type of __WORDSIZE bits (int or long)
  2406  // 	LONGWORD	-- type of __WORDSIZE bits, traditionally long
  2407  //
  2408  //    We distinguish WORD/LONGWORD, 32/LONG32, and 64/QUAD so that the
  2409  //    conventional uses of `long' or `long long' type modifiers match the
  2410  //    types we define, even when a less-adorned type would be the same size.
  2411  //    This matters for (somewhat) portably writing printf/scanf formats for
  2412  //    these types, where using the appropriate l or ll format modifiers can
  2413  //    make the typedefs and the formats match up across all GNU platforms.  If
  2414  //    we used `long' when it's 64 bits where `long long' is expected, then the
  2415  //    compiler would warn about the formats not matching the argument types,
  2416  //    and the programmer changing them to shut up the compiler would break the
  2417  //    program's portability.
  2418  //
  2419  //    Here we assume what is presently the case in all the GCC configurations
  2420  //    we support: long long is always 64 bits, long is always word/address size,
  2421  //    and int is always 32 bits.
  2422  
  2423  // We want __extension__ before typedef's that use nonstandard base types
  2424  //    such as `long long' in C89 mode.
  2425  // bits/typesizes.h -- underlying types for *_t.  Generic version.
  2426  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2427  //    This file is part of the GNU C Library.
  2428  //
  2429  //    The GNU C Library is free software; you can redistribute it and/or
  2430  //    modify it under the terms of the GNU Lesser General Public
  2431  //    License as published by the Free Software Foundation; either
  2432  //    version 2.1 of the License, or (at your option) any later version.
  2433  //
  2434  //    The GNU C Library is distributed in the hope that it will be useful,
  2435  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2436  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2437  //    Lesser General Public License for more details.
  2438  //
  2439  //    You should have received a copy of the GNU Lesser General Public
  2440  //    License along with the GNU C Library; if not, see
  2441  //    <https://www.gnu.org/licenses/>.
  2442  
  2443  // See <bits/types.h> for the meaning of these macros.  This file exists so
  2444  //    that <bits/types.h> need not vary across different GNU platforms.
  2445  
  2446  // Number of descriptors that can fit in an `fd_set'.
  2447  
  2448  // bits/time64.h -- underlying types for __time64_t.  Generic version.
  2449  //    Copyright (C) 2018-2020 Free Software Foundation, Inc.
  2450  //    This file is part of the GNU C Library.
  2451  //
  2452  //    The GNU C Library is free software; you can redistribute it and/or
  2453  //    modify it under the terms of the GNU Lesser General Public
  2454  //    License as published by the Free Software Foundation; either
  2455  //    version 2.1 of the License, or (at your option) any later version.
  2456  //
  2457  //    The GNU C Library is distributed in the hope that it will be useful,
  2458  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2459  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2460  //    Lesser General Public License for more details.
  2461  //
  2462  //    You should have received a copy of the GNU Lesser General Public
  2463  //    License along with the GNU C Library; if not, see
  2464  //    <https://www.gnu.org/licenses/>.
  2465  
  2466  // Define __TIME64_T_TYPE so that it is always a 64-bit type.
  2467  
  2468  // Define a 64-bit time type alongsize the 32-bit one.
  2469  
  2470  type X__dev_t = X__uint64_t                /* types.h:145:25 */ // Type of device numbers.
  2471  type X__uid_t = uint32                     /* types.h:146:25 */ // Type of user identifications.
  2472  type X__gid_t = uint32                     /* types.h:147:25 */ // Type of group identifications.
  2473  type X__ino_t = uint32                     /* types.h:148:25 */ // Type of file serial numbers.
  2474  type X__ino64_t = X__uint64_t              /* types.h:149:27 */ // Type of file serial numbers (LFS).
  2475  type X__mode_t = uint32                    /* types.h:150:26 */ // Type of file attribute bitmasks.
  2476  type X__nlink_t = uint32                   /* types.h:151:27 */ // Type of file link counts.
  2477  type X__off_t = int32                      /* types.h:152:25 */ // Type of file sizes and offsets.
  2478  type X__off64_t = X__int64_t               /* types.h:153:27 */ // Type of file sizes and offsets (LFS).
  2479  type X__pid_t = int32                      /* types.h:154:25 */ // Type of process identifications.
  2480  type X__fsid_t = struct{ F__val [2]int32 } /* types.h:155:26 */ // Type of file system IDs.
  2481  type X__clock_t = int32                    /* types.h:156:27 */ // Type of CPU usage counts.
  2482  type X__rlim_t = uint32                    /* types.h:157:26 */ // Type for resource measurement.
  2483  type X__rlim64_t = X__uint64_t             /* types.h:158:28 */ // Type for resource measurement (LFS).
  2484  type X__id_t = uint32                      /* types.h:159:24 */ // General type for IDs.
  2485  type X__time_t = int32                     /* types.h:160:26 */ // Seconds since the Epoch.
  2486  type X__useconds_t = uint32                /* types.h:161:30 */ // Count of microseconds.
  2487  type X__suseconds_t = int32                /* types.h:162:31 */ // Signed count of microseconds.
  2488  
  2489  type X__daddr_t = int32 /* types.h:164:27 */ // The type of a disk address.
  2490  type X__key_t = int32   /* types.h:165:25 */ // Type of an IPC key.
  2491  
  2492  // Clock ID used in clock and timer functions.
  2493  type X__clockid_t = int32 /* types.h:168:29 */
  2494  
  2495  // Timer ID returned by `timer_create'.
  2496  type X__timer_t = uintptr /* types.h:171:12 */
  2497  
  2498  // Type to represent block size.
  2499  type X__blksize_t = int32 /* types.h:174:29 */
  2500  
  2501  // Types from the Large File Support interface.
  2502  
  2503  // Type to count number of disk blocks.
  2504  type X__blkcnt_t = int32        /* types.h:179:28 */
  2505  type X__blkcnt64_t = X__int64_t /* types.h:180:30 */
  2506  
  2507  // Type to count file system blocks.
  2508  type X__fsblkcnt_t = uint32        /* types.h:183:30 */
  2509  type X__fsblkcnt64_t = X__uint64_t /* types.h:184:32 */
  2510  
  2511  // Type to count file system nodes.
  2512  type X__fsfilcnt_t = uint32        /* types.h:187:30 */
  2513  type X__fsfilcnt64_t = X__uint64_t /* types.h:188:32 */
  2514  
  2515  // Type of miscellaneous file system fields.
  2516  type X__fsword_t = int32 /* types.h:191:28 */
  2517  
  2518  type X__ssize_t = int32 /* types.h:193:27 */ // Type of a byte count, or error.
  2519  
  2520  // Signed long type used in system calls.
  2521  type X__syscall_slong_t = int32 /* types.h:196:33 */
  2522  // Unsigned long type used in system calls.
  2523  type X__syscall_ulong_t = uint32 /* types.h:198:33 */
  2524  
  2525  // These few don't really vary by system, they always correspond
  2526  //    to one of the other defined types.
  2527  type X__loff_t = X__off64_t /* types.h:202:19 */ // Type of file sizes and offsets (LFS).
  2528  type X__caddr_t = uintptr   /* types.h:203:14 */
  2529  
  2530  // Duplicates info from stdint.h but this is used in unistd.h.
  2531  type X__intptr_t = int32 /* types.h:206:25 */
  2532  
  2533  // Duplicate info from sys/socket.h.
  2534  type X__socklen_t = uint32 /* types.h:209:23 */
  2535  
  2536  // C99: An integer type that can be accessed as an atomic entity,
  2537  //    even in the presence of asynchronous interrupts.
  2538  //    It is not currently necessary for this to be machine-specific.
  2539  type X__sig_atomic_t = int32 /* types.h:214:13 */
  2540  
  2541  // Seconds since the Epoch, visible to user code when time_t is too
  2542  //    narrow only for consistency with the old way of widening too-narrow
  2543  //    types.  User code should never use __time64_t.
  2544  type X__time64_t = X__int64_t /* types.h:222:28 */
  2545  
  2546  type U_char = X__u_char     /* types.h:33:18 */
  2547  type U_short = X__u_short   /* types.h:34:19 */
  2548  type U_int = X__u_int       /* types.h:35:17 */
  2549  type U_long = X__u_long     /* types.h:36:18 */
  2550  type Quad_t = X__quad_t     /* types.h:37:18 */
  2551  type U_quad_t = X__u_quad_t /* types.h:38:20 */
  2552  type Fsid_t = X__fsid_t     /* types.h:39:18 */
  2553  type Loff_t = X__loff_t     /* types.h:42:18 */
  2554  
  2555  type Ino_t = X__ino64_t   /* types.h:49:19 */
  2556  type Ino64_t = X__ino64_t /* types.h:54:19 */
  2557  
  2558  type Dev_t = X__dev_t /* types.h:59:17 */
  2559  
  2560  type Gid_t = X__gid_t /* types.h:64:17 */
  2561  
  2562  type Mode_t = X__mode_t /* types.h:69:18 */
  2563  
  2564  type Nlink_t = X__nlink_t /* types.h:74:19 */
  2565  
  2566  type Uid_t = X__uid_t /* types.h:79:17 */
  2567  
  2568  type Off_t = X__off64_t   /* types.h:87:19 */
  2569  type Off64_t = X__off64_t /* types.h:92:19 */
  2570  
  2571  type Pid_t = X__pid_t /* types.h:97:17 */
  2572  
  2573  type Id_t = X__id_t /* types.h:103:16 */
  2574  
  2575  type Ssize_t = X__ssize_t /* types.h:108:19 */
  2576  
  2577  type Daddr_t = X__daddr_t /* types.h:114:19 */
  2578  type Caddr_t = X__caddr_t /* types.h:115:19 */
  2579  
  2580  type Key_t = X__key_t /* types.h:121:17 */
  2581  
  2582  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2583  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2584  //    This file is part of the GNU C Library.
  2585  //
  2586  //    The GNU C Library is free software; you can redistribute it and/or
  2587  //    modify it under the terms of the GNU Lesser General Public
  2588  //    License as published by the Free Software Foundation; either
  2589  //    version 2.1 of the License, or (at your option) any later version.
  2590  //
  2591  //    The GNU C Library is distributed in the hope that it will be useful,
  2592  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2593  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2594  //    Lesser General Public License for more details.
  2595  //
  2596  //    You should have received a copy of the GNU Lesser General Public
  2597  //    License along with the GNU C Library; if not, see
  2598  //    <https://www.gnu.org/licenses/>.
  2599  
  2600  // Never include this file directly; use <sys/types.h> instead.
  2601  
  2602  // Returned by `clock'.
  2603  type Clock_t = X__clock_t /* clock_t.h:7:19 */
  2604  
  2605  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2606  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2607  //    This file is part of the GNU C Library.
  2608  //
  2609  //    The GNU C Library is free software; you can redistribute it and/or
  2610  //    modify it under the terms of the GNU Lesser General Public
  2611  //    License as published by the Free Software Foundation; either
  2612  //    version 2.1 of the License, or (at your option) any later version.
  2613  //
  2614  //    The GNU C Library is distributed in the hope that it will be useful,
  2615  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2616  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2617  //    Lesser General Public License for more details.
  2618  //
  2619  //    You should have received a copy of the GNU Lesser General Public
  2620  //    License along with the GNU C Library; if not, see
  2621  //    <https://www.gnu.org/licenses/>.
  2622  
  2623  // Never include this file directly; use <sys/types.h> instead.
  2624  
  2625  // Clock ID used in clock and timer functions.
  2626  type Clockid_t = X__clockid_t /* clockid_t.h:7:21 */
  2627  
  2628  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2629  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2630  //    This file is part of the GNU C Library.
  2631  //
  2632  //    The GNU C Library is free software; you can redistribute it and/or
  2633  //    modify it under the terms of the GNU Lesser General Public
  2634  //    License as published by the Free Software Foundation; either
  2635  //    version 2.1 of the License, or (at your option) any later version.
  2636  //
  2637  //    The GNU C Library is distributed in the hope that it will be useful,
  2638  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2639  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2640  //    Lesser General Public License for more details.
  2641  //
  2642  //    You should have received a copy of the GNU Lesser General Public
  2643  //    License along with the GNU C Library; if not, see
  2644  //    <https://www.gnu.org/licenses/>.
  2645  
  2646  // Never include this file directly; use <sys/types.h> instead.
  2647  
  2648  // Returned by `time'.
  2649  type Time_t = X__time_t /* time_t.h:7:18 */
  2650  
  2651  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2652  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2653  //    This file is part of the GNU C Library.
  2654  //
  2655  //    The GNU C Library is free software; you can redistribute it and/or
  2656  //    modify it under the terms of the GNU Lesser General Public
  2657  //    License as published by the Free Software Foundation; either
  2658  //    version 2.1 of the License, or (at your option) any later version.
  2659  //
  2660  //    The GNU C Library is distributed in the hope that it will be useful,
  2661  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2662  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2663  //    Lesser General Public License for more details.
  2664  //
  2665  //    You should have received a copy of the GNU Lesser General Public
  2666  //    License along with the GNU C Library; if not, see
  2667  //    <https://www.gnu.org/licenses/>.
  2668  
  2669  // Never include this file directly; use <sys/types.h> instead.
  2670  
  2671  // Timer ID returned by `timer_create'.
  2672  type Timer_t = X__timer_t /* timer_t.h:7:19 */
  2673  
  2674  // Copyright (C) 1989-2020 Free Software Foundation, Inc.
  2675  //
  2676  // This file is part of GCC.
  2677  //
  2678  // GCC is free software; you can redistribute it and/or modify
  2679  // it under the terms of the GNU General Public License as published by
  2680  // the Free Software Foundation; either version 3, or (at your option)
  2681  // any later version.
  2682  //
  2683  // GCC is distributed in the hope that it will be useful,
  2684  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  2685  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  2686  // GNU General Public License for more details.
  2687  //
  2688  // Under Section 7 of GPL version 3, you are granted additional
  2689  // permissions described in the GCC Runtime Library Exception, version
  2690  // 3.1, as published by the Free Software Foundation.
  2691  //
  2692  // You should have received a copy of the GNU General Public License and
  2693  // a copy of the GCC Runtime Library Exception along with this program;
  2694  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  2695  // <http://www.gnu.org/licenses/>.
  2696  
  2697  // ISO C Standard:  7.17  Common definitions  <stddef.h>
  2698  
  2699  // Any one of these symbols __need_* means that GNU libc
  2700  //    wants us just to define one data type.  So don't define
  2701  //    the symbols that indicate this file's entire job has been done.
  2702  
  2703  // This avoids lossage on SunOS but only if stdtypes.h comes first.
  2704  //    There's no way to win with the other order!  Sun lossage.
  2705  
  2706  // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
  2707  //    Just ignore it.
  2708  
  2709  // On VxWorks, <type/vxTypesBase.h> may have defined macros like
  2710  //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
  2711  //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
  2712  //    not defined, and so that defining this macro defines _GCC_SIZE_T.
  2713  //    If we find that the macros are still defined at this point, we must
  2714  //    invoke them so that the type is defined as expected.
  2715  
  2716  // In case nobody has defined these types, but we aren't running under
  2717  //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
  2718  //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
  2719  //    parts of GCC is compiled by an older compiler, that actually
  2720  //    include gstddef.h, such as collect2.
  2721  
  2722  // Signed type of difference of two pointers.
  2723  
  2724  // Define this type if we are doing the whole job,
  2725  //    or if we want this type in particular.
  2726  
  2727  // If this symbol has done its job, get rid of it.
  2728  
  2729  // Unsigned type of `sizeof' something.
  2730  
  2731  // Define this type if we are doing the whole job,
  2732  //    or if we want this type in particular.
  2733  
  2734  // Wide character type.
  2735  //    Locale-writers should change this as necessary to
  2736  //    be big enough to hold unique values not between 0 and 127,
  2737  //    and not (wchar_t) -1, for each defined multibyte character.
  2738  
  2739  // Define this type if we are doing the whole job,
  2740  //    or if we want this type in particular.
  2741  
  2742  // A null pointer constant.
  2743  
  2744  // Offset of member MEMBER in a struct of type TYPE.
  2745  
  2746  // Old compatibility names for C types.
  2747  type Ulong = uint32  /* types.h:148:27 */
  2748  type Ushort = uint16 /* types.h:149:28 */
  2749  type Uint = uint32   /* types.h:150:22 */
  2750  
  2751  // These size-specific names are used by some of the inet code.
  2752  
  2753  // Define intN_t types.
  2754  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  2755  //    This file is part of the GNU C Library.
  2756  //
  2757  //    The GNU C Library is free software; you can redistribute it and/or
  2758  //    modify it under the terms of the GNU Lesser General Public
  2759  //    License as published by the Free Software Foundation; either
  2760  //    version 2.1 of the License, or (at your option) any later version.
  2761  //
  2762  //    The GNU C Library is distributed in the hope that it will be useful,
  2763  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2764  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2765  //    Lesser General Public License for more details.
  2766  //
  2767  //    You should have received a copy of the GNU Lesser General Public
  2768  //    License along with the GNU C Library; if not, see
  2769  //    <https://www.gnu.org/licenses/>.
  2770  
  2771  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2772  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2773  //    This file is part of the GNU C Library.
  2774  //
  2775  //    The GNU C Library is free software; you can redistribute it and/or
  2776  //    modify it under the terms of the GNU Lesser General Public
  2777  //    License as published by the Free Software Foundation; either
  2778  //    version 2.1 of the License, or (at your option) any later version.
  2779  //
  2780  //    The GNU C Library is distributed in the hope that it will be useful,
  2781  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2782  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2783  //    Lesser General Public License for more details.
  2784  //
  2785  //    You should have received a copy of the GNU Lesser General Public
  2786  //    License along with the GNU C Library; if not, see
  2787  //    <https://www.gnu.org/licenses/>.
  2788  
  2789  // Never include this file directly; use <sys/types.h> instead.
  2790  
  2791  type Int8_t = X__int8_t   /* stdint-intn.h:24:18 */
  2792  type Int16_t = X__int16_t /* stdint-intn.h:25:19 */
  2793  type Int32_t = X__int32_t /* stdint-intn.h:26:19 */
  2794  type Int64_t = X__int64_t /* stdint-intn.h:27:19 */
  2795  
  2796  // These were defined by ISO C without the first `_'.
  2797  type U_int8_t = X__uint8_t   /* types.h:158:19 */
  2798  type U_int16_t = X__uint16_t /* types.h:159:20 */
  2799  type U_int32_t = X__uint32_t /* types.h:160:20 */
  2800  type U_int64_t = X__uint64_t /* types.h:161:20 */
  2801  
  2802  type Register_t = int32 /* types.h:164:13 */
  2803  
  2804  // It also defines `fd_set' and the FD_* macros for `select'.
  2805  // `fd_set' type and related macros, and `select'/`pselect' declarations.
  2806  //    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  2807  //    This file is part of the GNU C Library.
  2808  //
  2809  //    The GNU C Library is free software; you can redistribute it and/or
  2810  //    modify it under the terms of the GNU Lesser General Public
  2811  //    License as published by the Free Software Foundation; either
  2812  //    version 2.1 of the License, or (at your option) any later version.
  2813  //
  2814  //    The GNU C Library is distributed in the hope that it will be useful,
  2815  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2816  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2817  //    Lesser General Public License for more details.
  2818  //
  2819  //    You should have received a copy of the GNU Lesser General Public
  2820  //    License along with the GNU C Library; if not, see
  2821  //    <https://www.gnu.org/licenses/>.
  2822  
  2823  //	POSIX 1003.1g: 6.2 Select from File Descriptor Sets <sys/select.h>
  2824  
  2825  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  2826  //    This file is part of the GNU C Library.
  2827  //
  2828  //    The GNU C Library is free software; you can redistribute it and/or
  2829  //    modify it under the terms of the GNU Lesser General Public
  2830  //    License as published by the Free Software Foundation; either
  2831  //    version 2.1 of the License, or (at your option) any later version.
  2832  //
  2833  //    The GNU C Library is distributed in the hope that it will be useful,
  2834  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2835  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2836  //    Lesser General Public License for more details.
  2837  //
  2838  //    You should have received a copy of the GNU Lesser General Public
  2839  //    License along with the GNU C Library; if not, see
  2840  //    <https://www.gnu.org/licenses/>.
  2841  
  2842  // Get definition of needed basic types.
  2843  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2844  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2845  //    This file is part of the GNU C Library.
  2846  //
  2847  //    The GNU C Library is free software; you can redistribute it and/or
  2848  //    modify it under the terms of the GNU Lesser General Public
  2849  //    License as published by the Free Software Foundation; either
  2850  //    version 2.1 of the License, or (at your option) any later version.
  2851  //
  2852  //    The GNU C Library is distributed in the hope that it will be useful,
  2853  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2854  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2855  //    Lesser General Public License for more details.
  2856  //
  2857  //    You should have received a copy of the GNU Lesser General Public
  2858  //    License along with the GNU C Library; if not, see
  2859  //    <https://www.gnu.org/licenses/>.
  2860  
  2861  // Never include this file directly; use <sys/types.h> instead.
  2862  
  2863  // Get __FD_* definitions.
  2864  // Copyright (C) 1997-2020 Free Software Foundation, Inc.
  2865  //    This file is part of the GNU C Library.
  2866  //
  2867  //    The GNU C Library is free software; you can redistribute it and/or
  2868  //    modify it under the terms of the GNU Lesser General Public
  2869  //    License as published by the Free Software Foundation; either
  2870  //    version 2.1 of the License, or (at your option) any later version.
  2871  //
  2872  //    The GNU C Library is distributed in the hope that it will be useful,
  2873  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2874  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2875  //    Lesser General Public License for more details.
  2876  //
  2877  //    You should have received a copy of the GNU Lesser General Public
  2878  //    License along with the GNU C Library; if not, see
  2879  //    <https://www.gnu.org/licenses/>.
  2880  
  2881  // We don't use `memset' because this would require a prototype and
  2882  //    the array isn't too big.
  2883  
  2884  // Get sigset_t.
  2885  
  2886  type X__sigset_t = struct{ F__val [32]uint32 } /* __sigset_t.h:8:3 */
  2887  
  2888  // A set of signals to be blocked, unblocked, or waited for.
  2889  type Sigset_t = X__sigset_t /* sigset_t.h:7:20 */
  2890  
  2891  // Get definition of timer specification structures.
  2892  
  2893  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2894  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2895  //    This file is part of the GNU C Library.
  2896  //
  2897  //    The GNU C Library is free software; you can redistribute it and/or
  2898  //    modify it under the terms of the GNU Lesser General Public
  2899  //    License as published by the Free Software Foundation; either
  2900  //    version 2.1 of the License, or (at your option) any later version.
  2901  //
  2902  //    The GNU C Library is distributed in the hope that it will be useful,
  2903  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2904  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2905  //    Lesser General Public License for more details.
  2906  //
  2907  //    You should have received a copy of the GNU Lesser General Public
  2908  //    License along with the GNU C Library; if not, see
  2909  //    <https://www.gnu.org/licenses/>.
  2910  
  2911  // Never include this file directly; use <sys/types.h> instead.
  2912  
  2913  // A time value that is accurate to the nearest
  2914  //    microsecond but also has a range of years.
  2915  type Timeval = struct {
  2916  	Ftv_sec  X__time_t
  2917  	Ftv_usec X__suseconds_t
  2918  } /* struct_timeval.h:8:1 */
  2919  
  2920  // NB: Include guard matches what <linux/time.h> uses.
  2921  
  2922  // bits/types.h -- definitions of __*_t types underlying *_t types.
  2923  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  2924  //    This file is part of the GNU C Library.
  2925  //
  2926  //    The GNU C Library is free software; you can redistribute it and/or
  2927  //    modify it under the terms of the GNU Lesser General Public
  2928  //    License as published by the Free Software Foundation; either
  2929  //    version 2.1 of the License, or (at your option) any later version.
  2930  //
  2931  //    The GNU C Library is distributed in the hope that it will be useful,
  2932  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2933  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2934  //    Lesser General Public License for more details.
  2935  //
  2936  //    You should have received a copy of the GNU Lesser General Public
  2937  //    License along with the GNU C Library; if not, see
  2938  //    <https://www.gnu.org/licenses/>.
  2939  
  2940  // Never include this file directly; use <sys/types.h> instead.
  2941  
  2942  // Endian macros for string.h functions
  2943  //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  2944  //    This file is part of the GNU C Library.
  2945  //
  2946  //    The GNU C Library is free software; you can redistribute it and/or
  2947  //    modify it under the terms of the GNU Lesser General Public
  2948  //    License as published by the Free Software Foundation; either
  2949  //    version 2.1 of the License, or (at your option) any later version.
  2950  //
  2951  //    The GNU C Library is distributed in the hope that it will be useful,
  2952  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  2953  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  2954  //    Lesser General Public License for more details.
  2955  //
  2956  //    You should have received a copy of the GNU Lesser General Public
  2957  //    License along with the GNU C Library; if not, see
  2958  //    <http://www.gnu.org/licenses/>.
  2959  
  2960  // POSIX.1b structure for a time value.  This is like a `struct timeval' but
  2961  //    has nanoseconds instead of microseconds.
  2962  type Timespec = struct {
  2963  	Ftv_sec  X__time_t
  2964  	Ftv_nsec X__syscall_slong_t
  2965  } /* struct_timespec.h:10:1 */
  2966  
  2967  type Suseconds_t = X__suseconds_t /* select.h:43:23 */
  2968  
  2969  // The fd_set member is required to be an array of longs.
  2970  type X__fd_mask = int32 /* select.h:49:18 */
  2971  
  2972  // Some versions of <linux/posix_types.h> define this macros.
  2973  // It's easier to assume 8-bit bytes than to get CHAR_BIT.
  2974  
  2975  // fd_set for select and pselect.
  2976  type Fd_set = struct{ F__fds_bits [32]X__fd_mask } /* select.h:70:5 */
  2977  
  2978  // Maximum number of file descriptors in `fd_set'.
  2979  
  2980  // Sometimes the fd_set member is assumed to have this type.
  2981  type Fd_mask = X__fd_mask /* select.h:77:19 */
  2982  
  2983  // Define some inlines helping to catch common problems.
  2984  
  2985  type Blksize_t = X__blksize_t /* types.h:185:21 */
  2986  
  2987  // Types from the Large File Support interface.
  2988  type Blkcnt_t = X__blkcnt64_t     /* types.h:205:22 */ // Type to count number of disk blocks.
  2989  type Fsblkcnt_t = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
  2990  type Fsfilcnt_t = X__fsfilcnt64_t /* types.h:213:24 */ // Type to count file system inodes.
  2991  
  2992  type Blkcnt64_t = X__blkcnt64_t     /* types.h:219:22 */ // Type to count number of disk blocks.
  2993  type Fsblkcnt64_t = X__fsblkcnt64_t /* types.h:220:24 */ // Type to count file system blocks.
  2994  type Fsfilcnt64_t = X__fsfilcnt64_t /* types.h:221:24 */ // Type to count file system inodes.
  2995  
  2996  // Now add the thread types.
  2997  // Declaration of common pthread types for all architectures.
  2998  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  2999  //    This file is part of the GNU C Library.
  3000  //
  3001  //    The GNU C Library is free software; you can redistribute it and/or
  3002  //    modify it under the terms of the GNU Lesser General Public
  3003  //    License as published by the Free Software Foundation; either
  3004  //    version 2.1 of the License, or (at your option) any later version.
  3005  //
  3006  //    The GNU C Library is distributed in the hope that it will be useful,
  3007  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3008  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3009  //    Lesser General Public License for more details.
  3010  //
  3011  //    You should have received a copy of the GNU Lesser General Public
  3012  //    License along with the GNU C Library; if not, see
  3013  //    <https://www.gnu.org/licenses/>.
  3014  
  3015  // For internal mutex and condition variable definitions.
  3016  // Common threading primitives definitions for both POSIX and C11.
  3017  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  3018  //    This file is part of the GNU C Library.
  3019  //
  3020  //    The GNU C Library is free software; you can redistribute it and/or
  3021  //    modify it under the terms of the GNU Lesser General Public
  3022  //    License as published by the Free Software Foundation; either
  3023  //    version 2.1 of the License, or (at your option) any later version.
  3024  //
  3025  //    The GNU C Library is distributed in the hope that it will be useful,
  3026  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3027  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3028  //    Lesser General Public License for more details.
  3029  //
  3030  //    You should have received a copy of the GNU Lesser General Public
  3031  //    License along with the GNU C Library; if not, see
  3032  //    <https://www.gnu.org/licenses/>.
  3033  
  3034  // Arch-specific definitions.  Each architecture must define the following
  3035  //    macros to define the expected sizes of pthread data types:
  3036  //
  3037  //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
  3038  //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
  3039  //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
  3040  //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
  3041  //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
  3042  //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
  3043  //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
  3044  //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
  3045  //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
  3046  //
  3047  //    The additional macro defines any constraint for the lock alignment
  3048  //    inside the thread structures:
  3049  //
  3050  //    __LOCK_ALIGNMENT - for internal lock/futex usage.
  3051  //
  3052  //    Same idea but for the once locking primitive:
  3053  //
  3054  //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
  3055  
  3056  // Machine-specific pthread type layouts.  Generic version.
  3057  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  3058  //
  3059  //    This file is part of the GNU C Library.
  3060  //
  3061  //    The GNU C Library is free software; you can redistribute it and/or
  3062  //    modify it under the terms of the GNU Lesser General Public
  3063  //    License as published by the Free Software Foundation; either
  3064  //    version 2.1 of the License, or (at your option) any later version.
  3065  //
  3066  //    The GNU C Library is distributed in the hope that it will be useful,
  3067  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3068  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3069  //    Lesser General Public License for more details.
  3070  //
  3071  //    You should have received a copy of the GNU Lesser General Public
  3072  //    License along with the GNU C Library; if not, see
  3073  //    <http://www.gnu.org/licenses/>.
  3074  
  3075  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  3076  //    This file is part of the GNU C Library.
  3077  //
  3078  //    The GNU C Library is free software; you can redistribute it and/or
  3079  //    modify it under the terms of the GNU Lesser General Public
  3080  //    License as published by the Free Software Foundation; either
  3081  //    version 2.1 of the License, or (at your option) any later version.
  3082  //
  3083  //    The GNU C Library is distributed in the hope that it will be useful,
  3084  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3085  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3086  //    Lesser General Public License for more details.
  3087  //
  3088  //    You should have received a copy of the GNU Lesser General Public
  3089  //    License along with the GNU C Library; if not, see
  3090  //    <https://www.gnu.org/licenses/>.
  3091  
  3092  // Common definition of pthread_mutex_t.
  3093  
  3094  type X__pthread_internal_list = struct {
  3095  	F__prev uintptr
  3096  	F__next uintptr
  3097  } /* thread-shared-types.h:49:9 */
  3098  
  3099  // Type to count file system inodes.
  3100  
  3101  // Now add the thread types.
  3102  // Declaration of common pthread types for all architectures.
  3103  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  3104  //    This file is part of the GNU C Library.
  3105  //
  3106  //    The GNU C Library is free software; you can redistribute it and/or
  3107  //    modify it under the terms of the GNU Lesser General Public
  3108  //    License as published by the Free Software Foundation; either
  3109  //    version 2.1 of the License, or (at your option) any later version.
  3110  //
  3111  //    The GNU C Library is distributed in the hope that it will be useful,
  3112  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3113  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3114  //    Lesser General Public License for more details.
  3115  //
  3116  //    You should have received a copy of the GNU Lesser General Public
  3117  //    License along with the GNU C Library; if not, see
  3118  //    <https://www.gnu.org/licenses/>.
  3119  
  3120  // For internal mutex and condition variable definitions.
  3121  // Common threading primitives definitions for both POSIX and C11.
  3122  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  3123  //    This file is part of the GNU C Library.
  3124  //
  3125  //    The GNU C Library is free software; you can redistribute it and/or
  3126  //    modify it under the terms of the GNU Lesser General Public
  3127  //    License as published by the Free Software Foundation; either
  3128  //    version 2.1 of the License, or (at your option) any later version.
  3129  //
  3130  //    The GNU C Library is distributed in the hope that it will be useful,
  3131  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3132  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3133  //    Lesser General Public License for more details.
  3134  //
  3135  //    You should have received a copy of the GNU Lesser General Public
  3136  //    License along with the GNU C Library; if not, see
  3137  //    <https://www.gnu.org/licenses/>.
  3138  
  3139  // Arch-specific definitions.  Each architecture must define the following
  3140  //    macros to define the expected sizes of pthread data types:
  3141  //
  3142  //    __SIZEOF_PTHREAD_ATTR_T        - size of pthread_attr_t.
  3143  //    __SIZEOF_PTHREAD_MUTEX_T       - size of pthread_mutex_t.
  3144  //    __SIZEOF_PTHREAD_MUTEXATTR_T   - size of pthread_mutexattr_t.
  3145  //    __SIZEOF_PTHREAD_COND_T        - size of pthread_cond_t.
  3146  //    __SIZEOF_PTHREAD_CONDATTR_T    - size of pthread_condattr_t.
  3147  //    __SIZEOF_PTHREAD_RWLOCK_T      - size of pthread_rwlock_t.
  3148  //    __SIZEOF_PTHREAD_RWLOCKATTR_T  - size of pthread_rwlockattr_t.
  3149  //    __SIZEOF_PTHREAD_BARRIER_T     - size of pthread_barrier_t.
  3150  //    __SIZEOF_PTHREAD_BARRIERATTR_T - size of pthread_barrierattr_t.
  3151  //
  3152  //    The additional macro defines any constraint for the lock alignment
  3153  //    inside the thread structures:
  3154  //
  3155  //    __LOCK_ALIGNMENT - for internal lock/futex usage.
  3156  //
  3157  //    Same idea but for the once locking primitive:
  3158  //
  3159  //    __ONCE_ALIGNMENT - for pthread_once_t/once_flag definition.
  3160  
  3161  // Machine-specific pthread type layouts.  Generic version.
  3162  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  3163  //
  3164  //    This file is part of the GNU C Library.
  3165  //
  3166  //    The GNU C Library is free software; you can redistribute it and/or
  3167  //    modify it under the terms of the GNU Lesser General Public
  3168  //    License as published by the Free Software Foundation; either
  3169  //    version 2.1 of the License, or (at your option) any later version.
  3170  //
  3171  //    The GNU C Library is distributed in the hope that it will be useful,
  3172  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3173  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3174  //    Lesser General Public License for more details.
  3175  //
  3176  //    You should have received a copy of the GNU Lesser General Public
  3177  //    License along with the GNU C Library; if not, see
  3178  //    <http://www.gnu.org/licenses/>.
  3179  
  3180  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  3181  //    This file is part of the GNU C Library.
  3182  //
  3183  //    The GNU C Library is free software; you can redistribute it and/or
  3184  //    modify it under the terms of the GNU Lesser General Public
  3185  //    License as published by the Free Software Foundation; either
  3186  //    version 2.1 of the License, or (at your option) any later version.
  3187  //
  3188  //    The GNU C Library is distributed in the hope that it will be useful,
  3189  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3190  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3191  //    Lesser General Public License for more details.
  3192  //
  3193  //    You should have received a copy of the GNU Lesser General Public
  3194  //    License along with the GNU C Library; if not, see
  3195  //    <https://www.gnu.org/licenses/>.
  3196  
  3197  // Common definition of pthread_mutex_t.
  3198  
  3199  type X__pthread_list_t = X__pthread_internal_list /* thread-shared-types.h:53:3 */
  3200  
  3201  type X__pthread_internal_slist = struct{ F__next uintptr } /* thread-shared-types.h:55:9 */
  3202  
  3203  type X__pthread_slist_t = X__pthread_internal_slist /* thread-shared-types.h:58:3 */
  3204  
  3205  // Arch-specific mutex definitions.  A generic implementation is provided
  3206  //    by sysdeps/nptl/bits/struct_mutex.h.  If required, an architecture
  3207  //    can override it by defining:
  3208  //
  3209  //    1. struct __pthread_mutex_s (used on both pthread_mutex_t and mtx_t
  3210  //       definition).  It should contains at least the internal members
  3211  //       defined in the generic version.
  3212  //
  3213  //    2. __LOCK_ALIGNMENT for any extra attribute for internal lock used with
  3214  //       atomic operations.
  3215  //
  3216  //    3. The macro __PTHREAD_MUTEX_INITIALIZER used for static initialization.
  3217  //       It should initialize the mutex internal flag.
  3218  
  3219  // Default mutex implementation struct definitions.
  3220  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  3221  //    This file is part of the GNU C Library.
  3222  //
  3223  //    The GNU C Library is free software; you can redistribute it and/or
  3224  //    modify it under the terms of the GNU Lesser General Public
  3225  //    License as published by the Free Software Foundation; either
  3226  //    version 2.1 of the License, or (at your option) any later version.
  3227  //
  3228  //    The GNU C Library is distributed in the hope that it will be useful,
  3229  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3230  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3231  //    Lesser General Public License for more details.
  3232  //
  3233  //    You should have received a copy of the GNU Lesser General Public
  3234  //    License along with the GNU C Library; if not, see
  3235  //    <http://www.gnu.org/licenses/>.
  3236  
  3237  // Generic struct for both POSIX and C11 mutexes.  New ports are expected
  3238  //    to use the default layout, however architecture can redefine it to
  3239  //    add arch-specific extension (such as lock-elision).  The struct have
  3240  //    a size of 32 bytes on LP32 and 40 bytes on LP64 architectures.
  3241  
  3242  type X__pthread_mutex_s = struct {
  3243  	F__lock   int32
  3244  	F__count  uint32
  3245  	F__owner  int32
  3246  	F__kind   int32
  3247  	F__nusers uint32
  3248  	F__20     struct{ F__spins int32 }
  3249  } /* struct_mutex.h:27:1 */
  3250  
  3251  // Arch-sepecific read-write lock definitions.  A generic implementation is
  3252  //    provided by struct_rwlock.h.  If required, an architecture can override it
  3253  //    by defining:
  3254  //
  3255  //    1. struct __pthread_rwlock_arch_t (used on pthread_rwlock_t definition).
  3256  //       It should contain at least the internal members defined in the
  3257  //       generic version.
  3258  //
  3259  //    2. The macro __PTHREAD_RWLOCK_INITIALIZER used for static initialization.
  3260  //       It should initialize the rwlock internal type.
  3261  
  3262  // Default read-write lock implementation struct definitions.
  3263  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  3264  //    This file is part of the GNU C Library.
  3265  //
  3266  //    The GNU C Library is free software; you can redistribute it and/or
  3267  //    modify it under the terms of the GNU Lesser General Public
  3268  //    License as published by the Free Software Foundation; either
  3269  //    version 2.1 of the License, or (at your option) any later version.
  3270  //
  3271  //    The GNU C Library is distributed in the hope that it will be useful,
  3272  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3273  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3274  //    Lesser General Public License for more details.
  3275  //
  3276  //    You should have received a copy of the GNU Lesser General Public
  3277  //    License along with the GNU C Library; if not, see
  3278  //    <http://www.gnu.org/licenses/>.
  3279  
  3280  // Endian macros for string.h functions
  3281  //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  3282  //    This file is part of the GNU C Library.
  3283  //
  3284  //    The GNU C Library is free software; you can redistribute it and/or
  3285  //    modify it under the terms of the GNU Lesser General Public
  3286  //    License as published by the Free Software Foundation; either
  3287  //    version 2.1 of the License, or (at your option) any later version.
  3288  //
  3289  //    The GNU C Library is distributed in the hope that it will be useful,
  3290  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3291  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3292  //    Lesser General Public License for more details.
  3293  //
  3294  //    You should have received a copy of the GNU Lesser General Public
  3295  //    License along with the GNU C Library; if not, see
  3296  //    <http://www.gnu.org/licenses/>.
  3297  
  3298  // Generic struct for both POSIX read-write lock.  New ports are expected
  3299  //    to use the default layout, however archictetures can redefine it to add
  3300  //    arch-specific extensions (such as lock-elision).  The struct have a size
  3301  //    of 32 bytes on both LP32 and LP64 architectures.
  3302  
  3303  type X__pthread_rwlock_arch_t = struct {
  3304  	F__readers       uint32
  3305  	F__writers       uint32
  3306  	F__wrphase_futex uint32
  3307  	F__writers_futex uint32
  3308  	F__pad3          uint32
  3309  	F__pad4          uint32
  3310  	F__flags         uint8
  3311  	F__shared        uint8
  3312  	F__pad1          uint8
  3313  	F__pad2          uint8
  3314  	F__cur_writer    int32
  3315  } /* struct_rwlock.h:29:1 */
  3316  
  3317  // Common definition of pthread_cond_t.
  3318  
  3319  type X__pthread_cond_s = struct {
  3320  	F__0            struct{ F__wseq uint64 }
  3321  	F__8            struct{ F__g1_start uint64 }
  3322  	F__g_refs       [2]uint32
  3323  	F__g_size       [2]uint32
  3324  	F__g1_orig_size uint32
  3325  	F__wrefs        uint32
  3326  	F__g_signals    [2]uint32
  3327  } /* thread-shared-types.h:92:1 */
  3328  
  3329  // Thread identifiers.  The structure of the attribute type is not
  3330  //    exposed on purpose.
  3331  type Pthread_t = uint32 /* pthreadtypes.h:27:27 */
  3332  
  3333  // Data structures for mutex handling.  The structure of the attribute
  3334  //    type is not exposed on purpose.
  3335  type Pthread_mutexattr_t = struct {
  3336  	F__ccgo_pad1 [0]uint32
  3337  	F__size      [4]uint8
  3338  } /* pthreadtypes.h:36:3 */
  3339  
  3340  // Data structure for condition variable handling.  The structure of
  3341  //    the attribute type is not exposed on purpose.
  3342  type Pthread_condattr_t = struct {
  3343  	F__ccgo_pad1 [0]uint32
  3344  	F__size      [4]uint8
  3345  } /* pthreadtypes.h:45:3 */
  3346  
  3347  // Keys for thread-specific data
  3348  type Pthread_key_t = uint32 /* pthreadtypes.h:49:22 */
  3349  
  3350  // Once-only execution
  3351  type Pthread_once_t = int32 /* pthreadtypes.h:53:30 */
  3352  
  3353  type Pthread_attr_t1 = struct {
  3354  	F__ccgo_pad1 [0]uint32
  3355  	F__size      [36]uint8
  3356  } /* pthreadtypes.h:56:1 */
  3357  
  3358  type Pthread_attr_t = Pthread_attr_t1 /* pthreadtypes.h:62:30 */
  3359  
  3360  type Pthread_mutex_t = struct{ F__data X__pthread_mutex_s } /* pthreadtypes.h:72:3 */
  3361  
  3362  type Pthread_cond_t = struct{ F__data X__pthread_cond_s } /* pthreadtypes.h:80:3 */
  3363  
  3364  // Data structure for reader-writer lock variable handling.  The
  3365  //    structure of the attribute type is deliberately not exposed.
  3366  type Pthread_rwlock_t = struct{ F__data X__pthread_rwlock_arch_t } /* pthreadtypes.h:91:3 */
  3367  
  3368  type Pthread_rwlockattr_t = struct {
  3369  	F__ccgo_pad1 [0]uint32
  3370  	F__size      [8]uint8
  3371  } /* pthreadtypes.h:97:3 */
  3372  
  3373  // POSIX spinlock data type.
  3374  type Pthread_spinlock_t = int32 /* pthreadtypes.h:103:22 */
  3375  
  3376  // POSIX barriers data type.  The structure of the type is
  3377  //    deliberately not exposed.
  3378  type Pthread_barrier_t = struct {
  3379  	F__ccgo_pad1 [0]uint32
  3380  	F__size      [20]uint8
  3381  } /* pthreadtypes.h:112:3 */
  3382  
  3383  type Pthread_barrierattr_t = struct {
  3384  	F__ccgo_pad1 [0]uint32
  3385  	F__size      [4]uint8
  3386  } /* pthreadtypes.h:118:3 */
  3387  
  3388  // Copyright (C) 1989-2020 Free Software Foundation, Inc.
  3389  //
  3390  // This file is part of GCC.
  3391  //
  3392  // GCC is free software; you can redistribute it and/or modify
  3393  // it under the terms of the GNU General Public License as published by
  3394  // the Free Software Foundation; either version 3, or (at your option)
  3395  // any later version.
  3396  //
  3397  // GCC is distributed in the hope that it will be useful,
  3398  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  3399  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3400  // GNU General Public License for more details.
  3401  //
  3402  // Under Section 7 of GPL version 3, you are granted additional
  3403  // permissions described in the GCC Runtime Library Exception, version
  3404  // 3.1, as published by the Free Software Foundation.
  3405  //
  3406  // You should have received a copy of the GNU General Public License and
  3407  // a copy of the GCC Runtime Library Exception along with this program;
  3408  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  3409  // <http://www.gnu.org/licenses/>.
  3410  
  3411  // ISO C Standard:  7.15  Variable arguments  <stdarg.h>
  3412  
  3413  // Define __gnuc_va_list.
  3414  
  3415  type X__gnuc_va_list = X__builtin_va_list /* stdarg.h:40:27 */
  3416  
  3417  // Define the standard macros for the user,
  3418  //    if this invocation was from the user program.
  3419  
  3420  // Define va_list, if desired, from __gnuc_va_list.
  3421  // We deliberately do not define va_list when called from
  3422  //    stdio.h, because ANSI C says that stdio.h is not supposed to define
  3423  //    va_list.  stdio.h needs to have access to that data type,
  3424  //    but must not use that name.  It should use the name __gnuc_va_list,
  3425  //    which is safe because it is reserved for the implementation.
  3426  
  3427  // The macro _VA_LIST_ is the same thing used by this file in Ultrix.
  3428  //    But on BSD NET2 we must not test or define or undef it.
  3429  //    (Note that the comments in NET 2's ansi.h
  3430  //    are incorrect for _VA_LIST_--see stdio.h!)
  3431  // The macro _VA_LIST_DEFINED is used in Windows NT 3.5
  3432  // The macro _VA_LIST is used in SCO Unix 3.2.
  3433  // The macro _VA_LIST_T_H is used in the Bull dpx2
  3434  // The macro __va_list__ is used by BeOS.
  3435  type Va_list = X__gnuc_va_list /* stdarg.h:99:24 */
  3436  
  3437  // a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and
  3438  // "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even
  3439  // though the former does not conform to the LFS document), but considering
  3440  // both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as
  3441  // equivalently requesting no 64-bit operations
  3442  
  3443  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  3444  //    This file is part of the GNU C Library.
  3445  //
  3446  //    The GNU C Library is free software; you can redistribute it and/or
  3447  //    modify it under the terms of the GNU Lesser General Public
  3448  //    License as published by the Free Software Foundation; either
  3449  //    version 2.1 of the License, or (at your option) any later version.
  3450  //
  3451  //    The GNU C Library is distributed in the hope that it will be useful,
  3452  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3453  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3454  //    Lesser General Public License for more details.
  3455  //
  3456  //    You should have received a copy of the GNU Lesser General Public
  3457  //    License along with the GNU C Library; if not, see
  3458  //    <https://www.gnu.org/licenses/>.
  3459  
  3460  //	POSIX Standard: 2.10 Symbolic Constants		<unistd.h>
  3461  
  3462  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  3463  //    This file is part of the GNU C Library.
  3464  //
  3465  //    The GNU C Library is free software; you can redistribute it and/or
  3466  //    modify it under the terms of the GNU Lesser General Public
  3467  //    License as published by the Free Software Foundation; either
  3468  //    version 2.1 of the License, or (at your option) any later version.
  3469  //
  3470  //    The GNU C Library is distributed in the hope that it will be useful,
  3471  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3472  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3473  //    Lesser General Public License for more details.
  3474  //
  3475  //    You should have received a copy of the GNU Lesser General Public
  3476  //    License along with the GNU C Library; if not, see
  3477  //    <https://www.gnu.org/licenses/>.
  3478  
  3479  // These may be used to determine what facilities are present at compile time.
  3480  //    Their values can be obtained at run time from `sysconf'.
  3481  
  3482  // POSIX Standard approved as ISO/IEC 9945-1 as of September 2008.
  3483  
  3484  // These are not #ifdef __USE_POSIX2 because they are
  3485  //    in the theoretically application-owned namespace.
  3486  
  3487  // The utilities on GNU systems also correspond to this version.
  3488  
  3489  // The utilities on GNU systems also correspond to this version.
  3490  
  3491  // This symbol was required until the 2001 edition of POSIX.
  3492  
  3493  // If defined, the implementation supports the
  3494  //    C Language Bindings Option.
  3495  
  3496  // If defined, the implementation supports the
  3497  //    C Language Development Utilities Option.
  3498  
  3499  // If defined, the implementation supports the
  3500  //    Software Development Utilities Option.
  3501  
  3502  // If defined, the implementation supports the
  3503  //    creation of locales with the localedef utility.
  3504  
  3505  // X/Open version number to which the library conforms.  It is selectable.
  3506  
  3507  // Commands and utilities from XPG4 are available.
  3508  
  3509  // We are compatible with the old published standards as well.
  3510  
  3511  // The X/Open Unix extensions are available.
  3512  
  3513  // The enhanced internationalization capabilities according to XPG4.2
  3514  //    are present.
  3515  
  3516  // The legacy interfaces are also available.
  3517  
  3518  // Get values of POSIX options:
  3519  //
  3520  //    If these symbols are defined, the corresponding features are
  3521  //    always available.  If not, they may be available sometimes.
  3522  //    The current values can be obtained with `sysconf'.
  3523  //
  3524  //    _POSIX_JOB_CONTROL		Job control is supported.
  3525  //    _POSIX_SAVED_IDS		Processes have a saved set-user-ID
  3526  // 				and a saved set-group-ID.
  3527  //    _POSIX_REALTIME_SIGNALS	Real-time, queued signals are supported.
  3528  //    _POSIX_PRIORITY_SCHEDULING	Priority scheduling is supported.
  3529  //    _POSIX_TIMERS		POSIX.4 clocks and timers are supported.
  3530  //    _POSIX_ASYNCHRONOUS_IO	Asynchronous I/O is supported.
  3531  //    _POSIX_PRIORITIZED_IO	Prioritized asynchronous I/O is supported.
  3532  //    _POSIX_SYNCHRONIZED_IO	Synchronizing file data is supported.
  3533  //    _POSIX_FSYNC			The fsync function is present.
  3534  //    _POSIX_MAPPED_FILES		Mapping of files to memory is supported.
  3535  //    _POSIX_MEMLOCK		Locking of all memory is supported.
  3536  //    _POSIX_MEMLOCK_RANGE		Locking of ranges of memory is supported.
  3537  //    _POSIX_MEMORY_PROTECTION	Setting of memory protections is supported.
  3538  //    _POSIX_MESSAGE_PASSING	POSIX.4 message queues are supported.
  3539  //    _POSIX_SEMAPHORES		POSIX.4 counting semaphores are supported.
  3540  //    _POSIX_SHARED_MEMORY_OBJECTS	POSIX.4 shared memory objects are supported.
  3541  //    _POSIX_THREADS		POSIX.1c pthreads are supported.
  3542  //    _POSIX_THREAD_ATTR_STACKADDR	Thread stack address attribute option supported.
  3543  //    _POSIX_THREAD_ATTR_STACKSIZE	Thread stack size attribute option supported.
  3544  //    _POSIX_THREAD_SAFE_FUNCTIONS	Thread-safe functions are supported.
  3545  //    _POSIX_THREAD_PRIORITY_SCHEDULING
  3546  // 				POSIX.1c thread execution scheduling supported.
  3547  //    _POSIX_THREAD_PRIO_INHERIT	Thread priority inheritance option supported.
  3548  //    _POSIX_THREAD_PRIO_PROTECT	Thread priority protection option supported.
  3549  //    _POSIX_THREAD_PROCESS_SHARED	Process-shared synchronization supported.
  3550  //    _POSIX_PII			Protocol-independent interfaces are supported.
  3551  //    _POSIX_PII_XTI		XTI protocol-indep. interfaces are supported.
  3552  //    _POSIX_PII_SOCKET		Socket protocol-indep. interfaces are supported.
  3553  //    _POSIX_PII_INTERNET		Internet family of protocols supported.
  3554  //    _POSIX_PII_INTERNET_STREAM	Connection-mode Internet protocol supported.
  3555  //    _POSIX_PII_INTERNET_DGRAM	Connectionless Internet protocol supported.
  3556  //    _POSIX_PII_OSI		ISO/OSI family of protocols supported.
  3557  //    _POSIX_PII_OSI_COTS		Connection-mode ISO/OSI service supported.
  3558  //    _POSIX_PII_OSI_CLTS		Connectionless ISO/OSI service supported.
  3559  //    _POSIX_POLL			Implementation supports `poll' function.
  3560  //    _POSIX_SELECT		Implementation supports `select' and `pselect'.
  3561  //
  3562  //    _XOPEN_REALTIME		X/Open realtime support is available.
  3563  //    _XOPEN_REALTIME_THREADS	X/Open realtime thread support is available.
  3564  //    _XOPEN_SHM			Shared memory interface according to XPG4.2.
  3565  //
  3566  //    _XBS5_ILP32_OFF32		Implementation provides environment with 32-bit
  3567  // 				int, long, pointer, and off_t types.
  3568  //    _XBS5_ILP32_OFFBIG		Implementation provides environment with 32-bit
  3569  // 				int, long, and pointer and off_t with at least
  3570  // 				64 bits.
  3571  //    _XBS5_LP64_OFF64		Implementation provides environment with 32-bit
  3572  // 				int, and 64-bit long, pointer, and off_t types.
  3573  //    _XBS5_LPBIG_OFFBIG		Implementation provides environment with at
  3574  // 				least 32 bits int and long, pointer, and off_t
  3575  // 				with at least 64 bits.
  3576  //
  3577  //    If any of these symbols is defined as -1, the corresponding option is not
  3578  //    true for any file.  If any is defined as other than -1, the corresponding
  3579  //    option is true for all files.  If a symbol is not defined at all, the value
  3580  //    for a specific file can be obtained from `pathconf' and `fpathconf'.
  3581  //
  3582  //    _POSIX_CHOWN_RESTRICTED	Only the super user can use `chown' to change
  3583  // 				the owner of a file.  `chown' can only be used
  3584  // 				to change the group ID of a file to a group of
  3585  // 				which the calling process is a member.
  3586  //    _POSIX_NO_TRUNC		Pathname components longer than
  3587  // 				NAME_MAX generate an error.
  3588  //    _POSIX_VDISABLE		If defined, if the value of an element of the
  3589  // 				`c_cc' member of `struct termios' is
  3590  // 				_POSIX_VDISABLE, no character will have the
  3591  // 				effect associated with that element.
  3592  //    _POSIX_SYNC_IO		Synchronous I/O may be performed.
  3593  //    _POSIX_ASYNC_IO		Asynchronous I/O may be performed.
  3594  //    _POSIX_PRIO_IO		Prioritized Asynchronous I/O may be performed.
  3595  //
  3596  //    Support for the Large File Support interface is not generally available.
  3597  //    If it is available the following constants are defined to one.
  3598  //    _LFS64_LARGEFILE		Low-level I/O supports large files.
  3599  //    _LFS64_STDIO			Standard I/O supports large files.
  3600  //
  3601  
  3602  // Define POSIX options for Linux.
  3603  //    Copyright (C) 1996-2020 Free Software Foundation, Inc.
  3604  //    This file is part of the GNU C Library.
  3605  //
  3606  //    The GNU C Library is free software; you can redistribute it and/or
  3607  //    modify it under the terms of the GNU Lesser General Public License as
  3608  //    published by the Free Software Foundation; either version 2.1 of the
  3609  //    License, or (at your option) any later version.
  3610  //
  3611  //    The GNU C Library is distributed in the hope that it will be useful,
  3612  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3613  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3614  //    Lesser General Public License for more details.
  3615  //
  3616  //    You should have received a copy of the GNU Lesser General Public
  3617  //    License along with the GNU C Library; see the file COPYING.LIB.  If
  3618  //    not, see <https://www.gnu.org/licenses/>.
  3619  
  3620  // Job control is supported.
  3621  
  3622  // Processes have a saved set-user-ID and a saved set-group-ID.
  3623  
  3624  // Priority scheduling is not supported with the correct semantics,
  3625  //    but GNU/Linux applications expect that the corresponding interfaces
  3626  //    are available, even though the semantics do not meet the POSIX
  3627  //    requirements.  See glibc bug 14829.
  3628  
  3629  // Synchronizing file data is supported.
  3630  
  3631  // The fsync function is present.
  3632  
  3633  // Mapping of files to memory is supported.
  3634  
  3635  // Locking of all memory is supported.
  3636  
  3637  // Locking of ranges of memory is supported.
  3638  
  3639  // Setting of memory protections is supported.
  3640  
  3641  // Some filesystems allow all users to change file ownership.
  3642  
  3643  // `c_cc' member of 'struct termios' structure can be disabled by
  3644  //    using the value _POSIX_VDISABLE.
  3645  
  3646  // Filenames are not silently truncated.
  3647  
  3648  // X/Open realtime support is available.
  3649  
  3650  // X/Open thread realtime support is available.
  3651  
  3652  // XPG4.2 shared memory is supported.
  3653  
  3654  // Tell we have POSIX threads.
  3655  
  3656  // We have the reentrant functions described in POSIX.
  3657  
  3658  // We provide priority scheduling for threads.
  3659  
  3660  // We support user-defined stack sizes.
  3661  
  3662  // We support user-defined stacks.
  3663  
  3664  // We support priority inheritence.
  3665  
  3666  // We support priority protection, though only for non-robust
  3667  //    mutexes.
  3668  
  3669  // We support priority inheritence for robust mutexes.
  3670  
  3671  // We do not support priority protection for robust mutexes.
  3672  
  3673  // We support POSIX.1b semaphores.
  3674  
  3675  // Real-time signals are supported.
  3676  
  3677  // We support asynchronous I/O.
  3678  // Alternative name for Unix98.
  3679  // Support for prioritization is also available.
  3680  
  3681  // The LFS support in asynchronous I/O is also available.
  3682  
  3683  // The rest of the LFS is also available.
  3684  
  3685  // POSIX shared memory objects are implemented.
  3686  
  3687  // CPU-time clocks support needs to be checked at runtime.
  3688  
  3689  // Clock support in threads must be also checked at runtime.
  3690  
  3691  // GNU libc provides regular expression handling.
  3692  
  3693  // Reader/Writer locks are available.
  3694  
  3695  // We have a POSIX shell.
  3696  
  3697  // We support the Timeouts option.
  3698  
  3699  // We support spinlocks.
  3700  
  3701  // The `spawn' function family is supported.
  3702  
  3703  // We have POSIX timers.
  3704  
  3705  // The barrier functions are available.
  3706  
  3707  // POSIX message queues are available.
  3708  
  3709  // Thread process-shared synchronization is supported.
  3710  
  3711  // The monotonic clock might be available.
  3712  
  3713  // The clock selection interfaces are available.
  3714  
  3715  // Advisory information interfaces are available.
  3716  
  3717  // IPv6 support is available.
  3718  
  3719  // Raw socket support is available.
  3720  
  3721  // We have at least one terminal.
  3722  
  3723  // Neither process nor thread sporadic server interfaces is available.
  3724  
  3725  // trace.h is not available.
  3726  
  3727  // Typed memory objects are not available.
  3728  
  3729  // Get the environment definitions from Unix98.
  3730  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  3731  //    This file is part of the GNU C Library.
  3732  //
  3733  //    The GNU C Library is free software; you can redistribute it and/or
  3734  //    modify it under the terms of the GNU Lesser General Public
  3735  //    License as published by the Free Software Foundation; either
  3736  //    version 2.1 of the License, or (at your option) any later version.
  3737  //
  3738  //    The GNU C Library is distributed in the hope that it will be useful,
  3739  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3740  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3741  //    Lesser General Public License for more details.
  3742  //
  3743  //    You should have received a copy of the GNU Lesser General Public
  3744  //    License along with the GNU C Library; if not, see
  3745  //    <https://www.gnu.org/licenses/>.
  3746  
  3747  // Copyright (C) 1999-2020 Free Software Foundation, Inc.
  3748  //    This file is part of the GNU C Library.
  3749  //
  3750  //    The GNU C Library is free software; you can redistribute it and/or
  3751  //    modify it under the terms of the GNU Lesser General Public
  3752  //    License as published by the Free Software Foundation; either
  3753  //    version 2.1 of the License, or (at your option) any later version.
  3754  //
  3755  //    The GNU C Library is distributed in the hope that it will be useful,
  3756  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3757  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3758  //    Lesser General Public License for more details.
  3759  //
  3760  //    You should have received a copy of the GNU Lesser General Public
  3761  //    License along with the GNU C Library; if not, see
  3762  //    <https://www.gnu.org/licenses/>.
  3763  
  3764  // This header should define the following symbols under the described
  3765  //    situations.  A value `1' means that the model is always supported,
  3766  //    `-1' means it is never supported.  Undefined means it cannot be
  3767  //    statically decided.
  3768  //
  3769  //    _POSIX_V7_ILP32_OFF32   32bit int, long, pointers, and off_t type
  3770  //    _POSIX_V7_ILP32_OFFBIG  32bit int, long, and pointers and larger off_t type
  3771  //
  3772  //    _POSIX_V7_LP64_OFF32	   64bit long and pointers and 32bit off_t type
  3773  //    _POSIX_V7_LPBIG_OFFBIG  64bit long and pointers and large off_t type
  3774  //
  3775  //    The macros _POSIX_V6_ILP32_OFF32, _POSIX_V6_ILP32_OFFBIG,
  3776  //    _POSIX_V6_LP64_OFF32, _POSIX_V6_LPBIG_OFFBIG, _XBS5_ILP32_OFF32,
  3777  //    _XBS5_ILP32_OFFBIG, _XBS5_LP64_OFF32, and _XBS5_LPBIG_OFFBIG were
  3778  //    used in previous versions of the Unix standard and are available
  3779  //    only for compatibility.
  3780  
  3781  // By default we have 32-bit wide `int', `long int', pointers and `off_t'
  3782  //    and all platforms support LFS.
  3783  
  3784  // We optionally provide an environment with the above size but an 64-bit
  3785  //    side `off_t'.  Therefore we don't define _POSIX_V7_ILP32_OFFBIG.
  3786  
  3787  // We can never provide environments with 64-bit wide pointers.
  3788  
  3789  // CFLAGS.
  3790  
  3791  // Standard file descriptors.
  3792  
  3793  // All functions that are not declared anywhere else.
  3794  
  3795  // bits/types.h -- definitions of __*_t types underlying *_t types.
  3796  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  3797  //    This file is part of the GNU C Library.
  3798  //
  3799  //    The GNU C Library is free software; you can redistribute it and/or
  3800  //    modify it under the terms of the GNU Lesser General Public
  3801  //    License as published by the Free Software Foundation; either
  3802  //    version 2.1 of the License, or (at your option) any later version.
  3803  //
  3804  //    The GNU C Library is distributed in the hope that it will be useful,
  3805  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3806  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3807  //    Lesser General Public License for more details.
  3808  //
  3809  //    You should have received a copy of the GNU Lesser General Public
  3810  //    License along with the GNU C Library; if not, see
  3811  //    <https://www.gnu.org/licenses/>.
  3812  
  3813  // Never include this file directly; use <sys/types.h> instead.
  3814  
  3815  // Copyright (C) 1989-2020 Free Software Foundation, Inc.
  3816  //
  3817  // This file is part of GCC.
  3818  //
  3819  // GCC is free software; you can redistribute it and/or modify
  3820  // it under the terms of the GNU General Public License as published by
  3821  // the Free Software Foundation; either version 3, or (at your option)
  3822  // any later version.
  3823  //
  3824  // GCC is distributed in the hope that it will be useful,
  3825  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  3826  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  3827  // GNU General Public License for more details.
  3828  //
  3829  // Under Section 7 of GPL version 3, you are granted additional
  3830  // permissions described in the GCC Runtime Library Exception, version
  3831  // 3.1, as published by the Free Software Foundation.
  3832  //
  3833  // You should have received a copy of the GNU General Public License and
  3834  // a copy of the GCC Runtime Library Exception along with this program;
  3835  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  3836  // <http://www.gnu.org/licenses/>.
  3837  
  3838  // ISO C Standard:  7.17  Common definitions  <stddef.h>
  3839  
  3840  // Any one of these symbols __need_* means that GNU libc
  3841  //    wants us just to define one data type.  So don't define
  3842  //    the symbols that indicate this file's entire job has been done.
  3843  
  3844  // This avoids lossage on SunOS but only if stdtypes.h comes first.
  3845  //    There's no way to win with the other order!  Sun lossage.
  3846  
  3847  // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
  3848  //    Just ignore it.
  3849  
  3850  // On VxWorks, <type/vxTypesBase.h> may have defined macros like
  3851  //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
  3852  //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
  3853  //    not defined, and so that defining this macro defines _GCC_SIZE_T.
  3854  //    If we find that the macros are still defined at this point, we must
  3855  //    invoke them so that the type is defined as expected.
  3856  
  3857  // In case nobody has defined these types, but we aren't running under
  3858  //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
  3859  //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
  3860  //    parts of GCC is compiled by an older compiler, that actually
  3861  //    include gstddef.h, such as collect2.
  3862  
  3863  // Signed type of difference of two pointers.
  3864  
  3865  // Define this type if we are doing the whole job,
  3866  //    or if we want this type in particular.
  3867  
  3868  // If this symbol has done its job, get rid of it.
  3869  
  3870  // Unsigned type of `sizeof' something.
  3871  
  3872  // Define this type if we are doing the whole job,
  3873  //    or if we want this type in particular.
  3874  
  3875  // Wide character type.
  3876  //    Locale-writers should change this as necessary to
  3877  //    be big enough to hold unique values not between 0 and 127,
  3878  //    and not (wchar_t) -1, for each defined multibyte character.
  3879  
  3880  // Define this type if we are doing the whole job,
  3881  //    or if we want this type in particular.
  3882  
  3883  // A null pointer constant.
  3884  
  3885  // Offset of member MEMBER in a struct of type TYPE.
  3886  
  3887  // The Single Unix specification says that some more types are
  3888  //    available here.
  3889  
  3890  type Useconds_t = X__useconds_t /* unistd.h:255:22 */
  3891  
  3892  type Intptr_t = X__intptr_t /* unistd.h:267:20 */
  3893  
  3894  type Socklen_t = X__socklen_t /* unistd.h:274:21 */
  3895  
  3896  // Define some macros helping to catch buffer overflows.
  3897  
  3898  // System-specific extensions.
  3899  // System-specific extensions of <unistd.h>, Linux version.
  3900  //    Copyright (C) 2019-2020 Free Software Foundation, Inc.
  3901  //    This file is part of the GNU C Library.
  3902  //
  3903  //    The GNU C Library is free software; you can redistribute it and/or
  3904  //    modify it under the terms of the GNU Lesser General Public
  3905  //    License as published by the Free Software Foundation; either
  3906  //    version 2.1 of the License, or (at your option) any later version.
  3907  //
  3908  //    The GNU C Library is distributed in the hope that it will be useful,
  3909  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  3910  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  3911  //    Lesser General Public License for more details.
  3912  //
  3913  //    You should have received a copy of the GNU Lesser General Public
  3914  //    License along with the GNU C Library; if not, see
  3915  //    <https://www.gnu.org/licenses/>.
  3916  
  3917  // MVS linker does not support external names larger than 8 bytes
  3918  
  3919  //
  3920  //     The 'zlib' compression library provides in-memory compression and
  3921  //   decompression functions, including integrity checks of the uncompressed data.
  3922  //   This version of the library supports only one compression method (deflation)
  3923  //   but other algorithms will be added later and will have the same stream
  3924  //   interface.
  3925  //
  3926  //     Compression can be done in a single step if the buffers are large enough,
  3927  //   or can be done by repeated calls of the compression function.  In the latter
  3928  //   case, the application must provide more input and/or consume the output
  3929  //   (providing more output space) before each call.
  3930  //
  3931  //     The compressed data format used by default by the in-memory functions is
  3932  //   the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped
  3933  //   around a deflate stream, which is itself documented in RFC 1951.
  3934  //
  3935  //     The library also supports reading and writing files in gzip (.gz) format
  3936  //   with an interface similar to that of stdio using the functions that start
  3937  //   with "gz".  The gzip format is different from the zlib format.  gzip is a
  3938  //   gzip wrapper, documented in RFC 1952, wrapped around a deflate stream.
  3939  //
  3940  //     This library can optionally read and write gzip and raw deflate streams in
  3941  //   memory as well.
  3942  //
  3943  //     The zlib format was designed to be compact and fast for use in memory
  3944  //   and on communications channels.  The gzip format was designed for single-
  3945  //   file compression on file systems, has a larger header than zlib to maintain
  3946  //   directory information, and uses a different, slower check method than zlib.
  3947  //
  3948  //     The library does not install any signal handler.  The decoder checks
  3949  //   the consistency of the compressed data, so the library should never crash
  3950  //   even in the case of corrupted input.
  3951  
  3952  type Alloc_func = uintptr /* zlib.h:81:16 */
  3953  type Free_func = uintptr  /* zlib.h:82:16 */
  3954  
  3955  type Internal_state = struct {
  3956  	Fstrm             Z_streamp
  3957  	Fstatus           int32
  3958  	Fpending_buf      uintptr
  3959  	Fpending_buf_size Ulg
  3960  	Fpending_out      uintptr
  3961  	Fpending          Ulg
  3962  	Fwrap             int32
  3963  	Fgzhead           Gz_headerp
  3964  	Fgzindex          Ulg
  3965  	Fmethod           Byte
  3966  	F__ccgo_pad1      [3]byte
  3967  	Flast_flush       int32
  3968  	Fw_size           UInt
  3969  	Fw_bits           UInt
  3970  	Fw_mask           UInt
  3971  	Fwindow           uintptr
  3972  	Fwindow_size      Ulg
  3973  	Fprev             uintptr
  3974  	Fhead             uintptr
  3975  	Fins_h            UInt
  3976  	Fhash_size        UInt
  3977  	Fhash_bits        UInt
  3978  	Fhash_mask        UInt
  3979  	Fhash_shift       UInt
  3980  	Fblock_start      int32
  3981  	Fmatch_length     UInt
  3982  	Fprev_match       IPos
  3983  	Fmatch_available  int32
  3984  	Fstrstart         UInt
  3985  	Fmatch_start      UInt
  3986  	Flookahead        UInt
  3987  	Fprev_length      UInt
  3988  	Fmax_chain_length UInt
  3989  	Fmax_lazy_match   UInt
  3990  	Flevel            int32
  3991  	Fstrategy         int32
  3992  	Fgood_match       UInt
  3993  	Fnice_match       int32
  3994  	Fdyn_ltree        [573]struct {
  3995  		Ffc struct{ Ffreq Ush }
  3996  		Fdl struct{ Fdad Ush }
  3997  	}
  3998  	Fdyn_dtree [61]struct {
  3999  		Ffc struct{ Ffreq Ush }
  4000  		Fdl struct{ Fdad Ush }
  4001  	}
  4002  	Fbl_tree [39]struct {
  4003  		Ffc struct{ Ffreq Ush }
  4004  		Fdl struct{ Fdad Ush }
  4005  	}
  4006  	Fl_desc struct {
  4007  		Fdyn_tree  uintptr
  4008  		Fmax_code  int32
  4009  		Fstat_desc uintptr
  4010  	}
  4011  	Fd_desc struct {
  4012  		Fdyn_tree  uintptr
  4013  		Fmax_code  int32
  4014  		Fstat_desc uintptr
  4015  	}
  4016  	Fbl_desc struct {
  4017  		Fdyn_tree  uintptr
  4018  		Fmax_code  int32
  4019  		Fstat_desc uintptr
  4020  	}
  4021  	Fbl_count    [16]Ush
  4022  	Fheap        [573]int32
  4023  	Fheap_len    int32
  4024  	Fheap_max    int32
  4025  	Fdepth       [573]Uch
  4026  	F__ccgo_pad2 [3]byte
  4027  	Fl_buf       uintptr
  4028  	Flit_bufsize UInt
  4029  	Flast_lit    UInt
  4030  	Fd_buf       uintptr
  4031  	Fopt_len     Ulg
  4032  	Fstatic_len  Ulg
  4033  	Fmatches     UInt
  4034  	Finsert      UInt
  4035  	Fbi_buf      Ush
  4036  	F__ccgo_pad3 [2]byte
  4037  	Fbi_valid    int32
  4038  	Fhigh_water  Ulg
  4039  } /* zlib.h:84:1 */
  4040  
  4041  type Z_stream_s = struct {
  4042  	Fnext_in   uintptr
  4043  	Favail_in  UInt
  4044  	Ftotal_in  ULong
  4045  	Fnext_out  uintptr
  4046  	Favail_out UInt
  4047  	Ftotal_out ULong
  4048  	Fmsg       uintptr
  4049  	Fstate     uintptr
  4050  	Fzalloc    Alloc_func
  4051  	Fzfree     Free_func
  4052  	Fopaque    Voidpf
  4053  	Fdata_type int32
  4054  	Fadler     ULong
  4055  	Freserved  ULong
  4056  } /* zlib.h:86:9 */
  4057  
  4058  type Z_stream = Z_stream_s /* zlib.h:106:3 */
  4059  
  4060  type Z_streamp = uintptr /* zlib.h:108:22 */
  4061  
  4062  //
  4063  //      gzip header information passed to and from zlib routines.  See RFC 1952
  4064  //   for more details on the meanings of these fields.
  4065  type Gz_header_s = struct {
  4066  	Ftext      int32
  4067  	Ftime      ULong
  4068  	Fxflags    int32
  4069  	Fos        int32
  4070  	Fextra     uintptr
  4071  	Fextra_len UInt
  4072  	Fextra_max UInt
  4073  	Fname      uintptr
  4074  	Fname_max  UInt
  4075  	Fcomment   uintptr
  4076  	Fcomm_max  UInt
  4077  	Fhcrc      int32
  4078  	Fdone      int32
  4079  } /* zlib.h:114:9 */
  4080  
  4081  //
  4082  //      gzip header information passed to and from zlib routines.  See RFC 1952
  4083  //   for more details on the meanings of these fields.
  4084  type Gz_header = Gz_header_s /* zlib.h:129:3 */
  4085  
  4086  type Gz_headerp = uintptr /* zlib.h:131:23 */
  4087  //
  4088  //      inflateGetHeader() requests that gzip header information be stored in the
  4089  //    provided gz_header structure.  inflateGetHeader() may be called after
  4090  //    inflateInit2() or inflateReset(), and before the first call of inflate().
  4091  //    As inflate() processes the gzip stream, head->done is zero until the header
  4092  //    is completed, at which time head->done is set to one.  If a zlib stream is
  4093  //    being decoded, then head->done is set to -1 to indicate that there will be
  4094  //    no gzip header information forthcoming.  Note that Z_BLOCK or Z_TREES can be
  4095  //    used to force inflate() to return immediately after header processing is
  4096  //    complete and before any actual data is decompressed.
  4097  //
  4098  //      The text, time, xflags, and os fields are filled in with the gzip header
  4099  //    contents.  hcrc is set to true if there is a header CRC.  (The header CRC
  4100  //    was valid if done is set to one.) If extra is not Z_NULL, then extra_max
  4101  //    contains the maximum number of bytes to write to extra.  Once done is true,
  4102  //    extra_len contains the actual extra field length, and extra contains the
  4103  //    extra field, or that field truncated if extra_max is less than extra_len.
  4104  //    If name is not Z_NULL, then up to name_max characters are written there,
  4105  //    terminated with a zero unless the length is greater than name_max.  If
  4106  //    comment is not Z_NULL, then up to comm_max characters are written there,
  4107  //    terminated with a zero unless the length is greater than comm_max.  When any
  4108  //    of extra, name, or comment are not Z_NULL and the respective field is not
  4109  //    present in the header, then that field is set to Z_NULL to signal its
  4110  //    absence.  This allows the use of deflateSetHeader() with the returned
  4111  //    structure to duplicate the header.  However if those fields are set to
  4112  //    allocated memory, then the application will need to save those pointers
  4113  //    elsewhere so that they can be eventually freed.
  4114  //
  4115  //      If inflateGetHeader is not used, then the header information is simply
  4116  //    discarded.  The header is always checked for validity, including the header
  4117  //    CRC if present.  inflateReset() will reset the process to discard the header
  4118  //    information.  The application would need to call inflateGetHeader() again to
  4119  //    retrieve the header from the next gzip stream.
  4120  //
  4121  //      inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source
  4122  //    stream state was inconsistent.
  4123  
  4124  //
  4125  // ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits,
  4126  //                                         unsigned char FAR *window));
  4127  //
  4128  //      Initialize the internal stream state for decompression using inflateBack()
  4129  //    calls.  The fields zalloc, zfree and opaque in strm must be initialized
  4130  //    before the call.  If zalloc and zfree are Z_NULL, then the default library-
  4131  //    derived memory allocation routines are used.  windowBits is the base two
  4132  //    logarithm of the window size, in the range 8..15.  window is a caller
  4133  //    supplied buffer of that size.  Except for special applications where it is
  4134  //    assured that deflate was used with small window sizes, windowBits must be 15
  4135  //    and a 32K byte window must be supplied to be able to decompress general
  4136  //    deflate streams.
  4137  //
  4138  //      See inflateBack() for the usage of these routines.
  4139  //
  4140  //      inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of
  4141  //    the parameters are invalid, Z_MEM_ERROR if the internal state could not be
  4142  //    allocated, or Z_VERSION_ERROR if the version of the library does not match
  4143  //    the version of the header file.
  4144  
  4145  type In_func = uintptr  /* zlib.h:1092:18 */
  4146  type Out_func = uintptr /* zlib.h:1094:13 */
  4147  //
  4148  //      Same as uncompress, except that sourceLen is a pointer, where the
  4149  //    length of the source is *sourceLen.  On return, *sourceLen is the number of
  4150  //    source bytes consumed.
  4151  
  4152  // gzip file access functions
  4153  
  4154  //
  4155  //      This library supports reading and writing files in gzip (.gz) format with
  4156  //    an interface similar to that of stdio, using the functions that start with
  4157  //    "gz".  The gzip format is different from the zlib format.  gzip is a gzip
  4158  //    wrapper, documented in RFC 1952, wrapped around a deflate stream.
  4159  
  4160  type GzFile_s = struct {
  4161  	Fhave uint32
  4162  	Fnext uintptr
  4163  	Fpos  Off64_t
  4164  } /* zlib.h:1300:9 */
  4165  
  4166  //
  4167  //      Same as uncompress, except that sourceLen is a pointer, where the
  4168  //    length of the source is *sourceLen.  On return, *sourceLen is the number of
  4169  //    source bytes consumed.
  4170  
  4171  // gzip file access functions
  4172  
  4173  //
  4174  //      This library supports reading and writing files in gzip (.gz) format with
  4175  //    an interface similar to that of stdio, using the functions that start with
  4176  //    "gz".  The gzip format is different from the zlib format.  gzip is a gzip
  4177  //    wrapper, documented in RFC 1952, wrapped around a deflate stream.
  4178  
  4179  type GzFile = uintptr /* zlib.h:1300:25 */
  4180  
  4181  // POSIX.1-2008 extended locale interface (see locale.h).
  4182  // Definition of locale_t.
  4183  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  4184  //    This file is part of the GNU C Library.
  4185  //
  4186  //    The GNU C Library is free software; you can redistribute it and/or
  4187  //    modify it under the terms of the GNU Lesser General Public
  4188  //    License as published by the Free Software Foundation; either
  4189  //    version 2.1 of the License, or (at your option) any later version.
  4190  //
  4191  //    The GNU C Library is distributed in the hope that it will be useful,
  4192  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4193  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4194  //    Lesser General Public License for more details.
  4195  //
  4196  //    You should have received a copy of the GNU Lesser General Public
  4197  //    License along with the GNU C Library; if not, see
  4198  //    <https://www.gnu.org/licenses/>.
  4199  
  4200  // Definition of struct __locale_struct and __locale_t.
  4201  //    Copyright (C) 1997-2020 Free Software Foundation, Inc.
  4202  //    This file is part of the GNU C Library.
  4203  //    Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
  4204  //
  4205  //    The GNU C Library is free software; you can redistribute it and/or
  4206  //    modify it under the terms of the GNU Lesser General Public
  4207  //    License as published by the Free Software Foundation; either
  4208  //    version 2.1 of the License, or (at your option) any later version.
  4209  //
  4210  //    The GNU C Library is distributed in the hope that it will be useful,
  4211  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4212  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4213  //    Lesser General Public License for more details.
  4214  //
  4215  //    You should have received a copy of the GNU Lesser General Public
  4216  //    License along with the GNU C Library; if not, see
  4217  //    <https://www.gnu.org/licenses/>.
  4218  
  4219  // POSIX.1-2008: the locale_t type, representing a locale context
  4220  //    (implementation-namespace version).  This type should be treated
  4221  //    as opaque by applications; some details are exposed for the sake of
  4222  //    efficiency in e.g. ctype functions.
  4223  
  4224  type X__locale_struct = struct {
  4225  	F__locales       [13]uintptr
  4226  	F__ctype_b       uintptr
  4227  	F__ctype_tolower uintptr
  4228  	F__ctype_toupper uintptr
  4229  	F__names         [13]uintptr
  4230  } /* __locale_t.h:28:1 */
  4231  
  4232  type X__locale_t = uintptr /* __locale_t.h:42:32 */
  4233  
  4234  type Locale_t = X__locale_t /* locale_t.h:24:20 */
  4235  
  4236  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  4237  //    This file is part of the GNU C Library.
  4238  //
  4239  //    The GNU C Library is free software; you can redistribute it and/or
  4240  //    modify it under the terms of the GNU Lesser General Public
  4241  //    License as published by the Free Software Foundation; either
  4242  //    version 2.1 of the License, or (at your option) any later version.
  4243  //
  4244  //    The GNU C Library is distributed in the hope that it will be useful,
  4245  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4246  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4247  //    Lesser General Public License for more details.
  4248  //
  4249  //    You should have received a copy of the GNU Lesser General Public
  4250  //    License along with the GNU C Library; if not, see
  4251  //    <https://www.gnu.org/licenses/>.
  4252  
  4253  //	ISO C99 Standard: 7.20 General utilities	<stdlib.h>
  4254  
  4255  // Handle feature test macros at the start of a header.
  4256  //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  4257  //    This file is part of the GNU C Library.
  4258  //
  4259  //    The GNU C Library is free software; you can redistribute it and/or
  4260  //    modify it under the terms of the GNU Lesser General Public
  4261  //    License as published by the Free Software Foundation; either
  4262  //    version 2.1 of the License, or (at your option) any later version.
  4263  //
  4264  //    The GNU C Library is distributed in the hope that it will be useful,
  4265  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4266  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4267  //    Lesser General Public License for more details.
  4268  //
  4269  //    You should have received a copy of the GNU Lesser General Public
  4270  //    License along with the GNU C Library; if not, see
  4271  //    <https://www.gnu.org/licenses/>.
  4272  
  4273  // This header is internal to glibc and should not be included outside
  4274  //    of glibc headers.  Headers including it must define
  4275  //    __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first.  This header
  4276  //    cannot have multiple include guards because ISO C feature test
  4277  //    macros depend on the definition of the macro when an affected
  4278  //    header is included, not when the first system header is
  4279  //    included.
  4280  
  4281  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  4282  //    This file is part of the GNU C Library.
  4283  //
  4284  //    The GNU C Library is free software; you can redistribute it and/or
  4285  //    modify it under the terms of the GNU Lesser General Public
  4286  //    License as published by the Free Software Foundation; either
  4287  //    version 2.1 of the License, or (at your option) any later version.
  4288  //
  4289  //    The GNU C Library is distributed in the hope that it will be useful,
  4290  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4291  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4292  //    Lesser General Public License for more details.
  4293  //
  4294  //    You should have received a copy of the GNU Lesser General Public
  4295  //    License along with the GNU C Library; if not, see
  4296  //    <https://www.gnu.org/licenses/>.
  4297  
  4298  // ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
  4299  //    macro.
  4300  
  4301  // ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
  4302  //    macro.  Most but not all symbols enabled by that macro in TS
  4303  //    18661-1 are enabled unconditionally in C2X; the symbols in Annex F
  4304  //    still require that macro in C2X.
  4305  
  4306  // ISO/IEC TS 18661-4:2015 defines the
  4307  //    __STDC_WANT_IEC_60559_FUNCS_EXT__ macro.  Other than the reduction
  4308  //    functions, the symbols from this TS are enabled unconditionally in
  4309  //    C2X.
  4310  
  4311  // ISO/IEC TS 18661-3:2015 defines the
  4312  //    __STDC_WANT_IEC_60559_TYPES_EXT__ macro.
  4313  
  4314  // Get size_t, wchar_t and NULL from <stddef.h>.
  4315  // Copyright (C) 1989-2020 Free Software Foundation, Inc.
  4316  //
  4317  // This file is part of GCC.
  4318  //
  4319  // GCC is free software; you can redistribute it and/or modify
  4320  // it under the terms of the GNU General Public License as published by
  4321  // the Free Software Foundation; either version 3, or (at your option)
  4322  // any later version.
  4323  //
  4324  // GCC is distributed in the hope that it will be useful,
  4325  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  4326  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4327  // GNU General Public License for more details.
  4328  //
  4329  // Under Section 7 of GPL version 3, you are granted additional
  4330  // permissions described in the GCC Runtime Library Exception, version
  4331  // 3.1, as published by the Free Software Foundation.
  4332  //
  4333  // You should have received a copy of the GNU General Public License and
  4334  // a copy of the GCC Runtime Library Exception along with this program;
  4335  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
  4336  // <http://www.gnu.org/licenses/>.
  4337  
  4338  // ISO C Standard:  7.17  Common definitions  <stddef.h>
  4339  
  4340  // Any one of these symbols __need_* means that GNU libc
  4341  //    wants us just to define one data type.  So don't define
  4342  //    the symbols that indicate this file's entire job has been done.
  4343  
  4344  // This avoids lossage on SunOS but only if stdtypes.h comes first.
  4345  //    There's no way to win with the other order!  Sun lossage.
  4346  
  4347  // Sequent's header files use _PTRDIFF_T_ in some conflicting way.
  4348  //    Just ignore it.
  4349  
  4350  // On VxWorks, <type/vxTypesBase.h> may have defined macros like
  4351  //    _TYPE_size_t which will typedef size_t.  fixincludes patched the
  4352  //    vxTypesBase.h so that this macro is only defined if _GCC_SIZE_T is
  4353  //    not defined, and so that defining this macro defines _GCC_SIZE_T.
  4354  //    If we find that the macros are still defined at this point, we must
  4355  //    invoke them so that the type is defined as expected.
  4356  
  4357  // In case nobody has defined these types, but we aren't running under
  4358  //    GCC 2.00, make sure that __PTRDIFF_TYPE__, __SIZE_TYPE__, and
  4359  //    __WCHAR_TYPE__ have reasonable values.  This can happen if the
  4360  //    parts of GCC is compiled by an older compiler, that actually
  4361  //    include gstddef.h, such as collect2.
  4362  
  4363  // Signed type of difference of two pointers.
  4364  
  4365  // Define this type if we are doing the whole job,
  4366  //    or if we want this type in particular.
  4367  
  4368  // If this symbol has done its job, get rid of it.
  4369  
  4370  // Unsigned type of `sizeof' something.
  4371  
  4372  // Define this type if we are doing the whole job,
  4373  //    or if we want this type in particular.
  4374  
  4375  // Wide character type.
  4376  //    Locale-writers should change this as necessary to
  4377  //    be big enough to hold unique values not between 0 and 127,
  4378  //    and not (wchar_t) -1, for each defined multibyte character.
  4379  
  4380  // Define this type if we are doing the whole job,
  4381  //    or if we want this type in particular.
  4382  
  4383  // A null pointer constant.
  4384  
  4385  // Offset of member MEMBER in a struct of type TYPE.
  4386  
  4387  // XPG requires a few symbols from <sys/wait.h> being defined.
  4388  // Definitions of flag bits for `waitpid' et al.
  4389  //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  4390  //    This file is part of the GNU C Library.
  4391  //
  4392  //    The GNU C Library is free software; you can redistribute it and/or
  4393  //    modify it under the terms of the GNU Lesser General Public
  4394  //    License as published by the Free Software Foundation; either
  4395  //    version 2.1 of the License, or (at your option) any later version.
  4396  //
  4397  //    The GNU C Library is distributed in the hope that it will be useful,
  4398  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4399  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4400  //    Lesser General Public License for more details.
  4401  //
  4402  //    You should have received a copy of the GNU Lesser General Public
  4403  //    License along with the GNU C Library; if not, see
  4404  //    <https://www.gnu.org/licenses/>.
  4405  
  4406  // Bits in the third argument to `waitpid'.
  4407  
  4408  // Bits in the fourth argument to `waitid'.
  4409  
  4410  // The following values are used by the `waitid' function.
  4411  
  4412  // The Linux kernel defines these bare, rather than an enum,
  4413  //    which causes a conflict if the include order is reversed.
  4414  
  4415  type Idtype_t = uint32 /* waitflags.h:57:3 */
  4416  // Definitions of status bits for `wait' et al.
  4417  //    Copyright (C) 1992-2020 Free Software Foundation, Inc.
  4418  //    This file is part of the GNU C Library.
  4419  //
  4420  //    The GNU C Library is free software; you can redistribute it and/or
  4421  //    modify it under the terms of the GNU Lesser General Public
  4422  //    License as published by the Free Software Foundation; either
  4423  //    version 2.1 of the License, or (at your option) any later version.
  4424  //
  4425  //    The GNU C Library is distributed in the hope that it will be useful,
  4426  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4427  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4428  //    Lesser General Public License for more details.
  4429  //
  4430  //    You should have received a copy of the GNU Lesser General Public
  4431  //    License along with the GNU C Library; if not, see
  4432  //    <https://www.gnu.org/licenses/>.
  4433  
  4434  // Everything extant so far uses these same bits.
  4435  
  4436  // If WIFEXITED(STATUS), the low-order 8 bits of the status.
  4437  
  4438  // If WIFSIGNALED(STATUS), the terminating signal.
  4439  
  4440  // If WIFSTOPPED(STATUS), the signal that stopped the child.
  4441  
  4442  // Nonzero if STATUS indicates normal termination.
  4443  
  4444  // Nonzero if STATUS indicates termination by a signal.
  4445  
  4446  // Nonzero if STATUS indicates the child is stopped.
  4447  
  4448  // Nonzero if STATUS indicates the child continued after a stop.  We only
  4449  //    define this if <bits/waitflags.h> provides the WCONTINUED flag bit.
  4450  
  4451  // Nonzero if STATUS indicates the child dumped core.
  4452  
  4453  // Macros for constructing status values.
  4454  
  4455  // Define the macros <sys/wait.h> also would define this way.
  4456  
  4457  // _FloatN API tests for enablement.
  4458  // Macros to control TS 18661-3 glibc features.
  4459  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  4460  //    This file is part of the GNU C Library.
  4461  //
  4462  //    The GNU C Library is free software; you can redistribute it and/or
  4463  //    modify it under the terms of the GNU Lesser General Public
  4464  //    License as published by the Free Software Foundation; either
  4465  //    version 2.1 of the License, or (at your option) any later version.
  4466  //
  4467  //    The GNU C Library is distributed in the hope that it will be useful,
  4468  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4469  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4470  //    Lesser General Public License for more details.
  4471  //
  4472  //    You should have received a copy of the GNU Lesser General Public
  4473  //    License along with the GNU C Library; if not, see
  4474  //    <https://www.gnu.org/licenses/>.
  4475  
  4476  // Defined to 1 if the current compiler invocation provides a
  4477  //    floating-point type with the IEEE 754 binary128 format, and this glibc
  4478  //    includes corresponding *f128 interfaces for it.
  4479  
  4480  // Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
  4481  //    from the default float, double and long double types in this glibc.
  4482  
  4483  // Defined to 1 if the current compiler invocation provides a
  4484  //    floating-point type with the right format for _Float64x, and this
  4485  //    glibc includes corresponding *f64x interfaces for it.
  4486  
  4487  // Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
  4488  //    of long double.  Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
  4489  //    the format of _Float128, which must be different from that of long
  4490  //    double.
  4491  
  4492  // Defined to concatenate the literal suffix to be used with _Float128
  4493  //    types, if __HAVE_FLOAT128 is 1.
  4494  //    E.g.: #define __f128(x) x##f128.
  4495  
  4496  // Defined to a complex binary128 type if __HAVE_FLOAT128 is 1.
  4497  //    E.g.: #define __CFLOAT128 _Complex _Float128.
  4498  
  4499  // Macros to control TS 18661-3 glibc features where the same
  4500  //    definitions are appropriate for all platforms.
  4501  //    Copyright (C) 2017-2020 Free Software Foundation, Inc.
  4502  //    This file is part of the GNU C Library.
  4503  //
  4504  //    The GNU C Library is free software; you can redistribute it and/or
  4505  //    modify it under the terms of the GNU Lesser General Public
  4506  //    License as published by the Free Software Foundation; either
  4507  //    version 2.1 of the License, or (at your option) any later version.
  4508  //
  4509  //    The GNU C Library is distributed in the hope that it will be useful,
  4510  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4511  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4512  //    Lesser General Public License for more details.
  4513  //
  4514  //    You should have received a copy of the GNU Lesser General Public
  4515  //    License along with the GNU C Library; if not, see
  4516  //    <https://www.gnu.org/licenses/>.
  4517  
  4518  // Copyright (C) 1991-2020 Free Software Foundation, Inc.
  4519  //    This file is part of the GNU C Library.
  4520  //
  4521  //    The GNU C Library is free software; you can redistribute it and/or
  4522  //    modify it under the terms of the GNU Lesser General Public
  4523  //    License as published by the Free Software Foundation; either
  4524  //    version 2.1 of the License, or (at your option) any later version.
  4525  //
  4526  //    The GNU C Library is distributed in the hope that it will be useful,
  4527  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4528  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4529  //    Lesser General Public License for more details.
  4530  //
  4531  //    You should have received a copy of the GNU Lesser General Public
  4532  //    License along with the GNU C Library; if not, see
  4533  //    <https://www.gnu.org/licenses/>.
  4534  
  4535  // Properties of long double type.
  4536  //    Copyright (C) 2016-2020 Free Software Foundation, Inc.
  4537  //    This file is part of the GNU C Library.
  4538  //
  4539  //    The GNU C Library is free software; you can redistribute it and/or
  4540  //    modify it under the terms of the GNU Lesser General Public
  4541  //    License  published by the Free Software Foundation; either
  4542  //    version 2.1 of the License, or (at your option) any later version.
  4543  //
  4544  //    The GNU C Library is distributed in the hope that it will be useful,
  4545  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4546  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4547  //    Lesser General Public License for more details.
  4548  //
  4549  //    You should have received a copy of the GNU Lesser General Public
  4550  //    License along with the GNU C Library; if not, see
  4551  //    <https://www.gnu.org/licenses/>.
  4552  
  4553  // This header is included by <sys/cdefs.h>.
  4554  //
  4555  //    If long double is ABI-compatible with double, it should define
  4556  //    __NO_LONG_DOUBLE_MATH to 1; otherwise, it should leave
  4557  //    __NO_LONG_DOUBLE_MATH undefined.
  4558  //
  4559  //    If this build of the GNU C Library supports both long double
  4560  //    ABI-compatible with double and some other long double format not
  4561  //    ABI-compatible with double, it should define
  4562  //    __LONG_DOUBLE_MATH_OPTIONAL to 1; otherwise, it should leave
  4563  //    __LONG_DOUBLE_MATH_OPTIONAL undefined.
  4564  //
  4565  //    If __NO_LONG_DOUBLE_MATH is already defined, this header must not
  4566  //    define anything; this is needed to work with the definition of
  4567  //    __NO_LONG_DOUBLE_MATH in nldbl-compat.h.
  4568  
  4569  // In the default version of this header, long double is
  4570  //    ABI-compatible with double.
  4571  
  4572  // This header should be included at the bottom of each bits/floatn.h.
  4573  //    It defines the following macros for each _FloatN and _FloatNx type,
  4574  //    where the same definitions, or definitions based only on the macros
  4575  //    in bits/floatn.h, are appropriate for all glibc configurations.
  4576  
  4577  // Defined to 1 if the current compiler invocation provides a
  4578  //    floating-point type with the right format for this type, and this
  4579  //    glibc includes corresponding *fN or *fNx interfaces for it.
  4580  
  4581  // Defined to 1 if the corresponding __HAVE_<type> macro is 1 and the
  4582  //    type is the first with its format in the sequence of (the default
  4583  //    choices for) float, double, long double, _Float16, _Float32,
  4584  //    _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
  4585  //    glibc; that is, if functions present once per floating-point format
  4586  //    rather than once per type are present for this type.
  4587  //
  4588  //    All configurations supported by glibc have _Float32 the same format
  4589  //    as float, _Float64 and _Float32x the same format as double, the
  4590  //    _Float64x the same format as either long double or _Float128.  No
  4591  //    configurations support _Float128x or, as of GCC 7, have compiler
  4592  //    support for a type meeting the requirements for _Float128x.
  4593  
  4594  // Defined to 1 if the corresponding _FloatN type is not binary compatible
  4595  //    with the corresponding ISO C type in the current compilation unit as
  4596  //    opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
  4597  //    in glibc.
  4598  
  4599  // Defined to 1 if any _FloatN or _FloatNx types that are not
  4600  //    ABI-distinct are however distinct types at the C language level (so
  4601  //    for the purposes of __builtin_types_compatible_p and _Generic).
  4602  
  4603  // Defined to concatenate the literal suffix to be used with _FloatN
  4604  //    or _FloatNx types, if __HAVE_<type> is 1.  The corresponding
  4605  //    literal suffixes exist since GCC 7, for C only.
  4606  
  4607  // Defined to a complex type if __HAVE_<type> is 1.
  4608  
  4609  // The remaining of this file provides support for older compilers.
  4610  
  4611  // If double, long double and _Float64 all have the same set of
  4612  //    values, TS 18661-3 requires the usual arithmetic conversions on
  4613  //    long double and _Float64 to produce _Float64.  For this to be the
  4614  //    case when building with a compiler without a distinct _Float64
  4615  //    type, _Float64 must be a typedef for long double, not for
  4616  //    double.
  4617  
  4618  // Returned by `div'.
  4619  type Div_t = struct {
  4620  	Fquot int32
  4621  	Frem  int32
  4622  } /* stdlib.h:62:5 */
  4623  
  4624  // Returned by `ldiv'.
  4625  type Ldiv_t = struct {
  4626  	Fquot int32
  4627  	Frem  int32
  4628  } /* stdlib.h:70:5 */
  4629  
  4630  // Returned by `lldiv'.
  4631  type Lldiv_t = struct {
  4632  	Fquot int64
  4633  	Frem  int64
  4634  } /* stdlib.h:80:5 */
  4635  
  4636  // Reentrant versions of the `random' family of functions.
  4637  //    These functions all use the following data structure to contain
  4638  //    state, rather than global state variables.
  4639  
  4640  type Random_data = struct {
  4641  	Ffptr      uintptr
  4642  	Frptr      uintptr
  4643  	Fstate     uintptr
  4644  	Frand_type int32
  4645  	Frand_deg  int32
  4646  	Frand_sep  int32
  4647  	Fend_ptr   uintptr
  4648  } /* stdlib.h:423:1 */
  4649  
  4650  // Data structure for communication with thread safe versions.  This
  4651  //    type is to be regarded as opaque.  It's only exported because users
  4652  //    have to allocate objects of this type.
  4653  type Drand48_data = struct {
  4654  	F__x     [3]uint16
  4655  	F__old_x [3]uint16
  4656  	F__c     uint16
  4657  	F__init  uint16
  4658  	F__a     uint64
  4659  } /* stdlib.h:490:1 */
  4660  
  4661  // Shorthand for type of comparison functions.
  4662  type X__compar_fn_t = uintptr /* stdlib.h:808:13 */
  4663  
  4664  // Floating-point inline functions for stdlib.h.
  4665  //    Copyright (C) 2012-2020 Free Software Foundation, Inc.
  4666  //    This file is part of the GNU C Library.
  4667  //
  4668  //    The GNU C Library is free software; you can redistribute it and/or
  4669  //    modify it under the terms of the GNU Lesser General Public
  4670  //    License as published by the Free Software Foundation; either
  4671  //    version 2.1 of the License, or (at your option) any later version.
  4672  //
  4673  //    The GNU C Library is distributed in the hope that it will be useful,
  4674  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  4675  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  4676  //    Lesser General Public License for more details.
  4677  //
  4678  //    You should have received a copy of the GNU Lesser General Public
  4679  //    License along with the GNU C Library; if not, see
  4680  //    <https://www.gnu.org/licenses/>.
  4681  
  4682  // Define some macros helping to catch buffer overflows.
  4683  
  4684  // since "static" is used to mean two completely different things in C, we
  4685  //    define "local" for the non-static meaning of "static", for readability
  4686  //    (compile with -Dlocal if your debugger can't find static symbols)
  4687  
  4688  type Uch = uint8  /* zutil.h:43:24 */
  4689  type Uchf = Uch   /* zutil.h:44:17 */
  4690  type Ush = uint16 /* zutil.h:45:24 */
  4691  type Ushf = Ush   /* zutil.h:46:17 */
  4692  type Ulg = uint32 /* zutil.h:47:24 */
  4693  
  4694  // NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1
  4695  
  4696  // use NO_DIVIDE if your processor does not do division in hardware --
  4697  //    try it both ways to see which is faster
  4698  
  4699  // =========================================================================
  4700  func Xadler32_z(tls *libc.TLS, adler ULong, buf uintptr, len Z_size_t) ULong { /* adler32.c:63:15: */
  4701  	var sum2 uint32
  4702  	var n uint32
  4703  
  4704  	// split Adler-32 into component sums
  4705  	sum2 = ((adler >> 16) & ULong(0xffff))
  4706  	adler = adler & (ULong(0xffff))
  4707  
  4708  	// in case user likes doing a byte at a time, keep it fast
  4709  	if len == Z_size_t(1) {
  4710  		adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(buf))))
  4711  		if adler >= BASE {
  4712  			adler = adler - (BASE)
  4713  		}
  4714  		sum2 = sum2 + (adler)
  4715  		if sum2 >= BASE {
  4716  			sum2 = sum2 - (BASE)
  4717  		}
  4718  		return (adler | (sum2 << 16))
  4719  	}
  4720  
  4721  	// initial Adler-32 value (deferred check for len == 1 speed)
  4722  	if buf == uintptr(Z_NULL) {
  4723  		return ULong(1)
  4724  	}
  4725  
  4726  	// in case short lengths are provided, keep it somewhat fast
  4727  	if len < Z_size_t(16) {
  4728  		for libc.PostDecUint32(&len, 1) != 0 {
  4729  			adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))
  4730  			sum2 = sum2 + (adler)
  4731  		}
  4732  		if adler >= BASE {
  4733  			adler = adler - (BASE)
  4734  		}
  4735  		sum2 = sum2 % (BASE) // only added so many BASE's
  4736  		return (adler | (sum2 << 16))
  4737  	}
  4738  
  4739  	// do length NMAX blocks -- requires just one modulo operation
  4740  	for len >= Z_size_t(NMAX) {
  4741  		len = len - (Z_size_t(NMAX))
  4742  		n = (uint32(NMAX / 16)) // NMAX is divisible by 16
  4743  		for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  4744  			{
  4745  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf)))))
  4746  				sum2 = sum2 + (adler)
  4747  			}
  4748  			{
  4749  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1))))
  4750  				sum2 = sum2 + (adler)
  4751  			}
  4752  
  4753  			{
  4754  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2))))
  4755  				sum2 = sum2 + (adler)
  4756  			}
  4757  			{
  4758  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3))))
  4759  				sum2 = sum2 + (adler)
  4760  			}
  4761  
  4762  			{
  4763  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4))))
  4764  				sum2 = sum2 + (adler)
  4765  			}
  4766  			{
  4767  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5))))
  4768  				sum2 = sum2 + (adler)
  4769  			}
  4770  
  4771  			{
  4772  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6))))
  4773  				sum2 = sum2 + (adler)
  4774  			}
  4775  			{
  4776  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7))))
  4777  				sum2 = sum2 + (adler)
  4778  			}
  4779  
  4780  			{
  4781  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8))))
  4782  				sum2 = sum2 + (adler)
  4783  			}
  4784  			{
  4785  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9))))
  4786  				sum2 = sum2 + (adler)
  4787  			}
  4788  
  4789  			{
  4790  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10))))
  4791  				sum2 = sum2 + (adler)
  4792  			}
  4793  			{
  4794  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11))))
  4795  				sum2 = sum2 + (adler)
  4796  			}
  4797  
  4798  			{
  4799  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12))))
  4800  				sum2 = sum2 + (adler)
  4801  			}
  4802  			{
  4803  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13))))
  4804  				sum2 = sum2 + (adler)
  4805  			}
  4806  
  4807  			{
  4808  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14))))
  4809  				sum2 = sum2 + (adler)
  4810  			}
  4811  			{
  4812  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15))))
  4813  				sum2 = sum2 + (adler)
  4814  			}
  4815  
  4816  			// 16 sums unrolled
  4817  			buf += uintptr(16)
  4818  		}
  4819  		adler = adler % (BASE)
  4820  		sum2 = sum2 % (BASE)
  4821  	}
  4822  
  4823  	// do remaining bytes (less than NMAX, still just one modulo)
  4824  	if len != 0 { // avoid modulos if none remaining
  4825  		for len >= Z_size_t(16) {
  4826  			len = len - (Z_size_t(16))
  4827  			{
  4828  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf)))))
  4829  				sum2 = sum2 + (adler)
  4830  			}
  4831  			{
  4832  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 1))))
  4833  				sum2 = sum2 + (adler)
  4834  			}
  4835  
  4836  			{
  4837  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 2))))
  4838  				sum2 = sum2 + (adler)
  4839  			}
  4840  			{
  4841  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 3))))
  4842  				sum2 = sum2 + (adler)
  4843  			}
  4844  
  4845  			{
  4846  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 4))))
  4847  				sum2 = sum2 + (adler)
  4848  			}
  4849  			{
  4850  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 5))))
  4851  				sum2 = sum2 + (adler)
  4852  			}
  4853  
  4854  			{
  4855  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 6))))
  4856  				sum2 = sum2 + (adler)
  4857  			}
  4858  			{
  4859  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 7))))
  4860  				sum2 = sum2 + (adler)
  4861  			}
  4862  
  4863  			{
  4864  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 8))))
  4865  				sum2 = sum2 + (adler)
  4866  			}
  4867  			{
  4868  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 9))))
  4869  				sum2 = sum2 + (adler)
  4870  			}
  4871  
  4872  			{
  4873  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 10))))
  4874  				sum2 = sum2 + (adler)
  4875  			}
  4876  			{
  4877  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 11))))
  4878  				sum2 = sum2 + (adler)
  4879  			}
  4880  
  4881  			{
  4882  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 12))))
  4883  				sum2 = sum2 + (adler)
  4884  			}
  4885  			{
  4886  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 13))))
  4887  				sum2 = sum2 + (adler)
  4888  			}
  4889  
  4890  			{
  4891  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 14))))
  4892  				sum2 = sum2 + (adler)
  4893  			}
  4894  			{
  4895  				adler = adler + (ULong(*(*Bytef)(unsafe.Pointer((buf) + 15))))
  4896  				sum2 = sum2 + (adler)
  4897  			}
  4898  
  4899  			buf += uintptr(16)
  4900  		}
  4901  		for libc.PostDecUint32(&len, 1) != 0 {
  4902  			adler = adler + (ULong(*(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))
  4903  			sum2 = sum2 + (adler)
  4904  		}
  4905  		adler = adler % (BASE)
  4906  		sum2 = sum2 % (BASE)
  4907  	}
  4908  
  4909  	// return recombined sums
  4910  	return (adler | (sum2 << 16))
  4911  }
  4912  
  4913  // =========================================================================
  4914  func Xadler32(tls *libc.TLS, adler ULong, buf uintptr, len UInt) ULong { /* adler32.c:134:15: */
  4915  	return Xadler32_z(tls, adler, buf, len)
  4916  }
  4917  
  4918  // =========================================================================
  4919  func adler32_combine_(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off64_t) ULong { /* adler32.c:143:13: */
  4920  	var sum1 uint32
  4921  	var sum2 uint32
  4922  	var rem uint32
  4923  
  4924  	// for negative len, return invalid adler32 as a clue for debugging
  4925  	if len2 < int64(0) {
  4926  		return 0xffffffff
  4927  	}
  4928  
  4929  	// the derivation of this formula is left as an exercise for the reader
  4930  	len2 = len2 % (int64(BASE)) // assumes len2 >= 0
  4931  	rem = uint32(len2)
  4932  	sum1 = (adler1 & ULong(0xffff))
  4933  	sum2 = (uint32(rem) * sum1)
  4934  	sum2 = sum2 % (BASE)
  4935  	sum1 = sum1 + (((adler2 & ULong(0xffff)) + BASE) - ULong(1))
  4936  	sum2 = sum2 + (((((adler1 >> 16) & ULong(0xffff)) + ((adler2 >> 16) & ULong(0xffff))) + BASE) - ULong(rem))
  4937  	if sum1 >= BASE {
  4938  		sum1 = sum1 - (BASE)
  4939  	}
  4940  	if sum1 >= BASE {
  4941  		sum1 = sum1 - (BASE)
  4942  	}
  4943  	if sum2 >= (uint32(BASE) << 1) {
  4944  		sum2 = sum2 - (uint32(BASE) << 1)
  4945  	}
  4946  	if sum2 >= BASE {
  4947  		sum2 = sum2 - (BASE)
  4948  	}
  4949  	return (sum1 | (sum2 << 16))
  4950  }
  4951  
  4952  // =========================================================================
  4953  func Xadler32_combine(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off_t) ULong { /* adler32.c:172:15: */
  4954  	return adler32_combine_(tls, adler1, adler2, len2)
  4955  }
  4956  
  4957  func Xadler32_combine64(tls *libc.TLS, adler1 ULong, adler2 ULong, len2 Off64_t) ULong { /* adler32.c:180:15: */
  4958  	return adler32_combine_(tls, adler1, adler2, len2)
  4959  }
  4960  
  4961  // ===========================================================================
  4962  //      Compresses the source buffer into the destination buffer. The level
  4963  //    parameter has the same meaning as in deflateInit.  sourceLen is the byte
  4964  //    length of the source buffer. Upon entry, destLen is the total size of the
  4965  //    destination buffer, which must be at least 0.1% larger than sourceLen plus
  4966  //    12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
  4967  //
  4968  //      compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
  4969  //    memory, Z_BUF_ERROR if there was not enough room in the output buffer,
  4970  //    Z_STREAM_ERROR if the level parameter is invalid.
  4971  func Xcompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong, level int32) int32 { /* compress.c:22:13: */
  4972  	bp := tls.Alloc(56)
  4973  	defer tls.Free(56)
  4974  
  4975  	// var stream Z_stream at bp, 56
  4976  
  4977  	var err int32
  4978  	var max UInt = libc.Uint32(libc.Uint32FromInt32(-1))
  4979  	var left ULong
  4980  
  4981  	left = *(*ULongf)(unsafe.Pointer(destLen))
  4982  	*(*ULongf)(unsafe.Pointer(destLen)) = ULongf(0)
  4983  
  4984  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzalloc = uintptr(0)
  4985  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fzfree = uintptr(0)
  4986  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fopaque = uintptr(0)
  4987  
  4988  	err = XdeflateInit_(tls, bp /* &stream */, level, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{})))
  4989  	if err != Z_OK {
  4990  		return err
  4991  	}
  4992  
  4993  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_out = dest
  4994  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = UInt(0)
  4995  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Fnext_in = source
  4996  	(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = UInt(0)
  4997  
  4998  	for ok := true; ok; ok = (err == Z_OK) {
  4999  		if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out == UInt(0) {
  5000  			(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out = func() uint32 {
  5001  				if left > ULong(max) {
  5002  					return max
  5003  				}
  5004  				return UInt(left)
  5005  			}()
  5006  			left = left - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_out))
  5007  		}
  5008  		if (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in == UInt(0) {
  5009  			(*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in = func() uint32 {
  5010  				if sourceLen > ULong(max) {
  5011  					return max
  5012  				}
  5013  				return UInt(sourceLen)
  5014  			}()
  5015  			sourceLen = sourceLen - (ULong((*Z_stream)(unsafe.Pointer(bp /* &stream */)).Favail_in))
  5016  		}
  5017  		err = Xdeflate(tls, bp /* &stream */, func() int32 {
  5018  			if sourceLen != 0 {
  5019  				return Z_NO_FLUSH
  5020  			}
  5021  			return Z_FINISH
  5022  		}())
  5023  	}
  5024  
  5025  	*(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp /* &stream */)).Ftotal_out
  5026  	XdeflateEnd(tls, bp /* &stream */)
  5027  	if err == Z_STREAM_END {
  5028  		return Z_OK
  5029  	}
  5030  	return err
  5031  }
  5032  
  5033  // ===========================================================================
  5034  func Xcompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* compress.c:68:13: */
  5035  	return Xcompress2(tls, dest, destLen, source, sourceLen, -1)
  5036  }
  5037  
  5038  // ===========================================================================
  5039  //      If the default memLevel or windowBits for deflateInit() is changed, then
  5040  //    this function needs to be updated.
  5041  //
  5042  func XcompressBound(tls *libc.TLS, sourceLen ULong) ULong { /* compress.c:81:15: */
  5043  	return ((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + ULong(13))
  5044  }
  5045  
  5046  // ========================================================================
  5047  // Tables of CRC-32s of all single-byte values, made by make_crc_table().
  5048  // crc32.h -- tables for rapid CRC calculation
  5049  // Generated automatically by crc32.c
  5050  
  5051  var crc_table = [8][256]Z_crc_t{
  5052  	{
  5053  		0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419,
  5054  		0x706af48f, 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4,
  5055  		0xe0d5e91e, 0x97d2d988, 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07,
  5056  		0x90bf1d91, 0x1db71064, 0x6ab020f2, 0xf3b97148, 0x84be41de,
  5057  		0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7, 0x136c9856,
  5058  		0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
  5059  		0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4,
  5060  		0xa2677172, 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b,
  5061  		0x35b5a8fa, 0x42b2986c, 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3,
  5062  		0x45df5c75, 0xdcd60dcf, 0xabd13d59, 0x26d930ac, 0x51de003a,
  5063  		0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423, 0xcfba9599,
  5064  		0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
  5065  		0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190,
  5066  		0x01db7106, 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f,
  5067  		0x9fbfe4a5, 0xe8b8d433, 0x7807c9a2, 0x0f00f934, 0x9609a88e,
  5068  		0xe10e9818, 0x7f6a0dbb, 0x086d3d2d, 0x91646c97, 0xe6635c01,
  5069  		0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e, 0x6c0695ed,
  5070  		0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
  5071  		0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3,
  5072  		0xfbd44c65, 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2,
  5073  		0x4adfa541, 0x3dd895d7, 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a,
  5074  		0x346ed9fc, 0xad678846, 0xda60b8d0, 0x44042d73, 0x33031de5,
  5075  		0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa, 0xbe0b1010,
  5076  		0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
  5077  		0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17,
  5078  		0x2eb40d81, 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6,
  5079  		0x03b6e20c, 0x74b1d29a, 0xead54739, 0x9dd277af, 0x04db2615,
  5080  		0x73dc1683, 0xe3630b12, 0x94643b84, 0x0d6d6a3e, 0x7a6a5aa8,
  5081  		0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1, 0xf00f9344,
  5082  		0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
  5083  		0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a,
  5084  		0x67dd4acc, 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5,
  5085  		0xd6d6a3e8, 0xa1d1937e, 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1,
  5086  		0xa6bc5767, 0x3fb506dd, 0x48b2364b, 0xd80d2bda, 0xaf0a1b4c,
  5087  		0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55, 0x316e8eef,
  5088  		0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
  5089  		0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe,
  5090  		0xb2bd0b28, 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31,
  5091  		0x2cd99e8b, 0x5bdeae1d, 0x9b64c2b0, 0xec63f226, 0x756aa39c,
  5092  		0x026d930a, 0x9c0906a9, 0xeb0e363f, 0x72076785, 0x05005713,
  5093  		0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38, 0x92d28e9b,
  5094  		0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
  5095  		0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1,
  5096  		0x18b74777, 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c,
  5097  		0x8f659eff, 0xf862ae69, 0x616bffd3, 0x166ccf45, 0xa00ae278,
  5098  		0xd70dd2ee, 0x4e048354, 0x3903b3c2, 0xa7672661, 0xd06016f7,
  5099  		0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc, 0x40df0b66,
  5100  		0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
  5101  		0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605,
  5102  		0xcdd70693, 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8,
  5103  		0x5d681b02, 0x2a6f2b94, 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b,
  5104  		0x2d02ef8d,
  5105  	},
  5106  	{
  5107  		0x00000000, 0x191b3141, 0x32366282, 0x2b2d53c3, 0x646cc504,
  5108  		0x7d77f445, 0x565aa786, 0x4f4196c7, 0xc8d98a08, 0xd1c2bb49,
  5109  		0xfaefe88a, 0xe3f4d9cb, 0xacb54f0c, 0xb5ae7e4d, 0x9e832d8e,
  5110  		0x87981ccf, 0x4ac21251, 0x53d92310, 0x78f470d3, 0x61ef4192,
  5111  		0x2eaed755, 0x37b5e614, 0x1c98b5d7, 0x05838496, 0x821b9859,
  5112  		0x9b00a918, 0xb02dfadb, 0xa936cb9a, 0xe6775d5d, 0xff6c6c1c,
  5113  		0xd4413fdf, 0xcd5a0e9e, 0x958424a2, 0x8c9f15e3, 0xa7b24620,
  5114  		0xbea97761, 0xf1e8e1a6, 0xe8f3d0e7, 0xc3de8324, 0xdac5b265,
  5115  		0x5d5daeaa, 0x44469feb, 0x6f6bcc28, 0x7670fd69, 0x39316bae,
  5116  		0x202a5aef, 0x0b07092c, 0x121c386d, 0xdf4636f3, 0xc65d07b2,
  5117  		0xed705471, 0xf46b6530, 0xbb2af3f7, 0xa231c2b6, 0x891c9175,
  5118  		0x9007a034, 0x179fbcfb, 0x0e848dba, 0x25a9de79, 0x3cb2ef38,
  5119  		0x73f379ff, 0x6ae848be, 0x41c51b7d, 0x58de2a3c, 0xf0794f05,
  5120  		0xe9627e44, 0xc24f2d87, 0xdb541cc6, 0x94158a01, 0x8d0ebb40,
  5121  		0xa623e883, 0xbf38d9c2, 0x38a0c50d, 0x21bbf44c, 0x0a96a78f,
  5122  		0x138d96ce, 0x5ccc0009, 0x45d73148, 0x6efa628b, 0x77e153ca,
  5123  		0xbabb5d54, 0xa3a06c15, 0x888d3fd6, 0x91960e97, 0xded79850,
  5124  		0xc7cca911, 0xece1fad2, 0xf5facb93, 0x7262d75c, 0x6b79e61d,
  5125  		0x4054b5de, 0x594f849f, 0x160e1258, 0x0f152319, 0x243870da,
  5126  		0x3d23419b, 0x65fd6ba7, 0x7ce65ae6, 0x57cb0925, 0x4ed03864,
  5127  		0x0191aea3, 0x188a9fe2, 0x33a7cc21, 0x2abcfd60, 0xad24e1af,
  5128  		0xb43fd0ee, 0x9f12832d, 0x8609b26c, 0xc94824ab, 0xd05315ea,
  5129  		0xfb7e4629, 0xe2657768, 0x2f3f79f6, 0x362448b7, 0x1d091b74,
  5130  		0x04122a35, 0x4b53bcf2, 0x52488db3, 0x7965de70, 0x607eef31,
  5131  		0xe7e6f3fe, 0xfefdc2bf, 0xd5d0917c, 0xcccba03d, 0x838a36fa,
  5132  		0x9a9107bb, 0xb1bc5478, 0xa8a76539, 0x3b83984b, 0x2298a90a,
  5133  		0x09b5fac9, 0x10aecb88, 0x5fef5d4f, 0x46f46c0e, 0x6dd93fcd,
  5134  		0x74c20e8c, 0xf35a1243, 0xea412302, 0xc16c70c1, 0xd8774180,
  5135  		0x9736d747, 0x8e2de606, 0xa500b5c5, 0xbc1b8484, 0x71418a1a,
  5136  		0x685abb5b, 0x4377e898, 0x5a6cd9d9, 0x152d4f1e, 0x0c367e5f,
  5137  		0x271b2d9c, 0x3e001cdd, 0xb9980012, 0xa0833153, 0x8bae6290,
  5138  		0x92b553d1, 0xddf4c516, 0xc4eff457, 0xefc2a794, 0xf6d996d5,
  5139  		0xae07bce9, 0xb71c8da8, 0x9c31de6b, 0x852aef2a, 0xca6b79ed,
  5140  		0xd37048ac, 0xf85d1b6f, 0xe1462a2e, 0x66de36e1, 0x7fc507a0,
  5141  		0x54e85463, 0x4df36522, 0x02b2f3e5, 0x1ba9c2a4, 0x30849167,
  5142  		0x299fa026, 0xe4c5aeb8, 0xfdde9ff9, 0xd6f3cc3a, 0xcfe8fd7b,
  5143  		0x80a96bbc, 0x99b25afd, 0xb29f093e, 0xab84387f, 0x2c1c24b0,
  5144  		0x350715f1, 0x1e2a4632, 0x07317773, 0x4870e1b4, 0x516bd0f5,
  5145  		0x7a468336, 0x635db277, 0xcbfad74e, 0xd2e1e60f, 0xf9ccb5cc,
  5146  		0xe0d7848d, 0xaf96124a, 0xb68d230b, 0x9da070c8, 0x84bb4189,
  5147  		0x03235d46, 0x1a386c07, 0x31153fc4, 0x280e0e85, 0x674f9842,
  5148  		0x7e54a903, 0x5579fac0, 0x4c62cb81, 0x8138c51f, 0x9823f45e,
  5149  		0xb30ea79d, 0xaa1596dc, 0xe554001b, 0xfc4f315a, 0xd7626299,
  5150  		0xce7953d8, 0x49e14f17, 0x50fa7e56, 0x7bd72d95, 0x62cc1cd4,
  5151  		0x2d8d8a13, 0x3496bb52, 0x1fbbe891, 0x06a0d9d0, 0x5e7ef3ec,
  5152  		0x4765c2ad, 0x6c48916e, 0x7553a02f, 0x3a1236e8, 0x230907a9,
  5153  		0x0824546a, 0x113f652b, 0x96a779e4, 0x8fbc48a5, 0xa4911b66,
  5154  		0xbd8a2a27, 0xf2cbbce0, 0xebd08da1, 0xc0fdde62, 0xd9e6ef23,
  5155  		0x14bce1bd, 0x0da7d0fc, 0x268a833f, 0x3f91b27e, 0x70d024b9,
  5156  		0x69cb15f8, 0x42e6463b, 0x5bfd777a, 0xdc656bb5, 0xc57e5af4,
  5157  		0xee530937, 0xf7483876, 0xb809aeb1, 0xa1129ff0, 0x8a3fcc33,
  5158  		0x9324fd72,
  5159  	},
  5160  	{
  5161  		0x00000000, 0x01c26a37, 0x0384d46e, 0x0246be59, 0x0709a8dc,
  5162  		0x06cbc2eb, 0x048d7cb2, 0x054f1685, 0x0e1351b8, 0x0fd13b8f,
  5163  		0x0d9785d6, 0x0c55efe1, 0x091af964, 0x08d89353, 0x0a9e2d0a,
  5164  		0x0b5c473d, 0x1c26a370, 0x1de4c947, 0x1fa2771e, 0x1e601d29,
  5165  		0x1b2f0bac, 0x1aed619b, 0x18abdfc2, 0x1969b5f5, 0x1235f2c8,
  5166  		0x13f798ff, 0x11b126a6, 0x10734c91, 0x153c5a14, 0x14fe3023,
  5167  		0x16b88e7a, 0x177ae44d, 0x384d46e0, 0x398f2cd7, 0x3bc9928e,
  5168  		0x3a0bf8b9, 0x3f44ee3c, 0x3e86840b, 0x3cc03a52, 0x3d025065,
  5169  		0x365e1758, 0x379c7d6f, 0x35dac336, 0x3418a901, 0x3157bf84,
  5170  		0x3095d5b3, 0x32d36bea, 0x331101dd, 0x246be590, 0x25a98fa7,
  5171  		0x27ef31fe, 0x262d5bc9, 0x23624d4c, 0x22a0277b, 0x20e69922,
  5172  		0x2124f315, 0x2a78b428, 0x2bbade1f, 0x29fc6046, 0x283e0a71,
  5173  		0x2d711cf4, 0x2cb376c3, 0x2ef5c89a, 0x2f37a2ad, 0x709a8dc0,
  5174  		0x7158e7f7, 0x731e59ae, 0x72dc3399, 0x7793251c, 0x76514f2b,
  5175  		0x7417f172, 0x75d59b45, 0x7e89dc78, 0x7f4bb64f, 0x7d0d0816,
  5176  		0x7ccf6221, 0x798074a4, 0x78421e93, 0x7a04a0ca, 0x7bc6cafd,
  5177  		0x6cbc2eb0, 0x6d7e4487, 0x6f38fade, 0x6efa90e9, 0x6bb5866c,
  5178  		0x6a77ec5b, 0x68315202, 0x69f33835, 0x62af7f08, 0x636d153f,
  5179  		0x612bab66, 0x60e9c151, 0x65a6d7d4, 0x6464bde3, 0x662203ba,
  5180  		0x67e0698d, 0x48d7cb20, 0x4915a117, 0x4b531f4e, 0x4a917579,
  5181  		0x4fde63fc, 0x4e1c09cb, 0x4c5ab792, 0x4d98dda5, 0x46c49a98,
  5182  		0x4706f0af, 0x45404ef6, 0x448224c1, 0x41cd3244, 0x400f5873,
  5183  		0x4249e62a, 0x438b8c1d, 0x54f16850, 0x55330267, 0x5775bc3e,
  5184  		0x56b7d609, 0x53f8c08c, 0x523aaabb, 0x507c14e2, 0x51be7ed5,
  5185  		0x5ae239e8, 0x5b2053df, 0x5966ed86, 0x58a487b1, 0x5deb9134,
  5186  		0x5c29fb03, 0x5e6f455a, 0x5fad2f6d, 0xe1351b80, 0xe0f771b7,
  5187  		0xe2b1cfee, 0xe373a5d9, 0xe63cb35c, 0xe7fed96b, 0xe5b86732,
  5188  		0xe47a0d05, 0xef264a38, 0xeee4200f, 0xeca29e56, 0xed60f461,
  5189  		0xe82fe2e4, 0xe9ed88d3, 0xebab368a, 0xea695cbd, 0xfd13b8f0,
  5190  		0xfcd1d2c7, 0xfe976c9e, 0xff5506a9, 0xfa1a102c, 0xfbd87a1b,
  5191  		0xf99ec442, 0xf85cae75, 0xf300e948, 0xf2c2837f, 0xf0843d26,
  5192  		0xf1465711, 0xf4094194, 0xf5cb2ba3, 0xf78d95fa, 0xf64fffcd,
  5193  		0xd9785d60, 0xd8ba3757, 0xdafc890e, 0xdb3ee339, 0xde71f5bc,
  5194  		0xdfb39f8b, 0xddf521d2, 0xdc374be5, 0xd76b0cd8, 0xd6a966ef,
  5195  		0xd4efd8b6, 0xd52db281, 0xd062a404, 0xd1a0ce33, 0xd3e6706a,
  5196  		0xd2241a5d, 0xc55efe10, 0xc49c9427, 0xc6da2a7e, 0xc7184049,
  5197  		0xc25756cc, 0xc3953cfb, 0xc1d382a2, 0xc011e895, 0xcb4dafa8,
  5198  		0xca8fc59f, 0xc8c97bc6, 0xc90b11f1, 0xcc440774, 0xcd866d43,
  5199  		0xcfc0d31a, 0xce02b92d, 0x91af9640, 0x906dfc77, 0x922b422e,
  5200  		0x93e92819, 0x96a63e9c, 0x976454ab, 0x9522eaf2, 0x94e080c5,
  5201  		0x9fbcc7f8, 0x9e7eadcf, 0x9c381396, 0x9dfa79a1, 0x98b56f24,
  5202  		0x99770513, 0x9b31bb4a, 0x9af3d17d, 0x8d893530, 0x8c4b5f07,
  5203  		0x8e0de15e, 0x8fcf8b69, 0x8a809dec, 0x8b42f7db, 0x89044982,
  5204  		0x88c623b5, 0x839a6488, 0x82580ebf, 0x801eb0e6, 0x81dcdad1,
  5205  		0x8493cc54, 0x8551a663, 0x8717183a, 0x86d5720d, 0xa9e2d0a0,
  5206  		0xa820ba97, 0xaa6604ce, 0xaba46ef9, 0xaeeb787c, 0xaf29124b,
  5207  		0xad6fac12, 0xacadc625, 0xa7f18118, 0xa633eb2f, 0xa4755576,
  5208  		0xa5b73f41, 0xa0f829c4, 0xa13a43f3, 0xa37cfdaa, 0xa2be979d,
  5209  		0xb5c473d0, 0xb40619e7, 0xb640a7be, 0xb782cd89, 0xb2cddb0c,
  5210  		0xb30fb13b, 0xb1490f62, 0xb08b6555, 0xbbd72268, 0xba15485f,
  5211  		0xb853f606, 0xb9919c31, 0xbcde8ab4, 0xbd1ce083, 0xbf5a5eda,
  5212  		0xbe9834ed,
  5213  	},
  5214  	{
  5215  		0x00000000, 0xb8bc6765, 0xaa09c88b, 0x12b5afee, 0x8f629757,
  5216  		0x37def032, 0x256b5fdc, 0x9dd738b9, 0xc5b428ef, 0x7d084f8a,
  5217  		0x6fbde064, 0xd7018701, 0x4ad6bfb8, 0xf26ad8dd, 0xe0df7733,
  5218  		0x58631056, 0x5019579f, 0xe8a530fa, 0xfa109f14, 0x42acf871,
  5219  		0xdf7bc0c8, 0x67c7a7ad, 0x75720843, 0xcdce6f26, 0x95ad7f70,
  5220  		0x2d111815, 0x3fa4b7fb, 0x8718d09e, 0x1acfe827, 0xa2738f42,
  5221  		0xb0c620ac, 0x087a47c9, 0xa032af3e, 0x188ec85b, 0x0a3b67b5,
  5222  		0xb28700d0, 0x2f503869, 0x97ec5f0c, 0x8559f0e2, 0x3de59787,
  5223  		0x658687d1, 0xdd3ae0b4, 0xcf8f4f5a, 0x7733283f, 0xeae41086,
  5224  		0x525877e3, 0x40edd80d, 0xf851bf68, 0xf02bf8a1, 0x48979fc4,
  5225  		0x5a22302a, 0xe29e574f, 0x7f496ff6, 0xc7f50893, 0xd540a77d,
  5226  		0x6dfcc018, 0x359fd04e, 0x8d23b72b, 0x9f9618c5, 0x272a7fa0,
  5227  		0xbafd4719, 0x0241207c, 0x10f48f92, 0xa848e8f7, 0x9b14583d,
  5228  		0x23a83f58, 0x311d90b6, 0x89a1f7d3, 0x1476cf6a, 0xaccaa80f,
  5229  		0xbe7f07e1, 0x06c36084, 0x5ea070d2, 0xe61c17b7, 0xf4a9b859,
  5230  		0x4c15df3c, 0xd1c2e785, 0x697e80e0, 0x7bcb2f0e, 0xc377486b,
  5231  		0xcb0d0fa2, 0x73b168c7, 0x6104c729, 0xd9b8a04c, 0x446f98f5,
  5232  		0xfcd3ff90, 0xee66507e, 0x56da371b, 0x0eb9274d, 0xb6054028,
  5233  		0xa4b0efc6, 0x1c0c88a3, 0x81dbb01a, 0x3967d77f, 0x2bd27891,
  5234  		0x936e1ff4, 0x3b26f703, 0x839a9066, 0x912f3f88, 0x299358ed,
  5235  		0xb4446054, 0x0cf80731, 0x1e4da8df, 0xa6f1cfba, 0xfe92dfec,
  5236  		0x462eb889, 0x549b1767, 0xec277002, 0x71f048bb, 0xc94c2fde,
  5237  		0xdbf98030, 0x6345e755, 0x6b3fa09c, 0xd383c7f9, 0xc1366817,
  5238  		0x798a0f72, 0xe45d37cb, 0x5ce150ae, 0x4e54ff40, 0xf6e89825,
  5239  		0xae8b8873, 0x1637ef16, 0x048240f8, 0xbc3e279d, 0x21e91f24,
  5240  		0x99557841, 0x8be0d7af, 0x335cb0ca, 0xed59b63b, 0x55e5d15e,
  5241  		0x47507eb0, 0xffec19d5, 0x623b216c, 0xda874609, 0xc832e9e7,
  5242  		0x708e8e82, 0x28ed9ed4, 0x9051f9b1, 0x82e4565f, 0x3a58313a,
  5243  		0xa78f0983, 0x1f336ee6, 0x0d86c108, 0xb53aa66d, 0xbd40e1a4,
  5244  		0x05fc86c1, 0x1749292f, 0xaff54e4a, 0x322276f3, 0x8a9e1196,
  5245  		0x982bbe78, 0x2097d91d, 0x78f4c94b, 0xc048ae2e, 0xd2fd01c0,
  5246  		0x6a4166a5, 0xf7965e1c, 0x4f2a3979, 0x5d9f9697, 0xe523f1f2,
  5247  		0x4d6b1905, 0xf5d77e60, 0xe762d18e, 0x5fdeb6eb, 0xc2098e52,
  5248  		0x7ab5e937, 0x680046d9, 0xd0bc21bc, 0x88df31ea, 0x3063568f,
  5249  		0x22d6f961, 0x9a6a9e04, 0x07bda6bd, 0xbf01c1d8, 0xadb46e36,
  5250  		0x15080953, 0x1d724e9a, 0xa5ce29ff, 0xb77b8611, 0x0fc7e174,
  5251  		0x9210d9cd, 0x2aacbea8, 0x38191146, 0x80a57623, 0xd8c66675,
  5252  		0x607a0110, 0x72cfaefe, 0xca73c99b, 0x57a4f122, 0xef189647,
  5253  		0xfdad39a9, 0x45115ecc, 0x764dee06, 0xcef18963, 0xdc44268d,
  5254  		0x64f841e8, 0xf92f7951, 0x41931e34, 0x5326b1da, 0xeb9ad6bf,
  5255  		0xb3f9c6e9, 0x0b45a18c, 0x19f00e62, 0xa14c6907, 0x3c9b51be,
  5256  		0x842736db, 0x96929935, 0x2e2efe50, 0x2654b999, 0x9ee8defc,
  5257  		0x8c5d7112, 0x34e11677, 0xa9362ece, 0x118a49ab, 0x033fe645,
  5258  		0xbb838120, 0xe3e09176, 0x5b5cf613, 0x49e959fd, 0xf1553e98,
  5259  		0x6c820621, 0xd43e6144, 0xc68bceaa, 0x7e37a9cf, 0xd67f4138,
  5260  		0x6ec3265d, 0x7c7689b3, 0xc4caeed6, 0x591dd66f, 0xe1a1b10a,
  5261  		0xf3141ee4, 0x4ba87981, 0x13cb69d7, 0xab770eb2, 0xb9c2a15c,
  5262  		0x017ec639, 0x9ca9fe80, 0x241599e5, 0x36a0360b, 0x8e1c516e,
  5263  		0x866616a7, 0x3eda71c2, 0x2c6fde2c, 0x94d3b949, 0x090481f0,
  5264  		0xb1b8e695, 0xa30d497b, 0x1bb12e1e, 0x43d23e48, 0xfb6e592d,
  5265  		0xe9dbf6c3, 0x516791a6, 0xccb0a91f, 0x740cce7a, 0x66b96194,
  5266  		0xde0506f1,
  5267  	},
  5268  	{
  5269  		0x00000000, 0x96300777, 0x2c610eee, 0xba510999, 0x19c46d07,
  5270  		0x8ff46a70, 0x35a563e9, 0xa395649e, 0x3288db0e, 0xa4b8dc79,
  5271  		0x1ee9d5e0, 0x88d9d297, 0x2b4cb609, 0xbd7cb17e, 0x072db8e7,
  5272  		0x911dbf90, 0x6410b71d, 0xf220b06a, 0x4871b9f3, 0xde41be84,
  5273  		0x7dd4da1a, 0xebe4dd6d, 0x51b5d4f4, 0xc785d383, 0x56986c13,
  5274  		0xc0a86b64, 0x7af962fd, 0xecc9658a, 0x4f5c0114, 0xd96c0663,
  5275  		0x633d0ffa, 0xf50d088d, 0xc8206e3b, 0x5e10694c, 0xe44160d5,
  5276  		0x727167a2, 0xd1e4033c, 0x47d4044b, 0xfd850dd2, 0x6bb50aa5,
  5277  		0xfaa8b535, 0x6c98b242, 0xd6c9bbdb, 0x40f9bcac, 0xe36cd832,
  5278  		0x755cdf45, 0xcf0dd6dc, 0x593dd1ab, 0xac30d926, 0x3a00de51,
  5279  		0x8051d7c8, 0x1661d0bf, 0xb5f4b421, 0x23c4b356, 0x9995bacf,
  5280  		0x0fa5bdb8, 0x9eb80228, 0x0888055f, 0xb2d90cc6, 0x24e90bb1,
  5281  		0x877c6f2f, 0x114c6858, 0xab1d61c1, 0x3d2d66b6, 0x9041dc76,
  5282  		0x0671db01, 0xbc20d298, 0x2a10d5ef, 0x8985b171, 0x1fb5b606,
  5283  		0xa5e4bf9f, 0x33d4b8e8, 0xa2c90778, 0x34f9000f, 0x8ea80996,
  5284  		0x18980ee1, 0xbb0d6a7f, 0x2d3d6d08, 0x976c6491, 0x015c63e6,
  5285  		0xf4516b6b, 0x62616c1c, 0xd8306585, 0x4e0062f2, 0xed95066c,
  5286  		0x7ba5011b, 0xc1f40882, 0x57c40ff5, 0xc6d9b065, 0x50e9b712,
  5287  		0xeab8be8b, 0x7c88b9fc, 0xdf1ddd62, 0x492dda15, 0xf37cd38c,
  5288  		0x654cd4fb, 0x5861b24d, 0xce51b53a, 0x7400bca3, 0xe230bbd4,
  5289  		0x41a5df4a, 0xd795d83d, 0x6dc4d1a4, 0xfbf4d6d3, 0x6ae96943,
  5290  		0xfcd96e34, 0x468867ad, 0xd0b860da, 0x732d0444, 0xe51d0333,
  5291  		0x5f4c0aaa, 0xc97c0ddd, 0x3c710550, 0xaa410227, 0x10100bbe,
  5292  		0x86200cc9, 0x25b56857, 0xb3856f20, 0x09d466b9, 0x9fe461ce,
  5293  		0x0ef9de5e, 0x98c9d929, 0x2298d0b0, 0xb4a8d7c7, 0x173db359,
  5294  		0x810db42e, 0x3b5cbdb7, 0xad6cbac0, 0x2083b8ed, 0xb6b3bf9a,
  5295  		0x0ce2b603, 0x9ad2b174, 0x3947d5ea, 0xaf77d29d, 0x1526db04,
  5296  		0x8316dc73, 0x120b63e3, 0x843b6494, 0x3e6a6d0d, 0xa85a6a7a,
  5297  		0x0bcf0ee4, 0x9dff0993, 0x27ae000a, 0xb19e077d, 0x44930ff0,
  5298  		0xd2a30887, 0x68f2011e, 0xfec20669, 0x5d5762f7, 0xcb676580,
  5299  		0x71366c19, 0xe7066b6e, 0x761bd4fe, 0xe02bd389, 0x5a7ada10,
  5300  		0xcc4add67, 0x6fdfb9f9, 0xf9efbe8e, 0x43beb717, 0xd58eb060,
  5301  		0xe8a3d6d6, 0x7e93d1a1, 0xc4c2d838, 0x52f2df4f, 0xf167bbd1,
  5302  		0x6757bca6, 0xdd06b53f, 0x4b36b248, 0xda2b0dd8, 0x4c1b0aaf,
  5303  		0xf64a0336, 0x607a0441, 0xc3ef60df, 0x55df67a8, 0xef8e6e31,
  5304  		0x79be6946, 0x8cb361cb, 0x1a8366bc, 0xa0d26f25, 0x36e26852,
  5305  		0x95770ccc, 0x03470bbb, 0xb9160222, 0x2f260555, 0xbe3bbac5,
  5306  		0x280bbdb2, 0x925ab42b, 0x046ab35c, 0xa7ffd7c2, 0x31cfd0b5,
  5307  		0x8b9ed92c, 0x1daede5b, 0xb0c2649b, 0x26f263ec, 0x9ca36a75,
  5308  		0x0a936d02, 0xa906099c, 0x3f360eeb, 0x85670772, 0x13570005,
  5309  		0x824abf95, 0x147ab8e2, 0xae2bb17b, 0x381bb60c, 0x9b8ed292,
  5310  		0x0dbed5e5, 0xb7efdc7c, 0x21dfdb0b, 0xd4d2d386, 0x42e2d4f1,
  5311  		0xf8b3dd68, 0x6e83da1f, 0xcd16be81, 0x5b26b9f6, 0xe177b06f,
  5312  		0x7747b718, 0xe65a0888, 0x706a0fff, 0xca3b0666, 0x5c0b0111,
  5313  		0xff9e658f, 0x69ae62f8, 0xd3ff6b61, 0x45cf6c16, 0x78e20aa0,
  5314  		0xeed20dd7, 0x5483044e, 0xc2b30339, 0x612667a7, 0xf71660d0,
  5315  		0x4d476949, 0xdb776e3e, 0x4a6ad1ae, 0xdc5ad6d9, 0x660bdf40,
  5316  		0xf03bd837, 0x53aebca9, 0xc59ebbde, 0x7fcfb247, 0xe9ffb530,
  5317  		0x1cf2bdbd, 0x8ac2baca, 0x3093b353, 0xa6a3b424, 0x0536d0ba,
  5318  		0x9306d7cd, 0x2957de54, 0xbf67d923, 0x2e7a66b3, 0xb84a61c4,
  5319  		0x021b685d, 0x942b6f2a, 0x37be0bb4, 0xa18e0cc3, 0x1bdf055a,
  5320  		0x8def022d,
  5321  	},
  5322  	{
  5323  		0x00000000, 0x41311b19, 0x82623632, 0xc3532d2b, 0x04c56c64,
  5324  		0x45f4777d, 0x86a75a56, 0xc796414f, 0x088ad9c8, 0x49bbc2d1,
  5325  		0x8ae8effa, 0xcbd9f4e3, 0x0c4fb5ac, 0x4d7eaeb5, 0x8e2d839e,
  5326  		0xcf1c9887, 0x5112c24a, 0x1023d953, 0xd370f478, 0x9241ef61,
  5327  		0x55d7ae2e, 0x14e6b537, 0xd7b5981c, 0x96848305, 0x59981b82,
  5328  		0x18a9009b, 0xdbfa2db0, 0x9acb36a9, 0x5d5d77e6, 0x1c6c6cff,
  5329  		0xdf3f41d4, 0x9e0e5acd, 0xa2248495, 0xe3159f8c, 0x2046b2a7,
  5330  		0x6177a9be, 0xa6e1e8f1, 0xe7d0f3e8, 0x2483dec3, 0x65b2c5da,
  5331  		0xaaae5d5d, 0xeb9f4644, 0x28cc6b6f, 0x69fd7076, 0xae6b3139,
  5332  		0xef5a2a20, 0x2c09070b, 0x6d381c12, 0xf33646df, 0xb2075dc6,
  5333  		0x715470ed, 0x30656bf4, 0xf7f32abb, 0xb6c231a2, 0x75911c89,
  5334  		0x34a00790, 0xfbbc9f17, 0xba8d840e, 0x79dea925, 0x38efb23c,
  5335  		0xff79f373, 0xbe48e86a, 0x7d1bc541, 0x3c2ade58, 0x054f79f0,
  5336  		0x447e62e9, 0x872d4fc2, 0xc61c54db, 0x018a1594, 0x40bb0e8d,
  5337  		0x83e823a6, 0xc2d938bf, 0x0dc5a038, 0x4cf4bb21, 0x8fa7960a,
  5338  		0xce968d13, 0x0900cc5c, 0x4831d745, 0x8b62fa6e, 0xca53e177,
  5339  		0x545dbbba, 0x156ca0a3, 0xd63f8d88, 0x970e9691, 0x5098d7de,
  5340  		0x11a9ccc7, 0xd2fae1ec, 0x93cbfaf5, 0x5cd76272, 0x1de6796b,
  5341  		0xdeb55440, 0x9f844f59, 0x58120e16, 0x1923150f, 0xda703824,
  5342  		0x9b41233d, 0xa76bfd65, 0xe65ae67c, 0x2509cb57, 0x6438d04e,
  5343  		0xa3ae9101, 0xe29f8a18, 0x21cca733, 0x60fdbc2a, 0xafe124ad,
  5344  		0xeed03fb4, 0x2d83129f, 0x6cb20986, 0xab2448c9, 0xea1553d0,
  5345  		0x29467efb, 0x687765e2, 0xf6793f2f, 0xb7482436, 0x741b091d,
  5346  		0x352a1204, 0xf2bc534b, 0xb38d4852, 0x70de6579, 0x31ef7e60,
  5347  		0xfef3e6e7, 0xbfc2fdfe, 0x7c91d0d5, 0x3da0cbcc, 0xfa368a83,
  5348  		0xbb07919a, 0x7854bcb1, 0x3965a7a8, 0x4b98833b, 0x0aa99822,
  5349  		0xc9fab509, 0x88cbae10, 0x4f5def5f, 0x0e6cf446, 0xcd3fd96d,
  5350  		0x8c0ec274, 0x43125af3, 0x022341ea, 0xc1706cc1, 0x804177d8,
  5351  		0x47d73697, 0x06e62d8e, 0xc5b500a5, 0x84841bbc, 0x1a8a4171,
  5352  		0x5bbb5a68, 0x98e87743, 0xd9d96c5a, 0x1e4f2d15, 0x5f7e360c,
  5353  		0x9c2d1b27, 0xdd1c003e, 0x120098b9, 0x533183a0, 0x9062ae8b,
  5354  		0xd153b592, 0x16c5f4dd, 0x57f4efc4, 0x94a7c2ef, 0xd596d9f6,
  5355  		0xe9bc07ae, 0xa88d1cb7, 0x6bde319c, 0x2aef2a85, 0xed796bca,
  5356  		0xac4870d3, 0x6f1b5df8, 0x2e2a46e1, 0xe136de66, 0xa007c57f,
  5357  		0x6354e854, 0x2265f34d, 0xe5f3b202, 0xa4c2a91b, 0x67918430,
  5358  		0x26a09f29, 0xb8aec5e4, 0xf99fdefd, 0x3accf3d6, 0x7bfde8cf,
  5359  		0xbc6ba980, 0xfd5ab299, 0x3e099fb2, 0x7f3884ab, 0xb0241c2c,
  5360  		0xf1150735, 0x32462a1e, 0x73773107, 0xb4e17048, 0xf5d06b51,
  5361  		0x3683467a, 0x77b25d63, 0x4ed7facb, 0x0fe6e1d2, 0xccb5ccf9,
  5362  		0x8d84d7e0, 0x4a1296af, 0x0b238db6, 0xc870a09d, 0x8941bb84,
  5363  		0x465d2303, 0x076c381a, 0xc43f1531, 0x850e0e28, 0x42984f67,
  5364  		0x03a9547e, 0xc0fa7955, 0x81cb624c, 0x1fc53881, 0x5ef42398,
  5365  		0x9da70eb3, 0xdc9615aa, 0x1b0054e5, 0x5a314ffc, 0x996262d7,
  5366  		0xd85379ce, 0x174fe149, 0x567efa50, 0x952dd77b, 0xd41ccc62,
  5367  		0x138a8d2d, 0x52bb9634, 0x91e8bb1f, 0xd0d9a006, 0xecf37e5e,
  5368  		0xadc26547, 0x6e91486c, 0x2fa05375, 0xe836123a, 0xa9070923,
  5369  		0x6a542408, 0x2b653f11, 0xe479a796, 0xa548bc8f, 0x661b91a4,
  5370  		0x272a8abd, 0xe0bccbf2, 0xa18dd0eb, 0x62defdc0, 0x23efe6d9,
  5371  		0xbde1bc14, 0xfcd0a70d, 0x3f838a26, 0x7eb2913f, 0xb924d070,
  5372  		0xf815cb69, 0x3b46e642, 0x7a77fd5b, 0xb56b65dc, 0xf45a7ec5,
  5373  		0x370953ee, 0x763848f7, 0xb1ae09b8, 0xf09f12a1, 0x33cc3f8a,
  5374  		0x72fd2493,
  5375  	},
  5376  	{
  5377  		0x00000000, 0x376ac201, 0x6ed48403, 0x59be4602, 0xdca80907,
  5378  		0xebc2cb06, 0xb27c8d04, 0x85164f05, 0xb851130e, 0x8f3bd10f,
  5379  		0xd685970d, 0xe1ef550c, 0x64f91a09, 0x5393d808, 0x0a2d9e0a,
  5380  		0x3d475c0b, 0x70a3261c, 0x47c9e41d, 0x1e77a21f, 0x291d601e,
  5381  		0xac0b2f1b, 0x9b61ed1a, 0xc2dfab18, 0xf5b56919, 0xc8f23512,
  5382  		0xff98f713, 0xa626b111, 0x914c7310, 0x145a3c15, 0x2330fe14,
  5383  		0x7a8eb816, 0x4de47a17, 0xe0464d38, 0xd72c8f39, 0x8e92c93b,
  5384  		0xb9f80b3a, 0x3cee443f, 0x0b84863e, 0x523ac03c, 0x6550023d,
  5385  		0x58175e36, 0x6f7d9c37, 0x36c3da35, 0x01a91834, 0x84bf5731,
  5386  		0xb3d59530, 0xea6bd332, 0xdd011133, 0x90e56b24, 0xa78fa925,
  5387  		0xfe31ef27, 0xc95b2d26, 0x4c4d6223, 0x7b27a022, 0x2299e620,
  5388  		0x15f32421, 0x28b4782a, 0x1fdeba2b, 0x4660fc29, 0x710a3e28,
  5389  		0xf41c712d, 0xc376b32c, 0x9ac8f52e, 0xada2372f, 0xc08d9a70,
  5390  		0xf7e75871, 0xae591e73, 0x9933dc72, 0x1c259377, 0x2b4f5176,
  5391  		0x72f11774, 0x459bd575, 0x78dc897e, 0x4fb64b7f, 0x16080d7d,
  5392  		0x2162cf7c, 0xa4748079, 0x931e4278, 0xcaa0047a, 0xfdcac67b,
  5393  		0xb02ebc6c, 0x87447e6d, 0xdefa386f, 0xe990fa6e, 0x6c86b56b,
  5394  		0x5bec776a, 0x02523168, 0x3538f369, 0x087faf62, 0x3f156d63,
  5395  		0x66ab2b61, 0x51c1e960, 0xd4d7a665, 0xe3bd6464, 0xba032266,
  5396  		0x8d69e067, 0x20cbd748, 0x17a11549, 0x4e1f534b, 0x7975914a,
  5397  		0xfc63de4f, 0xcb091c4e, 0x92b75a4c, 0xa5dd984d, 0x989ac446,
  5398  		0xaff00647, 0xf64e4045, 0xc1248244, 0x4432cd41, 0x73580f40,
  5399  		0x2ae64942, 0x1d8c8b43, 0x5068f154, 0x67023355, 0x3ebc7557,
  5400  		0x09d6b756, 0x8cc0f853, 0xbbaa3a52, 0xe2147c50, 0xd57ebe51,
  5401  		0xe839e25a, 0xdf53205b, 0x86ed6659, 0xb187a458, 0x3491eb5d,
  5402  		0x03fb295c, 0x5a456f5e, 0x6d2fad5f, 0x801b35e1, 0xb771f7e0,
  5403  		0xeecfb1e2, 0xd9a573e3, 0x5cb33ce6, 0x6bd9fee7, 0x3267b8e5,
  5404  		0x050d7ae4, 0x384a26ef, 0x0f20e4ee, 0x569ea2ec, 0x61f460ed,
  5405  		0xe4e22fe8, 0xd388ede9, 0x8a36abeb, 0xbd5c69ea, 0xf0b813fd,
  5406  		0xc7d2d1fc, 0x9e6c97fe, 0xa90655ff, 0x2c101afa, 0x1b7ad8fb,
  5407  		0x42c49ef9, 0x75ae5cf8, 0x48e900f3, 0x7f83c2f2, 0x263d84f0,
  5408  		0x115746f1, 0x944109f4, 0xa32bcbf5, 0xfa958df7, 0xcdff4ff6,
  5409  		0x605d78d9, 0x5737bad8, 0x0e89fcda, 0x39e33edb, 0xbcf571de,
  5410  		0x8b9fb3df, 0xd221f5dd, 0xe54b37dc, 0xd80c6bd7, 0xef66a9d6,
  5411  		0xb6d8efd4, 0x81b22dd5, 0x04a462d0, 0x33cea0d1, 0x6a70e6d3,
  5412  		0x5d1a24d2, 0x10fe5ec5, 0x27949cc4, 0x7e2adac6, 0x494018c7,
  5413  		0xcc5657c2, 0xfb3c95c3, 0xa282d3c1, 0x95e811c0, 0xa8af4dcb,
  5414  		0x9fc58fca, 0xc67bc9c8, 0xf1110bc9, 0x740744cc, 0x436d86cd,
  5415  		0x1ad3c0cf, 0x2db902ce, 0x4096af91, 0x77fc6d90, 0x2e422b92,
  5416  		0x1928e993, 0x9c3ea696, 0xab546497, 0xf2ea2295, 0xc580e094,
  5417  		0xf8c7bc9f, 0xcfad7e9e, 0x9613389c, 0xa179fa9d, 0x246fb598,
  5418  		0x13057799, 0x4abb319b, 0x7dd1f39a, 0x3035898d, 0x075f4b8c,
  5419  		0x5ee10d8e, 0x698bcf8f, 0xec9d808a, 0xdbf7428b, 0x82490489,
  5420  		0xb523c688, 0x88649a83, 0xbf0e5882, 0xe6b01e80, 0xd1dadc81,
  5421  		0x54cc9384, 0x63a65185, 0x3a181787, 0x0d72d586, 0xa0d0e2a9,
  5422  		0x97ba20a8, 0xce0466aa, 0xf96ea4ab, 0x7c78ebae, 0x4b1229af,
  5423  		0x12ac6fad, 0x25c6adac, 0x1881f1a7, 0x2feb33a6, 0x765575a4,
  5424  		0x413fb7a5, 0xc429f8a0, 0xf3433aa1, 0xaafd7ca3, 0x9d97bea2,
  5425  		0xd073c4b5, 0xe71906b4, 0xbea740b6, 0x89cd82b7, 0x0cdbcdb2,
  5426  		0x3bb10fb3, 0x620f49b1, 0x55658bb0, 0x6822d7bb, 0x5f4815ba,
  5427  		0x06f653b8, 0x319c91b9, 0xb48adebc, 0x83e01cbd, 0xda5e5abf,
  5428  		0xed3498be,
  5429  	},
  5430  	{
  5431  		0x00000000, 0x6567bcb8, 0x8bc809aa, 0xeeafb512, 0x5797628f,
  5432  		0x32f0de37, 0xdc5f6b25, 0xb938d79d, 0xef28b4c5, 0x8a4f087d,
  5433  		0x64e0bd6f, 0x018701d7, 0xb8bfd64a, 0xddd86af2, 0x3377dfe0,
  5434  		0x56106358, 0x9f571950, 0xfa30a5e8, 0x149f10fa, 0x71f8ac42,
  5435  		0xc8c07bdf, 0xada7c767, 0x43087275, 0x266fcecd, 0x707fad95,
  5436  		0x1518112d, 0xfbb7a43f, 0x9ed01887, 0x27e8cf1a, 0x428f73a2,
  5437  		0xac20c6b0, 0xc9477a08, 0x3eaf32a0, 0x5bc88e18, 0xb5673b0a,
  5438  		0xd00087b2, 0x6938502f, 0x0c5fec97, 0xe2f05985, 0x8797e53d,
  5439  		0xd1878665, 0xb4e03add, 0x5a4f8fcf, 0x3f283377, 0x8610e4ea,
  5440  		0xe3775852, 0x0dd8ed40, 0x68bf51f8, 0xa1f82bf0, 0xc49f9748,
  5441  		0x2a30225a, 0x4f579ee2, 0xf66f497f, 0x9308f5c7, 0x7da740d5,
  5442  		0x18c0fc6d, 0x4ed09f35, 0x2bb7238d, 0xc518969f, 0xa07f2a27,
  5443  		0x1947fdba, 0x7c204102, 0x928ff410, 0xf7e848a8, 0x3d58149b,
  5444  		0x583fa823, 0xb6901d31, 0xd3f7a189, 0x6acf7614, 0x0fa8caac,
  5445  		0xe1077fbe, 0x8460c306, 0xd270a05e, 0xb7171ce6, 0x59b8a9f4,
  5446  		0x3cdf154c, 0x85e7c2d1, 0xe0807e69, 0x0e2fcb7b, 0x6b4877c3,
  5447  		0xa20f0dcb, 0xc768b173, 0x29c70461, 0x4ca0b8d9, 0xf5986f44,
  5448  		0x90ffd3fc, 0x7e5066ee, 0x1b37da56, 0x4d27b90e, 0x284005b6,
  5449  		0xc6efb0a4, 0xa3880c1c, 0x1ab0db81, 0x7fd76739, 0x9178d22b,
  5450  		0xf41f6e93, 0x03f7263b, 0x66909a83, 0x883f2f91, 0xed589329,
  5451  		0x546044b4, 0x3107f80c, 0xdfa84d1e, 0xbacff1a6, 0xecdf92fe,
  5452  		0x89b82e46, 0x67179b54, 0x027027ec, 0xbb48f071, 0xde2f4cc9,
  5453  		0x3080f9db, 0x55e74563, 0x9ca03f6b, 0xf9c783d3, 0x176836c1,
  5454  		0x720f8a79, 0xcb375de4, 0xae50e15c, 0x40ff544e, 0x2598e8f6,
  5455  		0x73888bae, 0x16ef3716, 0xf8408204, 0x9d273ebc, 0x241fe921,
  5456  		0x41785599, 0xafd7e08b, 0xcab05c33, 0x3bb659ed, 0x5ed1e555,
  5457  		0xb07e5047, 0xd519ecff, 0x6c213b62, 0x094687da, 0xe7e932c8,
  5458  		0x828e8e70, 0xd49eed28, 0xb1f95190, 0x5f56e482, 0x3a31583a,
  5459  		0x83098fa7, 0xe66e331f, 0x08c1860d, 0x6da63ab5, 0xa4e140bd,
  5460  		0xc186fc05, 0x2f294917, 0x4a4ef5af, 0xf3762232, 0x96119e8a,
  5461  		0x78be2b98, 0x1dd99720, 0x4bc9f478, 0x2eae48c0, 0xc001fdd2,
  5462  		0xa566416a, 0x1c5e96f7, 0x79392a4f, 0x97969f5d, 0xf2f123e5,
  5463  		0x05196b4d, 0x607ed7f5, 0x8ed162e7, 0xebb6de5f, 0x528e09c2,
  5464  		0x37e9b57a, 0xd9460068, 0xbc21bcd0, 0xea31df88, 0x8f566330,
  5465  		0x61f9d622, 0x049e6a9a, 0xbda6bd07, 0xd8c101bf, 0x366eb4ad,
  5466  		0x53090815, 0x9a4e721d, 0xff29cea5, 0x11867bb7, 0x74e1c70f,
  5467  		0xcdd91092, 0xa8beac2a, 0x46111938, 0x2376a580, 0x7566c6d8,
  5468  		0x10017a60, 0xfeaecf72, 0x9bc973ca, 0x22f1a457, 0x479618ef,
  5469  		0xa939adfd, 0xcc5e1145, 0x06ee4d76, 0x6389f1ce, 0x8d2644dc,
  5470  		0xe841f864, 0x51792ff9, 0x341e9341, 0xdab12653, 0xbfd69aeb,
  5471  		0xe9c6f9b3, 0x8ca1450b, 0x620ef019, 0x07694ca1, 0xbe519b3c,
  5472  		0xdb362784, 0x35999296, 0x50fe2e2e, 0x99b95426, 0xfcdee89e,
  5473  		0x12715d8c, 0x7716e134, 0xce2e36a9, 0xab498a11, 0x45e63f03,
  5474  		0x208183bb, 0x7691e0e3, 0x13f65c5b, 0xfd59e949, 0x983e55f1,
  5475  		0x2106826c, 0x44613ed4, 0xaace8bc6, 0xcfa9377e, 0x38417fd6,
  5476  		0x5d26c36e, 0xb389767c, 0xd6eecac4, 0x6fd61d59, 0x0ab1a1e1,
  5477  		0xe41e14f3, 0x8179a84b, 0xd769cb13, 0xb20e77ab, 0x5ca1c2b9,
  5478  		0x39c67e01, 0x80fea99c, 0xe5991524, 0x0b36a036, 0x6e511c8e,
  5479  		0xa7166686, 0xc271da3e, 0x2cde6f2c, 0x49b9d394, 0xf0810409,
  5480  		0x95e6b8b1, 0x7b490da3, 0x1e2eb11b, 0x483ed243, 0x2d596efb,
  5481  		0xc3f6dbe9, 0xa6916751, 0x1fa9b0cc, 0x7ace0c74, 0x9461b966,
  5482  		0xf10605de,
  5483  	},
  5484  } /* crc32.h:5:25 */
  5485  
  5486  // =========================================================================
  5487  // This function can be used by asm versions of crc32()
  5488  func Xget_crc_table(tls *libc.TLS) uintptr { /* crc32.c:188:19: */
  5489  	return uintptr(uintptr(unsafe.Pointer(&crc_table)))
  5490  }
  5491  
  5492  // =========================================================================
  5493  
  5494  // =========================================================================
  5495  func Xcrc32_z(tls *libc.TLS, crc uint32, buf uintptr, len Z_size_t) uint32 { /* crc32.c:202:23: */
  5496  	bp := tls.Alloc(4)
  5497  	defer tls.Free(4)
  5498  
  5499  	if buf == uintptr(Z_NULL) {
  5500  		return 0
  5501  	}
  5502  
  5503  	if uint32(unsafe.Sizeof(uintptr(0))) == uint32(unsafe.Sizeof(Ptrdiff_t(0))) {
  5504  		// var endian Z_crc_t at bp, 4
  5505  
  5506  		*(*Z_crc_t)(unsafe.Pointer(bp /* endian */)) = Z_crc_t(1)
  5507  		if *(*uint8)(unsafe.Pointer(bp /* &endian */)) != 0 {
  5508  			return crc32_little(tls, crc, buf, len)
  5509  		} else {
  5510  			return crc32_big(tls, crc, buf, len)
  5511  		}
  5512  	}
  5513  	crc = (crc ^ 0xffffffff)
  5514  	for len >= Z_size_t(8) {
  5515  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5516  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5517  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5518  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5519  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5520  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5521  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5522  		crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5523  		len = len - (Z_size_t(8))
  5524  	}
  5525  	if len != 0 {
  5526  		for ok := true; ok; ok = libc.PreDecUint32(&len, 1) != 0 {
  5527  			crc = (uint32(*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((int32(crc)^(int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))&0xff))*4))) ^ (crc >> 8))
  5528  		}
  5529  	}
  5530  	return (crc ^ 0xffffffff)
  5531  }
  5532  
  5533  // =========================================================================
  5534  func Xcrc32(tls *libc.TLS, crc uint32, buf uintptr, len UInt) uint32 { /* crc32.c:237:23: */
  5535  	return Xcrc32_z(tls, crc, buf, len)
  5536  }
  5537  
  5538  //
  5539  //    This BYFOUR code accesses the passed unsigned char * buffer with a 32-bit
  5540  //    integer pointer type. This violates the strict aliasing rule, where a
  5541  //    compiler can assume, for optimization purposes, that two pointers to
  5542  //    fundamentally different types won't ever point to the same memory. This can
  5543  //    manifest as a problem only if one of the pointers is written to. This code
  5544  //    only reads from those pointers. So long as this code remains isolated in
  5545  //    this compilation unit, there won't be a problem. For this reason, this code
  5546  //    should not be copied and pasted into a compilation unit in which other code
  5547  //    writes to the buffer that is passed to these routines.
  5548  //
  5549  
  5550  // =========================================================================
  5551  
  5552  // =========================================================================
  5553  func crc32_little(tls *libc.TLS, crc uint32, buf uintptr, len Z_size_t) uint32 { /* crc32.c:266:21: */
  5554  	var c Z_crc_t
  5555  	var buf4 uintptr
  5556  
  5557  	c = Z_crc_t(crc)
  5558  	c = ^c
  5559  	for (len != 0) && ((Ptrdiff_t(buf) & 3) != 0) {
  5560  		c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((c^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&Z_crc_t(0xff)))*4)) ^ (c >> 8))
  5561  		len--
  5562  	}
  5563  
  5564  	buf4 = buf
  5565  	for len >= Z_size_t(32) {
  5566  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5567  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5568  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5569  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5570  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5571  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5572  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5573  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5574  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5575  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5576  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5577  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5578  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5579  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5580  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5581  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5582  		len = len - (Z_size_t(32))
  5583  	}
  5584  	for len >= Z_size_t(4) {
  5585  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5586  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 3*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 2*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 1*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr((c>>24))*4)))
  5587  		len = len - (Z_size_t(4))
  5588  	}
  5589  	buf = buf4
  5590  
  5591  	if len != 0 {
  5592  		for ok := true; ok; ok = libc.PreDecUint32(&len, 1) != 0 {
  5593  			c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table))) + uintptr(((c^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1)))))&Z_crc_t(0xff)))*4)) ^ (c >> 8))
  5594  		}
  5595  	}
  5596  	c = ^c
  5597  	return uint32(c)
  5598  }
  5599  
  5600  // =========================================================================
  5601  
  5602  // =========================================================================
  5603  func crc32_big(tls *libc.TLS, crc uint32, buf uintptr, len Z_size_t) uint32 { /* crc32.c:306:21: */
  5604  	var c Z_crc_t
  5605  	var buf4 uintptr
  5606  
  5607  	c = ((((((Z_crc_t(crc)) >> 24) & Z_crc_t(0xff)) + (((Z_crc_t(crc)) >> 8) & Z_crc_t(0xff00))) + (((Z_crc_t(crc)) & Z_crc_t(0xff00)) << 8)) + (((Z_crc_t(crc)) & Z_crc_t(0xff)) << 24))
  5608  	c = ^c
  5609  	for (len != 0) && ((Ptrdiff_t(buf) & 3) != 0) {
  5610  		c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr(((c>>24)^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))*4)) ^ (c << 8))
  5611  		len--
  5612  	}
  5613  
  5614  	buf4 = buf
  5615  	for len >= Z_size_t(32) {
  5616  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5617  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5618  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5619  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5620  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5621  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5622  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5623  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5624  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5625  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5626  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5627  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5628  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5629  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5630  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5631  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5632  		len = len - (Z_size_t(32))
  5633  	}
  5634  	for len >= Z_size_t(4) {
  5635  		c = c ^ (*(*Z_crc_t)(unsafe.Pointer(libc.PostIncUintptr(&buf4, 4))))
  5636  		c = (((*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr((c&Z_crc_t(0xff)))*4)) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 5*1024) + uintptr(((c>>8)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 6*1024) + uintptr(((c>>16)&Z_crc_t(0xff)))*4))) ^ *(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 7*1024) + uintptr((c>>24))*4)))
  5637  		len = len - (Z_size_t(4))
  5638  	}
  5639  	buf = buf4
  5640  
  5641  	if len != 0 {
  5642  		for ok := true; ok; ok = libc.PreDecUint32(&len, 1) != 0 {
  5643  			c = (*(*Z_crc_t)(unsafe.Pointer((uintptr(unsafe.Pointer(&crc_table)) + 4*1024) + uintptr(((c>>24)^Z_crc_t(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&buf, 1))))))*4)) ^ (c << 8))
  5644  		}
  5645  	}
  5646  	c = ^c
  5647  	return (uint32((((((c) >> 24) & Z_crc_t(0xff)) + (((c) >> 8) & Z_crc_t(0xff00))) + (((c) & Z_crc_t(0xff00)) << 8)) + (((c) & Z_crc_t(0xff)) << 24)))
  5648  }
  5649  
  5650  // =========================================================================
  5651  func gf2_matrix_times(tls *libc.TLS, mat uintptr, vec uint32) uint32 { /* crc32.c:344:21: */
  5652  	var sum uint32
  5653  
  5654  	sum = uint32(0)
  5655  	for vec != 0 {
  5656  		if (vec & uint32(1)) != 0 {
  5657  			sum = sum ^ (*(*uint32)(unsafe.Pointer(mat)))
  5658  		}
  5659  		vec >>= 1
  5660  		mat += 4
  5661  	}
  5662  	return sum
  5663  }
  5664  
  5665  // =========================================================================
  5666  func gf2_matrix_square(tls *libc.TLS, square uintptr, mat uintptr) { /* crc32.c:361:12: */
  5667  	var n int32
  5668  
  5669  	for n = 0; n < GF2_DIM; n++ {
  5670  		*(*uint32)(unsafe.Pointer(square + uintptr(n)*4)) = gf2_matrix_times(tls, mat, *(*uint32)(unsafe.Pointer(mat + uintptr(n)*4)))
  5671  	}
  5672  }
  5673  
  5674  // =========================================================================
  5675  func crc32_combine_(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off64_t) ULong { /* crc32.c:372:13: */
  5676  	bp := tls.Alloc(256)
  5677  	defer tls.Free(256)
  5678  
  5679  	var n int32
  5680  	var row uint32
  5681  	// var even [32]uint32 at bp+128, 128
  5682  	// even-power-of-two zeros operator
  5683  	// var odd [32]uint32 at bp, 128
  5684  	// odd-power-of-two zeros operator
  5685  
  5686  	// degenerate case (also disallow negative lengths)
  5687  	if len2 <= int64(0) {
  5688  		return crc1
  5689  	}
  5690  
  5691  	// put operator for one zero bit in odd
  5692  	*(*uint32)(unsafe.Pointer(bp /* &odd[0] */)) = 0xedb88320 // CRC-32 polynomial
  5693  	row = uint32(1)
  5694  	for n = 1; n < GF2_DIM; n++ {
  5695  		*(*uint32)(unsafe.Pointer(bp /* &odd[0] */ + uintptr(n)*4)) = row
  5696  		row <<= 1
  5697  	}
  5698  
  5699  	// put operator for two zero bits in even
  5700  	gf2_matrix_square(tls, bp+128 /* &even[0] */, bp /* &odd[0] */)
  5701  
  5702  	// put operator for four zero bits in odd
  5703  	gf2_matrix_square(tls, bp /* &odd[0] */, bp+128 /* &even[0] */)
  5704  
  5705  	// apply len2 zeros to crc1 (first square will put the operator for one
  5706  	//        zero byte, eight zero bits, in even)
  5707  	for ok := true; ok; ok = (len2 != int64(0)) {
  5708  		// apply zeros operator for this bit of len2
  5709  		gf2_matrix_square(tls, bp+128 /* &even[0] */, bp /* &odd[0] */)
  5710  		if (len2 & int64(1)) != 0 {
  5711  			crc1 = gf2_matrix_times(tls, bp+128 /* &even[0] */, crc1)
  5712  		}
  5713  		len2 >>= 1
  5714  
  5715  		// if no more bits set, then done
  5716  		if len2 == int64(0) {
  5717  			break
  5718  		}
  5719  
  5720  		// another iteration of the loop with odd and even swapped
  5721  		gf2_matrix_square(tls, bp /* &odd[0] */, bp+128 /* &even[0] */)
  5722  		if (len2 & int64(1)) != 0 {
  5723  			crc1 = gf2_matrix_times(tls, bp /* &odd[0] */, crc1)
  5724  		}
  5725  		len2 >>= 1
  5726  
  5727  		// if no more bits set, then done
  5728  	}
  5729  
  5730  	// return combined crc
  5731  	crc1 = crc1 ^ (crc2)
  5732  	return crc1
  5733  }
  5734  
  5735  // =========================================================================
  5736  func Xcrc32_combine(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off_t) ULong { /* crc32.c:428:15: */
  5737  	return crc32_combine_(tls, crc1, crc2, len2)
  5738  }
  5739  
  5740  func Xcrc32_combine64(tls *libc.TLS, crc1 ULong, crc2 ULong, len2 Off64_t) ULong { /* crc32.c:436:15: */
  5741  	return crc32_combine_(tls, crc1, crc2, len2)
  5742  }
  5743  
  5744  // Reverse the bytes in a 32-bit value
  5745  
  5746  // define NO_GZIP when compiling if you want to disable gzip header and
  5747  //    trailer creation by deflate().  NO_GZIP would be used to avoid linking in
  5748  //    the crc code when it is not needed.  For shared libraries, gzip encoding
  5749  //    should be left enabled.
  5750  
  5751  // ===========================================================================
  5752  // Internal compression state.
  5753  
  5754  // number of length codes, not counting the special END_BLOCK code
  5755  
  5756  // number of literal bytes 0..255
  5757  
  5758  // number of Literal or Length codes, including the END_BLOCK code
  5759  
  5760  // number of distance codes
  5761  
  5762  // number of codes used to transfer the bit lengths
  5763  
  5764  // maximum heap size
  5765  
  5766  // All codes must not exceed MAX_BITS bits
  5767  
  5768  // size of bit buffer in bi_buf
  5769  
  5770  // Stream status
  5771  
  5772  // Data structure describing a single value and its code string.
  5773  type Ct_data_s = struct {
  5774  	Ffc struct{ Ffreq Ush }
  5775  	Fdl struct{ Fdad Ush }
  5776  } /* zlib.h:84:1 */
  5777  
  5778  // Reverse the bytes in a 32-bit value
  5779  
  5780  // define NO_GZIP when compiling if you want to disable gzip header and
  5781  //    trailer creation by deflate().  NO_GZIP would be used to avoid linking in
  5782  //    the crc code when it is not needed.  For shared libraries, gzip encoding
  5783  //    should be left enabled.
  5784  
  5785  // ===========================================================================
  5786  // Internal compression state.
  5787  
  5788  // number of length codes, not counting the special END_BLOCK code
  5789  
  5790  // number of literal bytes 0..255
  5791  
  5792  // number of Literal or Length codes, including the END_BLOCK code
  5793  
  5794  // number of distance codes
  5795  
  5796  // number of codes used to transfer the bit lengths
  5797  
  5798  // maximum heap size
  5799  
  5800  // All codes must not exceed MAX_BITS bits
  5801  
  5802  // size of bit buffer in bi_buf
  5803  
  5804  // Stream status
  5805  
  5806  // Data structure describing a single value and its code string.
  5807  type Ct_data = Ct_data_s /* deflate.h:77:7 */
  5808  
  5809  type Static_tree_desc_s = struct {
  5810  	Fstatic_tree uintptr
  5811  	Fextra_bits  uintptr
  5812  	Fextra_base  int32
  5813  	Felems       int32
  5814  	Fmax_length  int32
  5815  } /* deflate.h:84:9 */
  5816  
  5817  type Tree_desc_s = struct {
  5818  	Fdyn_tree  uintptr
  5819  	Fmax_code  int32
  5820  	Fstat_desc uintptr
  5821  } /* zlib.h:84:1 */
  5822  
  5823  type Tree_desc = Tree_desc_s /* deflate.h:90:7 */
  5824  
  5825  type Pos = Ush     /* deflate.h:92:13 */
  5826  type Posf = Pos    /* deflate.h:93:17 */
  5827  type IPos = uint32 /* deflate.h:94:18 */
  5828  
  5829  // A Pos is an index in the character window. We use short instead of int to
  5830  // save space in the various tables. IPos is used only for parameter passing.
  5831  
  5832  type Deflate_state = Internal_state /* deflate.h:276:7 */
  5833  
  5834  var Xdeflate_copyright = *(*[69]uint8)(unsafe.Pointer(ts + 7 /* " deflate 1.2.11 ..." */)) /* deflate.c:54:12 */
  5835  //
  5836  //   If you use the zlib library in a product, an acknowledgment is welcome
  5837  //   in the documentation of your product. If for some reason you cannot
  5838  //   include such an acknowledgment, I would appreciate that you keep this
  5839  //   copyright string in the executable of your product.
  5840  //
  5841  
  5842  // ===========================================================================
  5843  //  Function prototypes.
  5844  type Block_state = uint32 /* deflate.c:71:3 */
  5845  
  5846  type Compress_func = uintptr /* deflate.c:73:21 */
  5847  
  5848  // ===========================================================================
  5849  // Local data
  5850  
  5851  // Tail of hash chains
  5852  
  5853  // Matches of length 3 are discarded if their distance exceeds TOO_FAR
  5854  
  5855  // Values for max_lazy_match, good_match and max_chain_length, depending on
  5856  // the desired pack level (0..9). The values given below have been tuned to
  5857  // exclude worst case performance for pathological files. Better values may be
  5858  // found for specific files.
  5859  type Config_s = struct {
  5860  	Fgood_length Ush
  5861  	Fmax_lazy    Ush
  5862  	Fnice_length Ush
  5863  	Fmax_chain   Ush
  5864  	Ffunc        Compress_func
  5865  } /* deflate.c:120:9 */
  5866  
  5867  // ===========================================================================
  5868  // Local data
  5869  
  5870  // Tail of hash chains
  5871  
  5872  // Matches of length 3 are discarded if their distance exceeds TOO_FAR
  5873  
  5874  // Values for max_lazy_match, good_match and max_chain_length, depending on
  5875  // the desired pack level (0..9). The values given below have been tuned to
  5876  // exclude worst case performance for pathological files. Better values may be
  5877  // found for specific files.
  5878  type Config = Config_s /* deflate.c:126:3 */
  5879  
  5880  var configuration_table = [10]Config{
  5881  	//      good lazy nice chain
  5882  	/* 0 */ {Ffunc: 0}, // store only
  5883  	/* 1 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(8), Fmax_chain: Ush(4), Ffunc: 0}, // max speed, no lazy matches
  5884  	/* 2 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(5), Fnice_length: Ush(16), Fmax_chain: Ush(8), Ffunc: 0},
  5885  	/* 3 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(6), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0},
  5886  
  5887  	/* 4 */ {Fgood_length: Ush(4), Fmax_lazy: Ush(4), Fnice_length: Ush(16), Fmax_chain: Ush(16), Ffunc: 0}, // lazy matches
  5888  	/* 5 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(32), Fmax_chain: Ush(32), Ffunc: 0},
  5889  	/* 6 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(16), Fnice_length: Ush(128), Fmax_chain: Ush(128), Ffunc: 0},
  5890  	/* 7 */ {Fgood_length: Ush(8), Fmax_lazy: Ush(32), Fnice_length: Ush(128), Fmax_chain: Ush(256), Ffunc: 0},
  5891  	/* 8 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(128), Fnice_length: Ush(258), Fmax_chain: Ush(1024), Ffunc: 0},
  5892  	/* 9 */ {Fgood_length: Ush(32), Fmax_lazy: Ush(258), Fnice_length: Ush(258), Fmax_chain: Ush(4096), Ffunc: 0}} /* deflate.c:134:20 */
  5893  
  5894  // max compression
  5895  
  5896  // Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4
  5897  // For deflate_fast() (levels <= 3) good is ignored and lazy has a different
  5898  // meaning.
  5899  
  5900  // rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH
  5901  
  5902  // ===========================================================================
  5903  // Update a hash value with the given input byte
  5904  // IN  assertion: all calls to UPDATE_HASH are made with consecutive input
  5905  //    characters, so that a running hash key can be computed from the previous
  5906  //    key instead of complete recalculation each time.
  5907  
  5908  // ===========================================================================
  5909  // Insert string str in the dictionary and set match_head to the previous head
  5910  // of the hash chain (the most recent string with same hash key). Return
  5911  // the previous length of the hash chain.
  5912  // If this file is compiled with -DFASTEST, the compression level is forced
  5913  // to 1, and no hash chains are maintained.
  5914  // IN  assertion: all calls to INSERT_STRING are made with consecutive input
  5915  //    characters and the first MIN_MATCH bytes of str are valid (except for
  5916  //    the last MIN_MATCH-1 bytes of the input file).
  5917  
  5918  // ===========================================================================
  5919  // Initialize the hash table (avoiding 64K overflow for 16 bit systems).
  5920  // prev[] will be initialized on the fly.
  5921  
  5922  // ===========================================================================
  5923  // Slide the hash table when sliding the window down (could be avoided with 32
  5924  // bit values at the expense of memory usage). We slide even when level == 0 to
  5925  // keep the hash table consistent if we switch back to level > 0 later.
  5926  func slide_hash(tls *libc.TLS, s uintptr) { /* deflate.c:201:12: */
  5927  	var n uint32
  5928  	var m uint32
  5929  	var p uintptr
  5930  	var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  5931  
  5932  	n = (*Deflate_state)(unsafe.Pointer(s)).Fhash_size
  5933  	p = ((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(n)*2)
  5934  	for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  5935  		m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2))))
  5936  		*(*Posf)(unsafe.Pointer(p)) = func() uint16 {
  5937  			if m >= wsize {
  5938  				return (uint16(m - wsize))
  5939  			}
  5940  			return uint16(NIL)
  5941  		}()
  5942  	}
  5943  	n = wsize
  5944  	p = ((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr(n)*2)
  5945  	for ok1 := true; ok1; ok1 = libc.PreDecUint32(&n, 1) != 0 {
  5946  		m = uint32(*(*Posf)(unsafe.Pointer(libc.PreDecUintptr(&p, 2))))
  5947  		*(*Posf)(unsafe.Pointer(p)) = func() uint16 {
  5948  			if m >= wsize {
  5949  				return (uint16(m - wsize))
  5950  			}
  5951  			return uint16(NIL)
  5952  		}()
  5953  		// If n is not on any hash chain, prev[n] is garbage but
  5954  		// its value will never be used.
  5955  	}
  5956  }
  5957  
  5958  // =========================================================================
  5959  func XdeflateInit_(tls *libc.TLS, strm Z_streamp, level int32, version uintptr, stream_size int32) int32 { /* deflate.c:228:13: */
  5960  	return XdeflateInit2_(tls, strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL,
  5961  		Z_DEFAULT_STRATEGY, version, stream_size)
  5962  	// To do: ignore strm->next_in if we use it as window
  5963  }
  5964  
  5965  // =========================================================================
  5966  func XdeflateInit2_(tls *libc.TLS, strm Z_streamp, level int32, method int32, windowBits int32, memLevel int32, strategy int32, version uintptr, stream_size int32) int32 { /* deflate.c:240:13: */
  5967  	var s uintptr
  5968  	var wrap int32 = 1
  5969  	var overlay uintptr
  5970  	// We overlay pending_buf and d_buf+l_buf. This works since the average
  5971  	// output size for (length,distance) codes is <= 24 bits.
  5972  
  5973  	if ((version == uintptr(Z_NULL)) || (int32(*(*uint8)(unsafe.Pointer(version))) != int32(my_version[0]))) || (uint32(stream_size) != uint32(unsafe.Sizeof(Z_stream{}))) {
  5974  		return -6
  5975  	}
  5976  	if strm == uintptr(Z_NULL) {
  5977  		return -2
  5978  	}
  5979  
  5980  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL)
  5981  	if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) {
  5982  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct {
  5983  			f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf
  5984  		}{Xzcalloc}))
  5985  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0)
  5986  	}
  5987  	if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) {
  5988  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct {
  5989  			f func(*libc.TLS, Voidpf, Voidpf)
  5990  		}{Xzcfree}))
  5991  	}
  5992  
  5993  	if level == (-1) {
  5994  		level = 6
  5995  	}
  5996  
  5997  	if windowBits < 0 { // suppress zlib wrapper
  5998  		wrap = 0
  5999  		windowBits = -windowBits
  6000  	} else if windowBits > 15 {
  6001  		wrap = 2 // write gzip wrapper instead
  6002  		windowBits = windowBits - (16)
  6003  	}
  6004  	if (((((((((memLevel < 1) || (memLevel > MAX_MEM_LEVEL)) || (method != Z_DEFLATED)) || (windowBits < 8)) || (windowBits > 15)) || (level < 0)) || (level > 9)) || (strategy < 0)) || (strategy > Z_FIXED)) || ((windowBits == 8) && (wrap != 1)) {
  6005  		return -2
  6006  	}
  6007  	if windowBits == 8 {
  6008  		windowBits = 9
  6009  	} // until 256-byte window bug fixed
  6010  	s = (*struct {
  6011  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  6012  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Deflate_state{})))
  6013  	if s == uintptr(Z_NULL) {
  6014  		return -4
  6015  	}
  6016  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = s
  6017  	(*Deflate_state)(unsafe.Pointer(s)).Fstrm = strm
  6018  	(*Deflate_state)(unsafe.Pointer(s)).Fstatus = INIT_STATE // to pass state test in deflateReset()
  6019  
  6020  	(*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap
  6021  	(*Deflate_state)(unsafe.Pointer(s)).Fgzhead = Gz_headerp(Z_NULL)
  6022  	(*Deflate_state)(unsafe.Pointer(s)).Fw_bits = UInt(windowBits)
  6023  	(*Deflate_state)(unsafe.Pointer(s)).Fw_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fw_bits))
  6024  	(*Deflate_state)(unsafe.Pointer(s)).Fw_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - UInt(1))
  6025  
  6026  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_bits = (UInt(memLevel) + UInt(7))
  6027  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_size = (UInt(int32(1) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_bits))
  6028  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_mask = ((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1))
  6029  	(*Deflate_state)(unsafe.Pointer(s)).Fhash_shift = ((((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits + UInt(MIN_MATCH)) - UInt(1)) / UInt(MIN_MATCH))
  6030  
  6031  	(*Deflate_state)(unsafe.Pointer(s)).Fwindow = (*struct {
  6032  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  6033  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fw_size, (uint32(2) * uint32(unsafe.Sizeof(Byte(0)))))
  6034  	(*Deflate_state)(unsafe.Pointer(s)).Fprev = (*struct {
  6035  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  6036  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fw_size, uint32(unsafe.Sizeof(Pos(0))))
  6037  	(*Deflate_state)(unsafe.Pointer(s)).Fhead = (*struct {
  6038  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  6039  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Fhash_size, uint32(unsafe.Sizeof(Pos(0))))
  6040  
  6041  	(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg(0) // nothing written to s->window yet
  6042  
  6043  	(*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize = (UInt(int32(1) << (memLevel + 6))) // 16K elements by default
  6044  
  6045  	overlay = (*struct {
  6046  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  6047  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize, (uint32(unsafe.Sizeof(Ush(0))) + uint32(2)))
  6048  	(*Deflate_state)(unsafe.Pointer(s)).Fpending_buf = overlay
  6049  	(*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize) * (uint32(unsafe.Sizeof(Ush(0))) + uint32(2)))
  6050  
  6051  	if ((((*Deflate_state)(unsafe.Pointer(s)).Fwindow == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(s)).Fprev == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(s)).Fhead == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf == uintptr(Z_NULL)) {
  6052  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE
  6053  		(*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-4))]
  6054  		XdeflateEnd(tls, strm)
  6055  		return -4
  6056  	}
  6057  	(*Deflate_state)(unsafe.Pointer(s)).Fd_buf = (overlay + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize/UInt(unsafe.Sizeof(Ush(0)))))*2)
  6058  	(*Deflate_state)(unsafe.Pointer(s)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((uint32(1) + uint32(unsafe.Sizeof(Ush(0)))) * (*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize)))
  6059  
  6060  	(*Deflate_state)(unsafe.Pointer(s)).Flevel = level
  6061  	(*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy
  6062  	(*Deflate_state)(unsafe.Pointer(s)).Fmethod = Byte(method)
  6063  
  6064  	return XdeflateReset(tls, strm)
  6065  }
  6066  
  6067  var my_version = *(*[7]uint8)(unsafe.Pointer(ts /* "1.2.11" */)) /* deflate.c:253:23 */
  6068  
  6069  // =========================================================================
  6070  // Check for a valid deflate stream state. Return 0 if ok, 1 if not.
  6071  func deflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:353:11: */
  6072  	var s uintptr
  6073  	if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) {
  6074  		return 1
  6075  	}
  6076  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6077  	if ((s == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(s)).Fstrm != strm)) || (((((((((*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != GZIP_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != EXTRA_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != NAME_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != COMMENT_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != HCRC_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != BUSY_STATE)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != FINISH_STATE)) {
  6078  		return 1
  6079  	}
  6080  	return 0
  6081  }
  6082  
  6083  // =========================================================================
  6084  func XdeflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* deflate.c:376:13: */
  6085  	var s uintptr
  6086  	var str UInt
  6087  	var n UInt
  6088  	var wrap int32
  6089  	var avail uint32
  6090  	var next uintptr
  6091  
  6092  	if (deflateStateCheck(tls, strm) != 0) || (dictionary == uintptr(Z_NULL)) {
  6093  		return -2
  6094  	}
  6095  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6096  	wrap = (*Deflate_state)(unsafe.Pointer(s)).Fwrap
  6097  	if ((wrap == 2) || ((wrap == 1) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != INIT_STATE))) || ((*Deflate_state)(unsafe.Pointer(s)).Flookahead != 0) {
  6098  		return -2
  6099  	}
  6100  
  6101  	// when using zlib wrappers, compute Adler-32 for provided dictionary
  6102  	if wrap == 1 {
  6103  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, dictionary, dictLength)
  6104  	}
  6105  	(*Deflate_state)(unsafe.Pointer(s)).Fwrap = 0 // avoid computing Adler-32 in read_buf
  6106  
  6107  	// if dictionary would fill window, just replace the history
  6108  	if dictLength >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size {
  6109  		if wrap == 0 { // already empty otherwise
  6110  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  6111  			libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0)))))
  6112  
  6113  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0)
  6114  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0
  6115  			(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  6116  		}
  6117  		dictionary += (uintptr(dictLength - (*Deflate_state)(unsafe.Pointer(s)).Fw_size)) // use the tail
  6118  		dictLength = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  6119  	}
  6120  
  6121  	// insert dictionary into window and hash
  6122  	avail = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  6123  	next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
  6124  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = dictLength
  6125  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = dictionary
  6126  	fill_window(tls, s)
  6127  	for (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) {
  6128  		str = (*Deflate_state)(unsafe.Pointer(s)).Fstrstart
  6129  		n = ((*Deflate_state)(unsafe.Pointer(s)).Flookahead - (UInt(MIN_MATCH - 1)))
  6130  		for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  6131  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((str + UInt(MIN_MATCH)) - UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  6132  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr((str&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2)) = *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))
  6133  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str)
  6134  			str++
  6135  		}
  6136  		(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = str
  6137  		(*Deflate_state)(unsafe.Pointer(s)).Flookahead = (UInt(MIN_MATCH - 1))
  6138  		fill_window(tls, s)
  6139  	}
  6140  	*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Flookahead)
  6141  	(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  6142  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = (*Deflate_state)(unsafe.Pointer(s)).Flookahead
  6143  	(*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0)
  6144  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+120 /* &.prev_length */, (UInt(MIN_MATCH - 1)))
  6145  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  6146  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
  6147  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = avail
  6148  	(*Deflate_state)(unsafe.Pointer(s)).Fwrap = wrap
  6149  	return Z_OK
  6150  }
  6151  
  6152  // =========================================================================
  6153  func XdeflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* deflate.c:445:13: */
  6154  	var s uintptr
  6155  	var len UInt
  6156  
  6157  	if deflateStateCheck(tls, strm) != 0 {
  6158  		return -2
  6159  	}
  6160  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6161  	len = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead)
  6162  	if len > (*Deflate_state)(unsafe.Pointer(s)).Fw_size {
  6163  		len = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  6164  	}
  6165  	if (dictionary != uintptr(Z_NULL)) && (len != 0) {
  6166  		libc.Xmemcpy(tls, dictionary, ((((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flookahead)) - uintptr(len)), len)
  6167  	}
  6168  	if dictLength != uintptr(Z_NULL) {
  6169  		*(*UInt)(unsafe.Pointer(dictLength)) = len
  6170  	}
  6171  	return Z_OK
  6172  }
  6173  
  6174  // =========================================================================
  6175  func XdeflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:467:13: */
  6176  	var s uintptr
  6177  
  6178  	if deflateStateCheck(tls, strm) != 0 {
  6179  		return -2
  6180  	}
  6181  
  6182  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint32(strm+20 /* &.total_out */, ULong(0))
  6183  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // use zfree if we ever allocate msg dynamically
  6184  	(*Z_stream)(unsafe.Pointer(strm)).Fdata_type = Z_UNKNOWN
  6185  
  6186  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6187  	(*Deflate_state)(unsafe.Pointer(s)).Fpending = Ulg(0)
  6188  	(*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf
  6189  
  6190  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap < 0 {
  6191  		(*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap // was made negative by deflate(..., Z_FINISH);
  6192  	}
  6193  	(*Deflate_state)(unsafe.Pointer(s)).Fstatus = func() int32 {
  6194  		if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 {
  6195  			return GZIP_STATE
  6196  		}
  6197  		return func() int32 {
  6198  			if (*Deflate_state)(unsafe.Pointer(s)).Fwrap != 0 {
  6199  				return INIT_STATE
  6200  			}
  6201  			return BUSY_STATE
  6202  		}()
  6203  	}()
  6204  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = func() uint32 {
  6205  		if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 {
  6206  			return Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0))
  6207  		}
  6208  		return Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0))
  6209  	}()
  6210  	(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = Z_NO_FLUSH
  6211  
  6212  	X_tr_init(tls, s)
  6213  
  6214  	return Z_OK
  6215  }
  6216  
  6217  // =========================================================================
  6218  func XdeflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:505:13: */
  6219  	var ret int32
  6220  
  6221  	ret = XdeflateResetKeep(tls, strm)
  6222  	if ret == Z_OK {
  6223  		lm_init(tls, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
  6224  	}
  6225  	return ret
  6226  }
  6227  
  6228  // =========================================================================
  6229  func XdeflateSetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* deflate.c:517:13: */
  6230  	if (deflateStateCheck(tls, strm) != 0) || ((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap != 2) {
  6231  		return -2
  6232  	}
  6233  	(*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fgzhead = head
  6234  	return Z_OK
  6235  }
  6236  
  6237  // =========================================================================
  6238  func XdeflatePending(tls *libc.TLS, strm Z_streamp, pending uintptr, bits uintptr) int32 { /* deflate.c:528:13: */
  6239  	if deflateStateCheck(tls, strm) != 0 {
  6240  		return -2
  6241  	}
  6242  	if pending != uintptr(Z_NULL) {
  6243  		*(*uint32)(unsafe.Pointer(pending)) = uint32((*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending)
  6244  	}
  6245  	if bits != uintptr(Z_NULL) {
  6246  		*(*int32)(unsafe.Pointer(bits)) = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fbi_valid
  6247  	}
  6248  	return Z_OK
  6249  }
  6250  
  6251  // =========================================================================
  6252  func XdeflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* deflate.c:542:13: */
  6253  	var s uintptr
  6254  	var put int32
  6255  
  6256  	if deflateStateCheck(tls, strm) != 0 {
  6257  		return -2
  6258  	}
  6259  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6260  	if ((*Deflate_state)(unsafe.Pointer(s)).Fd_buf) < ((*Deflate_state)(unsafe.Pointer(s)).Fpending_out + uintptr((int32((Buf_size + 7)) >> 3))) {
  6261  		return -5
  6262  	}
  6263  	for ok := true; ok; ok = bits != 0 {
  6264  		put = (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)
  6265  		if put > bits {
  6266  			put = bits
  6267  		}
  6268  		*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((value & ((int32(1) << put) - 1)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))))
  6269  		*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (put)
  6270  		X_tr_flush_bits(tls, s)
  6271  		value >>= put
  6272  		bits = bits - (put)
  6273  	}
  6274  	return Z_OK
  6275  }
  6276  
  6277  // =========================================================================
  6278  func XdeflateParams(tls *libc.TLS, strm Z_streamp, level int32, strategy int32) int32 { /* deflate.c:568:13: */
  6279  	var s uintptr
  6280  	var func1 Compress_func
  6281  
  6282  	if deflateStateCheck(tls, strm) != 0 {
  6283  		return -2
  6284  	}
  6285  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6286  
  6287  	if level == (-1) {
  6288  		level = 6
  6289  	}
  6290  	if (((level < 0) || (level > 9)) || (strategy < 0)) || (strategy > Z_FIXED) {
  6291  		return -2
  6292  	}
  6293  	func1 = configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc
  6294  
  6295  	if ((strategy != (*Deflate_state)(unsafe.Pointer(s)).Fstrategy) || (func1 != configuration_table[level].Ffunc)) && ((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water != 0) {
  6296  		// Flush the last buffer:
  6297  		var err int32 = Xdeflate(tls, strm, Z_BLOCK)
  6298  		if err == (-2) {
  6299  			return err
  6300  		}
  6301  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  6302  			return -5
  6303  		}
  6304  	}
  6305  	if (*Deflate_state)(unsafe.Pointer(s)).Flevel != level {
  6306  		if ((*Deflate_state)(unsafe.Pointer(s)).Flevel == 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fmatches != UInt(0)) {
  6307  			if (*Deflate_state)(unsafe.Pointer(s)).Fmatches == UInt(1) {
  6308  				slide_hash(tls, s)
  6309  			} else {
  6310  				*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  6311  			}
  6312  			libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0)))))
  6313  
  6314  			(*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(0)
  6315  		}
  6316  		(*Deflate_state)(unsafe.Pointer(s)).Flevel = level
  6317  		(*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[level].Fmax_lazy)
  6318  		(*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[level].Fgood_length)
  6319  		(*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[level].Fnice_length)
  6320  		(*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[level].Fmax_chain)
  6321  	}
  6322  	(*Deflate_state)(unsafe.Pointer(s)).Fstrategy = strategy
  6323  	return Z_OK
  6324  }
  6325  
  6326  // =========================================================================
  6327  func XdeflateTune(tls *libc.TLS, strm Z_streamp, good_length int32, max_lazy int32, nice_length int32, max_chain int32) int32 { /* deflate.c:617:13: */
  6328  	var s uintptr
  6329  
  6330  	if deflateStateCheck(tls, strm) != 0 {
  6331  		return -2
  6332  	}
  6333  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6334  	(*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(good_length)
  6335  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(max_lazy)
  6336  	(*Deflate_state)(unsafe.Pointer(s)).Fnice_match = nice_length
  6337  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(max_chain)
  6338  	return Z_OK
  6339  }
  6340  
  6341  // =========================================================================
  6342  // For the default windowBits of 15 and memLevel of 8, this function returns
  6343  // a close to exact, as well as small, upper bound on the compressed size.
  6344  // They are coded as constants here for a reason--if the #define's are
  6345  // changed, then this function needs to be changed as well.  The return
  6346  // value for 15 and 8 only works for those exact settings.
  6347  //
  6348  // For any setting other than those defaults for windowBits and memLevel,
  6349  // the value returned is a conservative worst case for the maximum expansion
  6350  // resulting from using fixed blocks instead of stored blocks, which deflate
  6351  // can emit on compressed data for some combinations of the parameters.
  6352  //
  6353  // This function could be more sophisticated to provide closer upper bounds for
  6354  // every combination of windowBits and memLevel.  But even the conservative
  6355  // upper bound of about 14% expansion does not seem onerous for output buffer
  6356  // allocation.
  6357  func XdeflateBound(tls *libc.TLS, strm Z_streamp, sourceLen ULong) ULong { /* deflate.c:652:15: */
  6358  	var s uintptr
  6359  	var complen ULong
  6360  	var wraplen ULong
  6361  
  6362  	// conservative upper bound for compressed data
  6363  	complen = (((sourceLen + ((sourceLen + ULong(7)) >> 3)) + ((sourceLen + ULong(63)) >> 6)) + ULong(5))
  6364  
  6365  	// if can't get parameters, return conservative bound plus zlib wrapper
  6366  	if deflateStateCheck(tls, strm) != 0 {
  6367  		return (complen + ULong(6))
  6368  	}
  6369  
  6370  	// compute wrapper length
  6371  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6372  	switch (*Deflate_state)(unsafe.Pointer(s)).Fwrap {
  6373  	case 0: // raw deflate
  6374  		wraplen = ULong(0)
  6375  		break
  6376  	case 1: // zlib wrapper
  6377  		wraplen = (ULong(6 + (func() int32 {
  6378  			if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != 0 {
  6379  				return 4
  6380  			}
  6381  			return 0
  6382  		}())))
  6383  		break
  6384  	case 2: // gzip wrapper
  6385  		wraplen = ULong(18)
  6386  		if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead != uintptr(Z_NULL) { // user-supplied gzip header
  6387  			var str uintptr
  6388  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) {
  6389  				wraplen = wraplen + (ULong(UInt(2) + (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len))
  6390  			}
  6391  			str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname
  6392  			if str != uintptr(Z_NULL) {
  6393  				for ok := true; ok; ok = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 {
  6394  					wraplen++
  6395  				}
  6396  			}
  6397  			str = (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment
  6398  			if str != uintptr(Z_NULL) {
  6399  				for ok1 := true; ok1; ok1 = *(*Bytef)(unsafe.Pointer(libc.PostIncUintptr(&str, 1))) != 0 {
  6400  					wraplen++
  6401  				}
  6402  			}
  6403  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  6404  				wraplen = wraplen + (ULong(2))
  6405  			}
  6406  		}
  6407  		break
  6408  	default: // for compiler happiness
  6409  		wraplen = ULong(6)
  6410  	}
  6411  
  6412  	// if not default parameters, return conservative bound
  6413  	if ((*Deflate_state)(unsafe.Pointer(s)).Fw_bits != UInt(15)) || ((*Deflate_state)(unsafe.Pointer(s)).Fhash_bits != (UInt(8 + 7))) {
  6414  		return (complen + wraplen)
  6415  	}
  6416  
  6417  	// default settings: return tight bound for that case
  6418  	return ((((((sourceLen + (sourceLen >> 12)) + (sourceLen >> 14)) + (sourceLen >> 25)) + ULong(13)) - ULong(6)) + wraplen)
  6419  }
  6420  
  6421  // =========================================================================
  6422  // Put a short in the pending buffer. The 16-bit value is put in MSB order.
  6423  // IN assertion: the stream state is correct and there is enough room in
  6424  // pending_buf.
  6425  func putShortMSB(tls *libc.TLS, s uintptr, b UInt) { /* deflate.c:716:12: */
  6426  	{
  6427  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b >> 8))
  6428  	}
  6429  
  6430  	{
  6431  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(b & UInt(0xff)))
  6432  	}
  6433  
  6434  }
  6435  
  6436  // =========================================================================
  6437  // Flush as much pending output as possible. All deflate() output, except for
  6438  // some deflate_stored() output, goes through this function so some
  6439  // applications may wish to modify it to avoid allocating a large
  6440  // strm->next_out buffer and copying into it. (See also read_buf()).
  6441  func flush_pending(tls *libc.TLS, strm Z_streamp) { /* deflate.c:730:12: */
  6442  	var len uint32
  6443  	var s uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6444  
  6445  	X_tr_flush_bits(tls, s)
  6446  	len = uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending)
  6447  	if len > (*Z_stream)(unsafe.Pointer(strm)).Favail_out {
  6448  		len = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
  6449  	}
  6450  	if len == uint32(0) {
  6451  		return
  6452  	}
  6453  
  6454  	libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (*Deflate_state)(unsafe.Pointer(s)).Fpending_out, len)
  6455  	*(*uintptr)(unsafe.Pointer(strm + 12 /* &.next_out */)) += (uintptr(len))
  6456  	*(*uintptr)(unsafe.Pointer(s + 16 /* &.pending_out */)) += (uintptr(len))
  6457  	*(*ULong)(unsafe.Pointer(strm + 20 /* &.total_out */)) += (ULong(len))
  6458  	*(*UInt)(unsafe.Pointer(strm + 16 /* &.avail_out */)) -= (len)
  6459  	*(*Ulg)(unsafe.Pointer(s + 20 /* &.pending */)) -= (Ulg(len))
  6460  	if (*Deflate_state)(unsafe.Pointer(s)).Fpending == Ulg(0) {
  6461  		(*Deflate_state)(unsafe.Pointer(s)).Fpending_out = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf
  6462  	}
  6463  }
  6464  
  6465  // ===========================================================================
  6466  // Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1].
  6467  
  6468  // =========================================================================
  6469  func Xdeflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* deflate.c:763:13: */
  6470  	var old_flush int32 // value of flush param for previous deflate call
  6471  	var s uintptr
  6472  
  6473  	if ((deflateStateCheck(tls, strm) != 0) || (flush > Z_BLOCK)) || (flush < 0) {
  6474  		return -2
  6475  	}
  6476  	s = (*Z_stream)(unsafe.Pointer(strm)).Fstate
  6477  
  6478  	if (((*Z_stream)(unsafe.Pointer(strm)).Fnext_out == uintptr(Z_NULL)) || (((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) && ((*Z_stream)(unsafe.Pointer(strm)).Fnext_in == uintptr(Z_NULL)))) || (((*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE) && (flush != Z_FINISH)) {
  6479  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-2))]; return -2 }()
  6480  	}
  6481  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  6482  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }()
  6483  	}
  6484  
  6485  	old_flush = (*Deflate_state)(unsafe.Pointer(s)).Flast_flush
  6486  	(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = flush
  6487  
  6488  	// Flush as much pending output as possible
  6489  	if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6490  		flush_pending(tls, strm)
  6491  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  6492  			// Since avail_out is 0, deflate will be called again with
  6493  			// more output space, but possibly with both pending and
  6494  			// avail_in equal to zero. There won't be anything to do,
  6495  			// but this is not an error situation so make sure we
  6496  			// return OK instead of BUF_ERROR at next call of deflate:
  6497  			(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6498  			return Z_OK
  6499  		}
  6500  
  6501  		// Make sure there is something to do and avoid duplicate consecutive
  6502  		// flushes. For repeated and useless calls with Z_FINISH, we keep
  6503  		// returning Z_STREAM_END instead of Z_BUF_ERROR.
  6504  	} else if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((((flush) * 2) - (func() int32 {
  6505  		if (flush) > 4 {
  6506  			return 9
  6507  		}
  6508  		return 0
  6509  	}())) <= (((old_flush) * 2) - (func() int32 {
  6510  		if (old_flush) > 4 {
  6511  			return 9
  6512  		}
  6513  		return 0
  6514  	}())))) && (flush != Z_FINISH) {
  6515  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }()
  6516  	}
  6517  
  6518  	// User must not provide more input after the first FINISH:
  6519  	if ((*Deflate_state)(unsafe.Pointer(s)).Fstatus == FINISH_STATE) && ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) {
  6520  		return func() int32 { (*Z_stream)(unsafe.Pointer(strm)).Fmsg = Xz_errmsg[(Z_NEED_DICT - (-5))]; return -5 }()
  6521  	}
  6522  
  6523  	// Write the header
  6524  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == INIT_STATE {
  6525  		// zlib header
  6526  		var header UInt = ((UInt(Z_DEFLATED) + (((*Deflate_state)(unsafe.Pointer(s)).Fw_bits - UInt(8)) << 4)) << 8)
  6527  		var level_flags UInt
  6528  
  6529  		if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) {
  6530  			level_flags = UInt(0)
  6531  		} else if (*Deflate_state)(unsafe.Pointer(s)).Flevel < 6 {
  6532  			level_flags = UInt(1)
  6533  		} else if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 6 {
  6534  			level_flags = UInt(2)
  6535  		} else {
  6536  			level_flags = UInt(3)
  6537  		}
  6538  		header = header | (level_flags << 6)
  6539  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) {
  6540  			header = header | (UInt(PRESET_DICT))
  6541  		}
  6542  		header = header + (UInt(31) - (header % UInt(31)))
  6543  
  6544  		putShortMSB(tls, s, header)
  6545  
  6546  		// Save the adler32 of the preset dictionary:
  6547  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart != UInt(0) {
  6548  			putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16)))
  6549  			putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xffff))))
  6550  		}
  6551  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0))
  6552  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE
  6553  
  6554  		// Compression must start with an empty pending buffer
  6555  		flush_pending(tls, strm)
  6556  		if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6557  			(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6558  			return Z_OK
  6559  		}
  6560  	}
  6561  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == GZIP_STATE {
  6562  		// gzip header
  6563  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0))
  6564  		{
  6565  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(31)
  6566  		}
  6567  
  6568  		{
  6569  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(139)
  6570  		}
  6571  
  6572  		{
  6573  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(8)
  6574  		}
  6575  
  6576  		if (*Deflate_state)(unsafe.Pointer(s)).Fgzhead == uintptr(Z_NULL) {
  6577  			{
  6578  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  6579  			}
  6580  
  6581  			{
  6582  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  6583  			}
  6584  
  6585  			{
  6586  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  6587  			}
  6588  
  6589  			{
  6590  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  6591  			}
  6592  
  6593  			{
  6594  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(0)
  6595  			}
  6596  
  6597  			{
  6598  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 {
  6599  					if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 {
  6600  						return uint8(2)
  6601  					}
  6602  					return func() uint8 {
  6603  						if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) {
  6604  							return uint8(4)
  6605  						}
  6606  						return uint8(0)
  6607  					}()
  6608  				}()
  6609  			}
  6610  
  6611  			{
  6612  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(OS_CODE)
  6613  			}
  6614  
  6615  			(*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE
  6616  
  6617  			// Compression must start with an empty pending buffer
  6618  			flush_pending(tls, strm)
  6619  			if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6620  				(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6621  				return Z_OK
  6622  			}
  6623  		} else {
  6624  			{
  6625  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((((func() int32 {
  6626  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftext != 0 {
  6627  						return 1
  6628  					}
  6629  					return 0
  6630  				}()) + (func() int32 {
  6631  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  6632  						return 2
  6633  					}
  6634  					return 0
  6635  				}())) + (func() int32 {
  6636  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra == uintptr(Z_NULL) {
  6637  						return 0
  6638  					}
  6639  					return 4
  6640  				}())) + (func() int32 {
  6641  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname == uintptr(Z_NULL) {
  6642  						return 0
  6643  					}
  6644  					return 8
  6645  				}())) + (func() int32 {
  6646  					if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment == uintptr(Z_NULL) {
  6647  						return 0
  6648  					}
  6649  					return 16
  6650  				}())))
  6651  			}
  6652  
  6653  			{
  6654  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime & ULong(0xff)))
  6655  			}
  6656  
  6657  			{
  6658  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 8) & ULong(0xff)))
  6659  			}
  6660  
  6661  			{
  6662  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 16) & ULong(0xff)))
  6663  			}
  6664  
  6665  			{
  6666  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Ftime >> 24) & ULong(0xff)))
  6667  			}
  6668  
  6669  			{
  6670  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = func() uint8 {
  6671  					if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 9 {
  6672  						return uint8(2)
  6673  					}
  6674  					return func() uint8 {
  6675  						if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy >= Z_HUFFMAN_ONLY) || ((*Deflate_state)(unsafe.Pointer(s)).Flevel < 2) {
  6676  							return uint8(4)
  6677  						}
  6678  						return uint8(0)
  6679  					}()
  6680  				}()
  6681  			}
  6682  
  6683  			{
  6684  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fos & 0xff))
  6685  			}
  6686  
  6687  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) {
  6688  				{
  6689  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xff)))
  6690  				}
  6691  
  6692  				{
  6693  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Bytef(((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len >> 8) & UInt(0xff)))
  6694  				}
  6695  
  6696  			}
  6697  			if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  6698  				(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf,
  6699  					uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending))
  6700  			}
  6701  			(*Deflate_state)(unsafe.Pointer(s)).Fgzindex = Ulg(0)
  6702  			(*Deflate_state)(unsafe.Pointer(s)).Fstatus = EXTRA_STATE
  6703  		}
  6704  	}
  6705  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == EXTRA_STATE {
  6706  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra != uintptr(Z_NULL) {
  6707  			var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc
  6708  			var left UInt = (UInt((Ulg((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra_len & UInt(0xffff))) - (*Deflate_state)(unsafe.Pointer(s)).Fgzindex))
  6709  			for ((*Deflate_state)(unsafe.Pointer(s)).Fpending + Ulg(left)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  6710  				var copy UInt = (UInt((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fpending))
  6711  				libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)),
  6712  					((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), copy)
  6713  				(*Deflate_state)(unsafe.Pointer(s)).Fpending = (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size
  6714  				for ok := true; ok; ok = 0 != 0 {
  6715  					if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  6716  						(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  6717  					}
  6718  				}
  6719  				*(*Ulg)(unsafe.Pointer(s + 32 /* &.gzindex */)) += (Ulg(copy))
  6720  				flush_pending(tls, strm)
  6721  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6722  					(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6723  					return Z_OK
  6724  				}
  6725  				beg = Ulg(0)
  6726  				left = left - (copy)
  6727  			}
  6728  			libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)),
  6729  				((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fextra + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fgzindex)), left)
  6730  			*(*Ulg)(unsafe.Pointer(s + 20 /* &.pending */)) += (Ulg(left))
  6731  			for ok1 := true; ok1; ok1 = 0 != 0 {
  6732  				if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  6733  					(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  6734  				}
  6735  			}
  6736  			(*Deflate_state)(unsafe.Pointer(s)).Fgzindex = Ulg(0)
  6737  		}
  6738  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = NAME_STATE
  6739  	}
  6740  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == NAME_STATE {
  6741  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname != uintptr(Z_NULL) {
  6742  			var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc
  6743  			var val int32
  6744  			for ok2 := true; ok2; ok2 = (val != 0) {
  6745  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  6746  					for ok3 := true; ok3; ok3 = 0 != 0 {
  6747  						if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  6748  							(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  6749  						}
  6750  					}
  6751  					flush_pending(tls, strm)
  6752  					if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6753  						(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6754  						return Z_OK
  6755  					}
  6756  					beg = Ulg(0)
  6757  				}
  6758  				val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fname + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1)))))
  6759  				{
  6760  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val)
  6761  				}
  6762  
  6763  			}
  6764  			for ok4 := true; ok4; ok4 = 0 != 0 {
  6765  				if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  6766  					(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  6767  				}
  6768  			}
  6769  			(*Deflate_state)(unsafe.Pointer(s)).Fgzindex = Ulg(0)
  6770  		}
  6771  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = COMMENT_STATE
  6772  	}
  6773  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == COMMENT_STATE {
  6774  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment != uintptr(Z_NULL) {
  6775  			var beg Ulg = (*Deflate_state)(unsafe.Pointer(s)).Fpending // start of bytes to update crc
  6776  			var val int32
  6777  			for ok5 := true; ok5; ok5 = (val != 0) {
  6778  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending == (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  6779  					for ok6 := true; ok6; ok6 = 0 != 0 {
  6780  						if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  6781  							(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  6782  						}
  6783  					}
  6784  					flush_pending(tls, strm)
  6785  					if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6786  						(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6787  						return Z_OK
  6788  					}
  6789  					beg = Ulg(0)
  6790  				}
  6791  				val = int32(*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fcomment + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fgzindex, 1)))))
  6792  				{
  6793  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Bytef(val)
  6794  				}
  6795  
  6796  			}
  6797  			for ok7 := true; ok7; ok7 = 0 != 0 {
  6798  				if ((*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0) && ((*Deflate_state)(unsafe.Pointer(s)).Fpending > (beg)) {
  6799  					(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((beg))), (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending - (beg))))
  6800  				}
  6801  			}
  6802  		}
  6803  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = HCRC_STATE
  6804  	}
  6805  	if (*Deflate_state)(unsafe.Pointer(s)).Fstatus == HCRC_STATE {
  6806  		if (*Gz_header)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fgzhead)).Fhcrc != 0 {
  6807  			if ((*Deflate_state)(unsafe.Pointer(s)).Fpending + Ulg(2)) > (*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size {
  6808  				flush_pending(tls, strm)
  6809  				if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6810  					(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6811  					return Z_OK
  6812  				}
  6813  			}
  6814  			{
  6815  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xff)))
  6816  			}
  6817  
  6818  			{
  6819  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & ULong(0xff)))
  6820  			}
  6821  
  6822  			(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0))
  6823  		}
  6824  		(*Deflate_state)(unsafe.Pointer(s)).Fstatus = BUSY_STATE
  6825  
  6826  		// Compression must start with an empty pending buffer
  6827  		flush_pending(tls, strm)
  6828  		if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6829  			(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1
  6830  			return Z_OK
  6831  		}
  6832  	}
  6833  
  6834  	// Start a new block or continue the current one.
  6835  	if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)) || ((*Deflate_state)(unsafe.Pointer(s)).Flookahead != UInt(0))) || ((flush != Z_NO_FLUSH) && ((*Deflate_state)(unsafe.Pointer(s)).Fstatus != FINISH_STATE)) {
  6836  		var bstate Block_state
  6837  
  6838  		if (*Deflate_state)(unsafe.Pointer(s)).Flevel == 0 {
  6839  			bstate = deflate_stored(tls, s, flush)
  6840  		} else {
  6841  			if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_HUFFMAN_ONLY {
  6842  				bstate = deflate_huff(tls, s, flush)
  6843  			} else {
  6844  				if (*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_RLE {
  6845  					bstate = deflate_rle(tls, s, flush)
  6846  				} else {
  6847  					bstate = (*struct {
  6848  						f func(*libc.TLS, uintptr, int32) Block_state
  6849  					})(unsafe.Pointer(&struct{ uintptr }{configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Ffunc})).f(tls, s, flush)
  6850  				}
  6851  			}
  6852  		}
  6853  
  6854  		if (bstate == Finish_started) || (bstate == Finish_done) {
  6855  			(*Deflate_state)(unsafe.Pointer(s)).Fstatus = FINISH_STATE
  6856  		}
  6857  		if (bstate == Need_more) || (bstate == Finish_started) {
  6858  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  6859  				(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR next call, see above
  6860  			}
  6861  			return Z_OK
  6862  			// If flush != Z_NO_FLUSH && avail_out == 0, the next call
  6863  			// of deflate should use the same flush parameter to make sure
  6864  			// that the flush is complete. So we don't have to output an
  6865  			// empty block here, this will be done at next call. This also
  6866  			// ensures that for a very small output buffer, we emit at most
  6867  			// one empty block.
  6868  		}
  6869  		if bstate == Block_done {
  6870  			if flush == Z_PARTIAL_FLUSH {
  6871  				X_tr_align(tls, s)
  6872  			} else if flush != Z_BLOCK { // FULL_FLUSH or SYNC_FLUSH
  6873  				X_tr_stored_block(tls, s, uintptr(0), uint32(0), 0)
  6874  				// For a full flush, this empty block will be recognized
  6875  				// as a special marker by inflate_sync().
  6876  				if flush == Z_FULL_FLUSH {
  6877  					*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  6878  					libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0)))))
  6879  					// forget history
  6880  					if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  6881  						(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0)
  6882  						(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0
  6883  						(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  6884  					}
  6885  				}
  6886  			}
  6887  			flush_pending(tls, strm)
  6888  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  6889  				(*Deflate_state)(unsafe.Pointer(s)).Flast_flush = -1 // avoid BUF_ERROR at next call, see above
  6890  				return Z_OK
  6891  			}
  6892  		}
  6893  	}
  6894  
  6895  	if flush != Z_FINISH {
  6896  		return Z_OK
  6897  	}
  6898  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap <= 0 {
  6899  		return Z_STREAM_END
  6900  	}
  6901  
  6902  	// Write the trailer
  6903  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap == 2 {
  6904  		{
  6905  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xff)))
  6906  		}
  6907  
  6908  		{
  6909  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 8) & ULong(0xff)))
  6910  		}
  6911  
  6912  		{
  6913  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16) & ULong(0xff)))
  6914  		}
  6915  
  6916  		{
  6917  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 24) & ULong(0xff)))
  6918  		}
  6919  
  6920  		{
  6921  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in & ULong(0xff)))
  6922  		}
  6923  
  6924  		{
  6925  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 8) & ULong(0xff)))
  6926  		}
  6927  
  6928  		{
  6929  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 16) & ULong(0xff)))
  6930  		}
  6931  
  6932  		{
  6933  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Byte(((*Z_stream)(unsafe.Pointer(strm)).Ftotal_in >> 24) & ULong(0xff)))
  6934  		}
  6935  
  6936  	} else {
  6937  		putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler >> 16)))
  6938  		putShortMSB(tls, s, (UInt((*Z_stream)(unsafe.Pointer(strm)).Fadler & ULong(0xffff))))
  6939  	}
  6940  	flush_pending(tls, strm)
  6941  	// If avail_out is zero, the application will call deflate again
  6942  	// to flush the rest.
  6943  	if (*Deflate_state)(unsafe.Pointer(s)).Fwrap > 0 {
  6944  		(*Deflate_state)(unsafe.Pointer(s)).Fwrap = -(*Deflate_state)(unsafe.Pointer(s)).Fwrap
  6945  	} // write the trailer only once!
  6946  	if (*Deflate_state)(unsafe.Pointer(s)).Fpending != Ulg(0) {
  6947  		return Z_OK
  6948  	}
  6949  	return Z_STREAM_END
  6950  }
  6951  
  6952  // =========================================================================
  6953  func XdeflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* deflate.c:1076:13: */
  6954  	var status int32
  6955  
  6956  	if deflateStateCheck(tls, strm) != 0 {
  6957  		return -2
  6958  	}
  6959  
  6960  	status = (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fstatus
  6961  
  6962  	/* Deallocate in reverse order of allocations: */
  6963  	{
  6964  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf != 0 {
  6965  			(*struct {
  6966  				f func(*libc.TLS, Voidpf, Voidpf)
  6967  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fpending_buf)
  6968  		}
  6969  	}
  6970  
  6971  	{
  6972  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead != 0 {
  6973  			(*struct {
  6974  				f func(*libc.TLS, Voidpf, Voidpf)
  6975  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fhead)
  6976  		}
  6977  	}
  6978  
  6979  	{
  6980  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev != 0 {
  6981  			(*struct {
  6982  				f func(*libc.TLS, Voidpf, Voidpf)
  6983  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fprev)
  6984  		}
  6985  	}
  6986  
  6987  	{
  6988  		if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow != 0 {
  6989  			(*struct {
  6990  				f func(*libc.TLS, Voidpf, Voidpf)
  6991  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwindow)
  6992  		}
  6993  	}
  6994  
  6995  	(*struct {
  6996  		f func(*libc.TLS, Voidpf, Voidpf)
  6997  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
  6998  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
  6999  
  7000  	if status == BUSY_STATE {
  7001  		return -3
  7002  	}
  7003  	return Z_OK
  7004  }
  7005  
  7006  // =========================================================================
  7007  // Copy the source state to the destination state.
  7008  // To simplify the source, this is not supported for 16-bit MSDOS (which
  7009  // doesn't have enough memory anyway to duplicate compression states).
  7010  func XdeflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* deflate.c:1102:13: */
  7011  	var ds uintptr
  7012  	var ss uintptr
  7013  	var overlay uintptr
  7014  
  7015  	if (deflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) {
  7016  		return -2
  7017  	}
  7018  
  7019  	ss = (*Z_stream)(unsafe.Pointer(source)).Fstate
  7020  
  7021  	libc.Xmemcpy(tls, dest, source, uint32(unsafe.Sizeof(Z_stream{})))
  7022  
  7023  	ds = (*struct {
  7024  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  7025  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Deflate_state{})))
  7026  	if ds == uintptr(Z_NULL) {
  7027  		return -4
  7028  	}
  7029  	(*Z_stream)(unsafe.Pointer(dest)).Fstate = ds
  7030  	libc.Xmemcpy(tls, ds, ss, uint32(unsafe.Sizeof(Deflate_state{})))
  7031  	(*Deflate_state)(unsafe.Pointer(ds)).Fstrm = dest
  7032  
  7033  	(*Deflate_state)(unsafe.Pointer(ds)).Fwindow = (*struct {
  7034  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  7035  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fw_size, (uint32(2) * uint32(unsafe.Sizeof(Byte(0)))))
  7036  	(*Deflate_state)(unsafe.Pointer(ds)).Fprev = (*struct {
  7037  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  7038  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fw_size, uint32(unsafe.Sizeof(Pos(0))))
  7039  	(*Deflate_state)(unsafe.Pointer(ds)).Fhead = (*struct {
  7040  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  7041  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Fhash_size, uint32(unsafe.Sizeof(Pos(0))))
  7042  	overlay = (*struct {
  7043  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
  7044  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((dest))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(dest)).Fopaque, (*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize, (uint32(unsafe.Sizeof(Ush(0))) + uint32(2)))
  7045  	(*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf = overlay
  7046  
  7047  	if ((((*Deflate_state)(unsafe.Pointer(ds)).Fwindow == uintptr(Z_NULL)) || ((*Deflate_state)(unsafe.Pointer(ds)).Fprev == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(ds)).Fhead == uintptr(Z_NULL))) || ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf == uintptr(Z_NULL)) {
  7048  		XdeflateEnd(tls, dest)
  7049  		return -4
  7050  	}
  7051  	// following zmemcpy do not work for 16-bit MSDOS
  7052  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fwindow, (*Deflate_state)(unsafe.Pointer(ss)).Fwindow, (((*Deflate_state)(unsafe.Pointer(ds)).Fw_size * UInt(2)) * UInt(unsafe.Sizeof(Byte(0)))))
  7053  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fprev, (*Deflate_state)(unsafe.Pointer(ss)).Fprev, ((*Deflate_state)(unsafe.Pointer(ds)).Fw_size * UInt(unsafe.Sizeof(Pos(0)))))
  7054  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fhead, (*Deflate_state)(unsafe.Pointer(ss)).Fhead, ((*Deflate_state)(unsafe.Pointer(ds)).Fhash_size * UInt(unsafe.Sizeof(Pos(0)))))
  7055  	libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf, (*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf, UInt((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf_size))
  7056  
  7057  	(*Deflate_state)(unsafe.Pointer(ds)).Fpending_out = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((int32((*Deflate_state)(unsafe.Pointer(ss)).Fpending_out) - int32((*Deflate_state)(unsafe.Pointer(ss)).Fpending_buf)) / 1)))
  7058  	(*Deflate_state)(unsafe.Pointer(ds)).Fd_buf = (overlay + uintptr(((*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize/UInt(unsafe.Sizeof(Ush(0)))))*2)
  7059  	(*Deflate_state)(unsafe.Pointer(ds)).Fl_buf = ((*Deflate_state)(unsafe.Pointer(ds)).Fpending_buf + uintptr(((uint32(1) + uint32(unsafe.Sizeof(Ush(0)))) * (*Deflate_state)(unsafe.Pointer(ds)).Flit_bufsize)))
  7060  
  7061  	(*Deflate_state)(unsafe.Pointer(ds)).Fl_desc.Fdyn_tree = ds + 148   /* &.dyn_ltree */
  7062  	(*Deflate_state)(unsafe.Pointer(ds)).Fd_desc.Fdyn_tree = ds + 2440  /* &.dyn_dtree */
  7063  	(*Deflate_state)(unsafe.Pointer(ds)).Fbl_desc.Fdyn_tree = ds + 2684 /* &.bl_tree */
  7064  
  7065  	return Z_OK
  7066  }
  7067  
  7068  // ===========================================================================
  7069  // Read a new buffer from the current input stream, update the adler32
  7070  // and total number of bytes read.  All deflate() input goes through
  7071  // this function so some applications may wish to modify it to avoid
  7072  // allocating a large strm->next_in buffer and copying from it.
  7073  // (See also flush_pending()).
  7074  func read_buf(tls *libc.TLS, strm Z_streamp, buf uintptr, size uint32) uint32 { /* deflate.c:1164:16: */
  7075  	var len uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  7076  
  7077  	if len > size {
  7078  		len = size
  7079  	}
  7080  	if len == uint32(0) {
  7081  		return uint32(0)
  7082  	}
  7083  
  7084  	*(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) -= (len)
  7085  
  7086  	libc.Xmemcpy(tls, buf, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, len)
  7087  	if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 1 {
  7088  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xadler32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len)
  7089  	} else if (*Internal_state)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fstate)).Fwrap == 2 {
  7090  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = Xcrc32(tls, (*Z_stream)(unsafe.Pointer(strm)).Fadler, buf, len)
  7091  	}
  7092  	*(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len))
  7093  	*(*ULong)(unsafe.Pointer(strm + 8 /* &.total_in */)) += (ULong(len))
  7094  
  7095  	return len
  7096  }
  7097  
  7098  // ===========================================================================
  7099  // Initialize the "longest match" routines for a new zlib stream
  7100  func lm_init(tls *libc.TLS, s uintptr) { /* deflate.c:1194:12: */
  7101  	(*Deflate_state)(unsafe.Pointer(s)).Fwindow_size = (Ulg(2) * Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size))
  7102  
  7103  	*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fhash_size-UInt(1)))*2)) = Posf(NIL)
  7104  	libc.Xmemset(tls, (*Deflate_state)(unsafe.Pointer(s)).Fhead, 0, (((*Deflate_state)(unsafe.Pointer(s)).Fhash_size - UInt(1)) * uint32(unsafe.Sizeof(Posf(0)))))
  7105  
  7106  	// Set the default configuration parameters:
  7107  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_lazy)
  7108  	(*Deflate_state)(unsafe.Pointer(s)).Fgood_match = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fgood_length)
  7109  	(*Deflate_state)(unsafe.Pointer(s)).Fnice_match = int32(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fnice_length)
  7110  	(*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length = UInt(configuration_table[(*Deflate_state)(unsafe.Pointer(s)).Flevel].Fmax_chain)
  7111  
  7112  	(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = UInt(0)
  7113  	(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = 0
  7114  	(*Deflate_state)(unsafe.Pointer(s)).Flookahead = UInt(0)
  7115  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  7116  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = libc.AssignPtrUint32(s+120 /* &.prev_length */, (UInt(MIN_MATCH - 1)))
  7117  	(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  7118  	(*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(0)
  7119  }
  7120  
  7121  // ===========================================================================
  7122  // Set match_start to the longest match starting at the given string and
  7123  // return its length. Matches shorter or equal to prev_length are discarded,
  7124  // in which case the result is equal to prev_length and match_start is
  7125  // garbage.
  7126  // IN assertions: cur_match is the head of the hash chain for the current
  7127  //   string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
  7128  // OUT assertion: the match length is not greater than s->lookahead.
  7129  // For 80x86 and 680x0, an optimized version will be provided in match.asm or
  7130  // match.S. The code will be functionally equivalent.
  7131  func longest_match(tls *libc.TLS, s uintptr, cur_match IPos) UInt { /* deflate.c:1236:12: */
  7132  	var chain_length uint32 = (*Deflate_state)(unsafe.Pointer(s)).Fmax_chain_length                                           // max hash chain length
  7133  	var scan uintptr = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) // current string
  7134  	var match uintptr                                                                                                         // matched string
  7135  	var len int32                                                                                                             // length of current match
  7136  	var best_len int32 = int32((*Deflate_state)(unsafe.Pointer(s)).Fprev_length)                                              // best match length so far
  7137  	var nice_match int32 = (*Deflate_state)(unsafe.Pointer(s)).Fnice_match                                                    // stop if match long enough
  7138  	var limit IPos
  7139  	if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart > ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1))) {
  7140  		limit = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1))))
  7141  	} else {
  7142  		limit = uint32(NIL)
  7143  	}
  7144  	// Stop when cur_match becomes <= limit. To simplify the code,
  7145  	// we prevent matches with the string of window index 0.
  7146  	var prev uintptr = (*Deflate_state)(unsafe.Pointer(s)).Fprev
  7147  	var wmask UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_mask
  7148  
  7149  	var strend uintptr = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH))
  7150  	var scan_end1 Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1))))
  7151  	var scan_end Byte = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len)))
  7152  
  7153  	// The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16.
  7154  	// It is easy to get rid of this optimization if necessary.
  7155  
  7156  	// Do not waste too much time if we already have a good match:
  7157  	if (*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= (*Deflate_state)(unsafe.Pointer(s)).Fgood_match {
  7158  		chain_length >>= 2
  7159  	}
  7160  	// Do not look for matches beyond the end of the input. This is necessary
  7161  	// to make deflate deterministic.
  7162  	if UInt(nice_match) > (*Deflate_state)(unsafe.Pointer(s)).Flookahead {
  7163  		nice_match = int32((*Deflate_state)(unsafe.Pointer(s)).Flookahead)
  7164  	}
  7165  
  7166  	for ok := true; ok; ok = (((libc.AssignUint32(&cur_match, IPos(*(*Posf)(unsafe.Pointer(prev + uintptr((cur_match&wmask))*2))))) > limit) &&
  7167  		(libc.PreDecUint32(&chain_length, 1) != uint32(0))) {
  7168  
  7169  		match = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(cur_match))
  7170  
  7171  		// Skip to next match if the match length cannot increase
  7172  		// or if the match length is less than 2.  Note that the checks below
  7173  		// for insufficient lookahead only occur occasionally for performance
  7174  		// reasons.  Therefore uninitialized memory will be accessed, and
  7175  		// conditional jumps will be made that depend on those values.
  7176  		// However the length of the match is limited to the lookahead, so
  7177  		// the output of deflate is not affected by the uninitialized values.
  7178  
  7179  		if (((int32(*(*Bytef)(unsafe.Pointer(match + uintptr(best_len)))) != int32(scan_end)) || (int32(*(*Bytef)(unsafe.Pointer(match + uintptr((best_len - 1))))) != int32(scan_end1))) || (int32(*(*Bytef)(unsafe.Pointer(match))) != int32(*(*Bytef)(unsafe.Pointer(scan))))) || (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))) != int32(*(*Bytef)(unsafe.Pointer(scan + 1)))) {
  7180  			continue
  7181  		}
  7182  
  7183  		// The check at best_len-1 can be removed because it will be made
  7184  		// again later. (This heuristic is not always a win.)
  7185  		// It is not necessary to compare scan[2] and match[2] since they
  7186  		// are always equal when the other bytes match, given that
  7187  		// the hash keys are equal and that HASH_BITS >= 8.
  7188  		scan += uintptr(2)
  7189  		match++
  7190  
  7191  		// We check for insufficient lookahead only every 8th comparison;
  7192  		// the 256th check will be made at strstart+258.
  7193  		for ok1 := true; ok1; ok1 = (((((((((int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))) == int32(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&match, 1)))))) && (scan < strend)) {
  7194  		}
  7195  
  7196  		len = (MAX_MATCH - ((int32(strend) - int32(scan)) / 1))
  7197  		scan = (strend - uintptr(MAX_MATCH))
  7198  
  7199  		if len > best_len {
  7200  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_start = cur_match
  7201  			best_len = len
  7202  			if len >= nice_match {
  7203  				break
  7204  			}
  7205  			scan_end1 = *(*Bytef)(unsafe.Pointer(scan + uintptr((best_len - 1))))
  7206  			scan_end = *(*Bytef)(unsafe.Pointer(scan + uintptr(best_len)))
  7207  		}
  7208  	}
  7209  
  7210  	if UInt(best_len) <= (*Deflate_state)(unsafe.Pointer(s)).Flookahead {
  7211  		return UInt(best_len)
  7212  	}
  7213  	return (*Deflate_state)(unsafe.Pointer(s)).Flookahead
  7214  }
  7215  
  7216  // ===========================================================================
  7217  // Fill the window when the lookahead becomes insufficient.
  7218  // Updates strstart and lookahead.
  7219  //
  7220  // IN assertion: lookahead < MIN_LOOKAHEAD
  7221  // OUT assertions: strstart <= window_size-MIN_LOOKAHEAD
  7222  //    At least one byte has been read, or avail_in == 0; reads are
  7223  //    performed for at least two bytes (required for the zip translate_eol
  7224  //    option -- not supported here).
  7225  func fill_window(tls *libc.TLS, s uintptr) { /* deflate.c:1482:12: */
  7226  	var n uint32
  7227  	var more uint32 // Amount of free space at the end of the window.
  7228  	var wsize UInt = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  7229  
  7230  	for ok := true; ok; ok = (((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in != UInt(0))) {
  7231  		more = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead)) - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  7232  
  7233  		// Deal with !@#$% 64K limit:
  7234  		if uint32(unsafe.Sizeof(int32(0))) <= uint32(2) {
  7235  			if ((more == uint32(0)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart == UInt(0))) && ((*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0)) {
  7236  				more = wsize
  7237  
  7238  			} else if more == libc.Uint32(libc.Uint32FromInt32(-1)) {
  7239  				// Very unlikely, but possible on 16 bit machine if
  7240  				// strstart == 0 && lookahead == 1 (input done a byte at time)
  7241  				more--
  7242  			}
  7243  		}
  7244  
  7245  		// If the window is almost full and there is insufficient lookahead,
  7246  		// move the upper half to the lower one to make room in the upper half.
  7247  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart >= (wsize + ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) {
  7248  
  7249  			libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(wsize)), (wsize - more))
  7250  			*(*UInt)(unsafe.Pointer(s + 112 /* &.match_start */)) -= (wsize)
  7251  			*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) -= (wsize) // we now have strstart >= MAX_DIST
  7252  			*(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) -= (int32(wsize))
  7253  			slide_hash(tls, s)
  7254  			more = more + (wsize)
  7255  		}
  7256  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0) {
  7257  			break
  7258  		}
  7259  
  7260  		// If there was no sliding:
  7261  		//    strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 &&
  7262  		//    more == window_size - lookahead - strstart
  7263  		// => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1)
  7264  		// => more >= window_size - 2*WSIZE + 2
  7265  		// In the BIG_MEM or MMAP case (not yet supported),
  7266  		//   window_size == input_size + MIN_LOOKAHEAD  &&
  7267  		//   strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD.
  7268  		// Otherwise, window_size == 2*WSIZE so more >= 2.
  7269  		// If there was sliding, more >= WSIZE. So in all cases, more >= 2.
  7270  
  7271  		n = read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flookahead)), more)
  7272  		*(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) += (n)
  7273  
  7274  		// Initialize the hash value now that we have some input:
  7275  		if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) >= UInt(MIN_MATCH) {
  7276  			var str UInt = ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Finsert)
  7277  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(str))))
  7278  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((str + UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  7279  			for (*Deflate_state)(unsafe.Pointer(s)).Finsert != 0 {
  7280  				(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((str + UInt(MIN_MATCH)) - UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  7281  				*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fprev + uintptr((str&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2)) = *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))
  7282  				*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos(str)
  7283  				str++
  7284  				(*Deflate_state)(unsafe.Pointer(s)).Finsert--
  7285  				if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead + (*Deflate_state)(unsafe.Pointer(s)).Finsert) < UInt(MIN_MATCH) {
  7286  					break
  7287  				}
  7288  			}
  7289  		}
  7290  		// If the whole input has less than MIN_MATCH bytes, ins_h is garbage,
  7291  		// but this is not important since only literal bytes will be emitted.
  7292  
  7293  	}
  7294  
  7295  	// If the WIN_INIT bytes after the end of the current data have never been
  7296  	// written, then zero those bytes in order to avoid memory check reports of
  7297  	// the use of uninitialized (or uninitialised as Julian writes) bytes by
  7298  	// the longest match routines.  Update the high water mark for the next
  7299  	// time through here.  WIN_INIT is set to MAX_MATCH since the longest match
  7300  	// routines allow scanning to strstart + MAX_MATCH, ignoring lookahead.
  7301  	if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (*Deflate_state)(unsafe.Pointer(s)).Fwindow_size {
  7302  		var curr Ulg = (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (Ulg((*Deflate_state)(unsafe.Pointer(s)).Flookahead)))
  7303  		var init1 Ulg
  7304  
  7305  		if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < curr {
  7306  			// Previous high water mark below current data -- zero WIN_INIT
  7307  			// bytes or up to end of window, whichever is less.
  7308  			init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - curr)
  7309  			if init1 > Ulg(MAX_MATCH) {
  7310  				init1 = Ulg(MAX_MATCH)
  7311  			}
  7312  			libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(curr)), 0, uint32(init1))
  7313  			(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = (curr + init1)
  7314  		} else if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < (curr + Ulg(MAX_MATCH)) {
  7315  			// High water mark at or above current data, but below current data
  7316  			// plus WIN_INIT -- zero out to current data plus WIN_INIT, or up
  7317  			// to end of window, whichever is less.
  7318  			init1 = ((curr + Ulg(MAX_MATCH)) - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)
  7319  			if init1 > ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water) {
  7320  				init1 = ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)
  7321  			}
  7322  			libc.Xmemset(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fhigh_water)), 0, uint32(init1))
  7323  			*(*Ulg)(unsafe.Pointer(s + 5824 /* &.high_water */)) += (init1)
  7324  		}
  7325  	}
  7326  
  7327  }
  7328  
  7329  // ===========================================================================
  7330  // Flush the current block, with given end-of-file flag.
  7331  // IN assertion: strstart is set to the end of the current match.
  7332  
  7333  // Same but force premature exit if necessary.
  7334  
  7335  // Maximum stored block length in deflate format (not including header).
  7336  
  7337  // Minimum of a and b.
  7338  
  7339  // ===========================================================================
  7340  // Copy without compression as much as possible from the input stream, return
  7341  // the current block state.
  7342  //
  7343  // In case deflateParams() is used to later switch to a non-zero compression
  7344  // level, s->matches (otherwise unused when storing) keeps track of the number
  7345  // of hash table slides to perform. If s->matches is 1, then one hash table
  7346  // slide will be done when switching. If s->matches is 2, the maximum value
  7347  // allowed here, then the hash table will be cleared, since two or more slides
  7348  // is the same as a clear.
  7349  //
  7350  // deflate_stored() is written to minimize the number of times an input byte is
  7351  // copied. It is most efficient with large input and output buffers, which
  7352  // maximizes the opportunites to have a single copy from next_in to next_out.
  7353  func deflate_stored(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1643:19: */
  7354  	// Smallest worthy block size when not flushing or finishing. By default
  7355  	// this is 32K. This can be as small as 507 bytes for memLevel == 1. For
  7356  	// large input and output buffers, the stored block size will be larger.
  7357  	var min_block uint32 = func() uint32 {
  7358  		if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(5)) > (Ulg((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) {
  7359  			return (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  7360  		}
  7361  		return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(5)))
  7362  	}()
  7363  
  7364  	// Copy as many min_block or larger stored blocks directly to next_out as
  7365  	// possible. If flushing, copy the remaining available input to next_out as
  7366  	// stored blocks, if there is enough space.
  7367  	var len uint32
  7368  	var left uint32
  7369  	var have uint32
  7370  	var last uint32 = uint32(0)
  7371  	var used uint32 = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in
  7372  	for ok := true; ok; ok = (last == uint32(0)) {
  7373  		// Set len to the maximum size block that we can copy directly with the
  7374  		// available input data and output space. Set left to how much of that
  7375  		// would be copied from what's left in the window.
  7376  		len = uint32(MAX_STORED)                                                                      // maximum deflate stored block length
  7377  		have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3))                    // number of header bytes
  7378  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out < have { // need room for header
  7379  			break
  7380  		}
  7381  		// maximum stored block length that will fit in avail_out:
  7382  		have = ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out - have)
  7383  		left = (uint32(uint32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start))) // bytes left in window
  7384  		if Ulg(len) > (Ulg(left) + Ulg((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) {
  7385  			len = (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)
  7386  		} // limit len to the input
  7387  		if len > have {
  7388  			len = have
  7389  		} // limit len to the output
  7390  
  7391  		// If the stored block would be less than min_block in length, or if
  7392  		// unable to copy all of the available input when flushing, then try
  7393  		// copying to the window and the pending buffer instead. Also don't
  7394  		// write an empty block when flushing -- deflate() does that.
  7395  		if (len < min_block) && ((((len == uint32(0)) && (flush != Z_FINISH)) || (flush == Z_NO_FLUSH)) || (len != (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in))) {
  7396  			break
  7397  		}
  7398  
  7399  		// Make a dummy stored block in pending to get the header bytes,
  7400  		// including any pending bits. This also updates the debugging counts.
  7401  		if (flush == Z_FINISH) && (len == (left + (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in)) {
  7402  			last = uint32(1)
  7403  		} else {
  7404  			last = uint32(0)
  7405  		}
  7406  		X_tr_stored_block(tls, s, uintptr(0), uint32(0), int32(last))
  7407  
  7408  		// Replace the lengths in the dummy stored block with len.
  7409  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(4))))) = Bytef(len)
  7410  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(3))))) = (Bytef(len >> 8))
  7411  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(2))))) = Bytef(^len)
  7412  		*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fpending - Ulg(1))))) = (Bytef(^len >> 8))
  7413  
  7414  		// Write the stored block header bytes.
  7415  		flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7416  
  7417  		// Copy uncompressed bytes from the window to next_out.
  7418  		if left != 0 {
  7419  			if left > len {
  7420  				left = len
  7421  			}
  7422  			libc.Xmemcpy(tls, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), left)
  7423  			*(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 12 /* &.next_out */)) += (uintptr(left))
  7424  			*(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 16 /* &.avail_out */)) -= (left)
  7425  			*(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 20 /* &.total_out */)) += (ULong(left))
  7426  			*(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) += int32((uint32(left)))
  7427  			len = len - (left)
  7428  		}
  7429  
  7430  		// Copy uncompressed bytes directly from next_in to next_out, updating
  7431  		// the check value.
  7432  		if len != 0 {
  7433  			read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_out, len)
  7434  			*(*uintptr)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 12 /* &.next_out */)) += (uintptr(len))
  7435  			*(*UInt)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 16 /* &.avail_out */)) -= (len)
  7436  			*(*ULong)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm + 20 /* &.total_out */)) += (ULong(len))
  7437  		}
  7438  	}
  7439  
  7440  	// Update the sliding window with the last s->w_size bytes of the copied
  7441  	// data, or append all of the copied data to the existing window if less
  7442  	// than s->w_size bytes were copied. Also update the number of bytes to
  7443  	// insert in the hash tables, in the event that deflateParams() switches to
  7444  	// a non-zero compression level.
  7445  	used = used - ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in) // number of input bytes directly copied
  7446  	if used != 0 {
  7447  		// If any input was used, then no unused input remains in the window,
  7448  		// therefore s->block_start == s->strstart.
  7449  		if used >= (*Deflate_state)(unsafe.Pointer(s)).Fw_size { // supplant the previous history
  7450  			(*Deflate_state)(unsafe.Pointer(s)).Fmatches = UInt(2) // clear hash
  7451  			libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in - uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), (*Deflate_state)(unsafe.Pointer(s)).Fw_size)
  7452  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart = (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  7453  		} else {
  7454  			if ((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) <= Ulg(used) {
  7455  				// Slide the window down.
  7456  				*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size)
  7457  				libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), (*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7458  				if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) {
  7459  					(*Deflate_state)(unsafe.Pointer(s)).Fmatches++
  7460  				} // add a pending slide_hash()
  7461  			}
  7462  			libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)), ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fnext_in - uintptr(used)), used)
  7463  			*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += (used)
  7464  		}
  7465  		(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7466  		*(*UInt)(unsafe.Pointer(s + 5812 /* &.insert */)) += (func() uint32 {
  7467  			if (used) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert) {
  7468  				return ((*Deflate_state)(unsafe.Pointer(s)).Fw_size - (*Deflate_state)(unsafe.Pointer(s)).Finsert)
  7469  			}
  7470  			return used
  7471  		}())
  7472  	}
  7473  	if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) {
  7474  		(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7475  	}
  7476  
  7477  	// If the last block was written to next_out, then done.
  7478  	if last != 0 {
  7479  		return Finish_done
  7480  	}
  7481  
  7482  	// If flushing and all input has been consumed, then done.
  7483  	if (((flush != Z_NO_FLUSH) && (flush != Z_FINISH)) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) == (*Deflate_state)(unsafe.Pointer(s)).Fblock_start) {
  7484  		return Block_done
  7485  	}
  7486  
  7487  	// Fill the window with any remaining input.
  7488  	have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fwindow_size - Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - Ulg(1)))
  7489  	if ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in > have) && ((*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= int32((*Deflate_state)(unsafe.Pointer(s)).Fw_size)) {
  7490  		// Slide the window down.
  7491  		*(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) -= int32((uint32((*Deflate_state)(unsafe.Pointer(s)).Fw_size)))
  7492  		*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fw_size)
  7493  		libc.Xmemcpy(tls, (*Deflate_state)(unsafe.Pointer(s)).Fwindow, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fw_size)), (*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7494  		if (*Deflate_state)(unsafe.Pointer(s)).Fmatches < UInt(2) {
  7495  			(*Deflate_state)(unsafe.Pointer(s)).Fmatches++
  7496  		} // add a pending slide_hash()
  7497  		have = have + ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) // more space now
  7498  	}
  7499  	if have > (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in {
  7500  		have = (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in
  7501  	}
  7502  	if have != 0 {
  7503  		read_buf(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)), have)
  7504  		*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += (have)
  7505  	}
  7506  	if (*Deflate_state)(unsafe.Pointer(s)).Fhigh_water < Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) {
  7507  		(*Deflate_state)(unsafe.Pointer(s)).Fhigh_water = Ulg((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7508  	}
  7509  
  7510  	// There was not enough avail_out to write a complete worthy or flushed
  7511  	// stored block to next_out. Write a stored block to pending instead, if we
  7512  	// have enough input for a worthy block, or if flushing and there is enough
  7513  	// room for the remaining input as a stored block in the pending buffer.
  7514  	have = (uint32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_valid + 42) >> 3)) // number of header bytes
  7515  	// maximum stored block length that will fit in pending:
  7516  	have = func() uint32 {
  7517  		if ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have)) > (Ulg(MAX_STORED)) {
  7518  			return uint32(MAX_STORED)
  7519  		}
  7520  		return (uint32((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf_size - Ulg(have)))
  7521  	}()
  7522  	min_block = func() uint32 {
  7523  		if (have) > ((*Deflate_state)(unsafe.Pointer(s)).Fw_size) {
  7524  			return (*Deflate_state)(unsafe.Pointer(s)).Fw_size
  7525  		}
  7526  		return have
  7527  	}()
  7528  	left = (uint32(uint32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7529  	if (left >= min_block) || (((((left != 0) || (flush == Z_FINISH)) && (flush != Z_NO_FLUSH)) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (left <= have)) {
  7530  		len = func() uint32 {
  7531  			if (left) > (have) {
  7532  				return have
  7533  			}
  7534  			return left
  7535  		}()
  7536  		if ((flush == Z_FINISH) && ((*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_in == UInt(0))) && (len == left) {
  7537  			last = uint32(1)
  7538  		} else {
  7539  			last = uint32(0)
  7540  		}
  7541  		X_tr_stored_block(tls, s, ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), uint32(len), int32(last))
  7542  		*(*int32)(unsafe.Pointer(s + 92 /* &.block_start */)) += int32((uint32(len)))
  7543  		flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7544  	}
  7545  
  7546  	// We've done all we can with the available input and output.
  7547  	if last != 0 {
  7548  		return Finish_started
  7549  	}
  7550  	return Need_more
  7551  }
  7552  
  7553  // ===========================================================================
  7554  // Compress as much as possible from the input stream, return the current
  7555  // block state.
  7556  // This function does not perform lazy evaluation of matches and inserts
  7557  // new strings in the dictionary only for unmatched strings or for short
  7558  // matches. It is used only for the fast compression options.
  7559  func deflate_fast(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1824:19: */
  7560  	var hash_head IPos // head of the hash chain
  7561  	var bflush int32   // set if current block must be flushed
  7562  
  7563  	for {
  7564  		// Make sure that we always have enough lookahead, except
  7565  		// at the end of the input file. We need MAX_MATCH bytes
  7566  		// for the next match, plus MIN_MATCH bytes to insert the
  7567  		// string following the next match.
  7568  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) {
  7569  			fill_window(tls, s)
  7570  			if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) {
  7571  				return Need_more
  7572  			}
  7573  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  7574  				break
  7575  			} // flush the current block
  7576  		}
  7577  
  7578  		// Insert the string window[strstart .. strstart+2] in the
  7579  		// dictionary, and set hash_head to the head of the hash chain:
  7580  		hash_head = IPos(NIL)
  7581  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) {
  7582  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  7583  			hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  7584  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7585  		}
  7586  
  7587  		// Find the longest match, discarding those <= prev_length.
  7588  		// At this point we have always match_length < MIN_MATCH
  7589  		if (hash_head != IPos(NIL)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - hash_head) <= ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) {
  7590  			// To simplify the code, we prevent matches with the string
  7591  			// of window index 0 (in particular we have to avoid a match
  7592  			// of the string with itself at the start of the input file).
  7593  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head)
  7594  			// longest_match() sets match_start
  7595  		}
  7596  		if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) {
  7597  
  7598  			{
  7599  				var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH)))
  7600  				var dist Ush = (Ush((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start))
  7601  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist
  7602  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len
  7603  				dist--
  7604  				*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++
  7605  				*(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 {
  7606  					if (int32(dist)) < 256 {
  7607  						return int32(X_dist_code[dist])
  7608  					}
  7609  					return int32(X_dist_code[(256 + ((int32(dist)) >> 7))])
  7610  				}()))*4 /* &.fc */))++
  7611  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  7612  			}
  7613  
  7614  			*(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  7615  
  7616  			// Insert new strings in the hash table only if the match length
  7617  			// is not too large. This saves time but degrades compression.
  7618  			if ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match) && ((*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH)) {
  7619  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length-- // string at strstart already in table
  7620  				for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length, 1) != UInt(0)) {
  7621  					(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  7622  					(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  7623  					hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  7624  					*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7625  					// strstart never exceeds WSIZE-MAX_MATCH, so there are
  7626  					// always MIN_MATCH bytes ahead.
  7627  				}
  7628  				(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  7629  			} else {
  7630  				*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  7631  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  7632  				(*Deflate_state)(unsafe.Pointer(s)).Fins_h = UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart))))
  7633  				(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + UInt(1)))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  7634  				// If lookahead < MIN_MATCH, ins_h is garbage, but it does not
  7635  				// matter since it will be recomputed at next deflate call.
  7636  			}
  7637  		} else {
  7638  			// No match, output a literal byte
  7639  
  7640  			{
  7641  				var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  7642  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  7643  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  7644  				*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  7645  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  7646  			}
  7647  
  7648  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  7649  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  7650  		}
  7651  		if bflush != 0 {
  7652  			{
  7653  				X_tr_flush_block(tls, s, func() uintptr {
  7654  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  7655  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7656  					}
  7657  					return uintptr(Z_NULL)
  7658  				}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  7659  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7660  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7661  			}
  7662  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  7663  				if 0 != 0 {
  7664  					return Finish_started
  7665  				}
  7666  				return Need_more
  7667  			}
  7668  		}
  7669  
  7670  	}
  7671  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 {
  7672  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) {
  7673  			return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart
  7674  		}
  7675  		return (uint32(MIN_MATCH - 1))
  7676  	}()
  7677  	if flush == Z_FINISH {
  7678  		{
  7679  			{
  7680  				X_tr_flush_block(tls, s, func() uintptr {
  7681  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  7682  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7683  					}
  7684  					return uintptr(Z_NULL)
  7685  				}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  7686  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7687  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7688  			}
  7689  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  7690  				if 1 != 0 {
  7691  					return Finish_started
  7692  				}
  7693  				return Need_more
  7694  			}
  7695  		}
  7696  
  7697  		return Finish_done
  7698  	}
  7699  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  7700  		{
  7701  			X_tr_flush_block(tls, s, func() uintptr {
  7702  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  7703  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7704  				}
  7705  				return uintptr(Z_NULL)
  7706  			}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  7707  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7708  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7709  		}
  7710  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  7711  			if 0 != 0 {
  7712  				return Finish_started
  7713  			}
  7714  			return Need_more
  7715  		}
  7716  	}
  7717  
  7718  	return Block_done
  7719  }
  7720  
  7721  // ===========================================================================
  7722  // Same as above, but achieves better compression. We use a lazy
  7723  // evaluation for matches: a match is finally adopted only if there is
  7724  // no better match at the next window position.
  7725  func deflate_slow(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:1926:19: */
  7726  	var hash_head IPos // head of hash chain
  7727  	var bflush int32   // set if current block must be flushed
  7728  
  7729  	// Process the input block.
  7730  	for {
  7731  		// Make sure that we always have enough lookahead, except
  7732  		// at the end of the input file. We need MAX_MATCH bytes
  7733  		// for the next match, plus MIN_MATCH bytes to insert the
  7734  		// string following the next match.
  7735  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1)) {
  7736  			fill_window(tls, s)
  7737  			if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead < (UInt((MAX_MATCH + MIN_MATCH) + 1))) && (flush == Z_NO_FLUSH) {
  7738  				return Need_more
  7739  			}
  7740  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  7741  				break
  7742  			} // flush the current block
  7743  		}
  7744  
  7745  		// Insert the string window[strstart .. strstart+2] in the
  7746  		// dictionary, and set hash_head to the head of the hash chain:
  7747  		hash_head = IPos(NIL)
  7748  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH) {
  7749  			(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  7750  			hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  7751  			*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7752  		}
  7753  
  7754  		// Find the longest match, discarding those <= prev_length.
  7755  		(*Deflate_state)(unsafe.Pointer(s)).Fprev_length = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length
  7756  		(*Deflate_state)(unsafe.Pointer(s)).Fprev_match = (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start
  7757  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1))
  7758  
  7759  		if ((hash_head != IPos(NIL)) && ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length < (*Deflate_state)(unsafe.Pointer(s)).Fmax_lazy_match)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - hash_head) <= ((*Deflate_state)(unsafe.Pointer((s))).Fw_size - (UInt((MAX_MATCH + MIN_MATCH) + 1)))) {
  7760  			// To simplify the code, we prevent matches with the string
  7761  			// of window index 0 (in particular we have to avoid a match
  7762  			// of the string with itself at the start of the input file).
  7763  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = longest_match(tls, s, hash_head)
  7764  			// longest_match() sets match_start
  7765  
  7766  			if ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= UInt(5)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FILTERED) ||
  7767  				(((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length == UInt(MIN_MATCH)) && (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - (*Deflate_state)(unsafe.Pointer(s)).Fmatch_start) > UInt(TOO_FAR)))) {
  7768  
  7769  				// If prev_match is also MIN_MATCH, match_start is garbage
  7770  				// but we will ignore the current match anyway.
  7771  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1))
  7772  			}
  7773  		}
  7774  		// If there was a match at the previous step and the current
  7775  		// match is not better, output the previous match:
  7776  		if ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length >= UInt(MIN_MATCH)) && ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length <= (*Deflate_state)(unsafe.Pointer(s)).Fprev_length) {
  7777  			var max_insert UInt = (((*Deflate_state)(unsafe.Pointer(s)).Fstrstart + (*Deflate_state)(unsafe.Pointer(s)).Flookahead) - UInt(MIN_MATCH))
  7778  			// Do not insert strings in hash table beyond this.
  7779  
  7780  			{
  7781  				var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(MIN_MATCH)))
  7782  				var dist Ush = (Ush(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)) - (*Deflate_state)(unsafe.Pointer(s)).Fprev_match))
  7783  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist
  7784  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len
  7785  				dist--
  7786  				*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++
  7787  				*(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 {
  7788  					if (int32(dist)) < 256 {
  7789  						return int32(X_dist_code[dist])
  7790  					}
  7791  					return int32(X_dist_code[(256 + ((int32(dist)) >> 7))])
  7792  				}()))*4 /* &.fc */))++
  7793  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  7794  			}
  7795  
  7796  			// Insert in hash table all strings up to the end of the match.
  7797  			// strstart-1 and strstart are already inserted. If there is not
  7798  			// enough lookahead, the last two strings are not inserted in
  7799  			// the hash table.
  7800  			*(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fprev_length - UInt(1))
  7801  			*(*UInt)(unsafe.Pointer(s + 120 /* &.prev_length */)) -= (UInt(2))
  7802  			for ok := true; ok; ok = (libc.PreDecUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fprev_length, 1) != UInt(0)) {
  7803  				if libc.PreIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fstrstart, 1) <= max_insert {
  7804  					(*Deflate_state)(unsafe.Pointer(s)).Fins_h = (((((*Deflate_state)(unsafe.Pointer(s)).Fins_h) << (*Deflate_state)(unsafe.Pointer(s)).Fhash_shift) ^ (UInt(*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) + (UInt(MIN_MATCH - 1))))))))) & (*Deflate_state)(unsafe.Pointer(s)).Fhash_mask)
  7805  					hash_head = IPos(libc.AssignPtrUint16((*Deflate_state)(unsafe.Pointer(s)).Fprev+uintptr((((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)&(*Deflate_state)(unsafe.Pointer(s)).Fw_mask))*2, *(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2))))
  7806  					*(*Posf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fhead + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fins_h)*2)) = Pos((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7807  				}
  7808  			}
  7809  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  7810  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MIN_MATCH - 1))
  7811  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  7812  
  7813  			if bflush != 0 {
  7814  				{
  7815  					X_tr_flush_block(tls, s, func() uintptr {
  7816  						if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  7817  							return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7818  						}
  7819  						return uintptr(Z_NULL)
  7820  					}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  7821  					(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7822  					flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7823  				}
  7824  				if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  7825  					if 0 != 0 {
  7826  						return Finish_started
  7827  					}
  7828  					return Need_more
  7829  				}
  7830  			}
  7831  
  7832  		} else if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 {
  7833  			// If there was no match at the previous position, output a
  7834  			// single literal. If there was a match but the current match
  7835  			// is longer, truncate the previous match to a single literal.
  7836  
  7837  			{
  7838  				var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)))))
  7839  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  7840  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  7841  				*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  7842  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  7843  			}
  7844  
  7845  			if bflush != 0 {
  7846  				{
  7847  					X_tr_flush_block(tls, s, func() uintptr {
  7848  						if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  7849  							return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7850  						}
  7851  						return uintptr(Z_NULL)
  7852  					}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  7853  					(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7854  					flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7855  				}
  7856  
  7857  			}
  7858  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  7859  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  7860  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  7861  				return Need_more
  7862  			}
  7863  		} else {
  7864  			// There is no previous match to compare with, wait for
  7865  			// the next step to decide.
  7866  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 1
  7867  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  7868  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  7869  		}
  7870  	}
  7871  
  7872  	if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_available != 0 {
  7873  
  7874  		{
  7875  			var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(((*Deflate_state)(unsafe.Pointer(s)).Fstrstart - UInt(1)))))
  7876  			*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  7877  			*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  7878  			*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  7879  			bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  7880  		}
  7881  
  7882  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_available = 0
  7883  	}
  7884  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = func() uint32 {
  7885  		if (*Deflate_state)(unsafe.Pointer(s)).Fstrstart < (UInt(MIN_MATCH - 1)) {
  7886  			return (*Deflate_state)(unsafe.Pointer(s)).Fstrstart
  7887  		}
  7888  		return (uint32(MIN_MATCH - 1))
  7889  	}()
  7890  	if flush == Z_FINISH {
  7891  		{
  7892  			{
  7893  				X_tr_flush_block(tls, s, func() uintptr {
  7894  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  7895  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7896  					}
  7897  					return uintptr(Z_NULL)
  7898  				}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  7899  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7900  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7901  			}
  7902  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  7903  				if 1 != 0 {
  7904  					return Finish_started
  7905  				}
  7906  				return Need_more
  7907  			}
  7908  		}
  7909  
  7910  		return Finish_done
  7911  	}
  7912  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  7913  		{
  7914  			X_tr_flush_block(tls, s, func() uintptr {
  7915  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  7916  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  7917  				}
  7918  				return uintptr(Z_NULL)
  7919  			}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  7920  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  7921  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  7922  		}
  7923  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  7924  			if 0 != 0 {
  7925  				return Finish_started
  7926  			}
  7927  			return Need_more
  7928  		}
  7929  	}
  7930  
  7931  	return Block_done
  7932  }
  7933  
  7934  // ===========================================================================
  7935  // For Z_RLE, simply look for runs of bytes, generate matches only of distance
  7936  // one.  Do not maintain a hash table.  (It will be regenerated if this run of
  7937  // deflate switches away from Z_RLE.)
  7938  func deflate_rle(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2057:19: */
  7939  	var bflush int32 // set if current block must be flushed
  7940  	var prev UInt    // byte at distance one to match
  7941  	var scan uintptr
  7942  	var strend uintptr // scan goes up to strend for length of run
  7943  
  7944  	for {
  7945  		// Make sure that we always have enough lookahead, except
  7946  		// at the end of the input file. We need MAX_MATCH bytes
  7947  		// for the longest run, plus one for the unrolled loop.
  7948  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH) {
  7949  			fill_window(tls, s)
  7950  			if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead <= UInt(MAX_MATCH)) && (flush == Z_NO_FLUSH) {
  7951  				return Need_more
  7952  			}
  7953  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  7954  				break
  7955  			} // flush the current block
  7956  		}
  7957  
  7958  		// See how many times the previous byte repeats
  7959  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  7960  		if ((*Deflate_state)(unsafe.Pointer(s)).Flookahead >= UInt(MIN_MATCH)) && ((*Deflate_state)(unsafe.Pointer(s)).Fstrstart > UInt(0)) {
  7961  			scan = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) - uintptr(1))
  7962  			prev = UInt(*(*Bytef)(unsafe.Pointer(scan)))
  7963  			if ((prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) {
  7964  				strend = (((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)) + uintptr(MAX_MATCH))
  7965  				for ok := true; ok; ok = (((((((((prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (prev == UInt(*(*Bytef)(unsafe.Pointer(libc.PreIncUintptr(&scan, 1)))))) && (scan < strend)) {
  7966  				}
  7967  				(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (UInt(MAX_MATCH) - (UInt((int32(strend) - int32(scan)) / 1)))
  7968  				if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length > (*Deflate_state)(unsafe.Pointer(s)).Flookahead {
  7969  					(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = (*Deflate_state)(unsafe.Pointer(s)).Flookahead
  7970  				}
  7971  			}
  7972  
  7973  		}
  7974  
  7975  		// Emit match if have run of MIN_MATCH or longer, else emit literal
  7976  		if (*Deflate_state)(unsafe.Pointer(s)).Fmatch_length >= UInt(MIN_MATCH) {
  7977  
  7978  			{
  7979  				var len Uch = (Uch((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length - UInt(MIN_MATCH)))
  7980  				var dist Ush = Ush(1)
  7981  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = dist
  7982  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = len
  7983  				dist--
  7984  				*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[len])+LITERALS)+1))*4 /* &.fc */))++
  7985  				*(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 {
  7986  					if (int32(dist)) < 256 {
  7987  						return int32(X_dist_code[dist])
  7988  					}
  7989  					return int32(X_dist_code[(256 + ((int32(dist)) >> 7))])
  7990  				}()))*4 /* &.fc */))++
  7991  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  7992  			}
  7993  
  7994  			*(*UInt)(unsafe.Pointer(s + 116 /* &.lookahead */)) -= ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  7995  			*(*UInt)(unsafe.Pointer(s + 108 /* &.strstart */)) += ((*Deflate_state)(unsafe.Pointer(s)).Fmatch_length)
  7996  			(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  7997  		} else {
  7998  			// No match, output a literal byte
  7999  
  8000  			{
  8001  				var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  8002  				*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  8003  				*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  8004  				*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  8005  				bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  8006  			}
  8007  
  8008  			(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  8009  			(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  8010  		}
  8011  		if bflush != 0 {
  8012  			{
  8013  				X_tr_flush_block(tls, s, func() uintptr {
  8014  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  8015  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  8016  					}
  8017  					return uintptr(Z_NULL)
  8018  				}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  8019  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  8020  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  8021  			}
  8022  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  8023  				if 0 != 0 {
  8024  					return Finish_started
  8025  				}
  8026  				return Need_more
  8027  			}
  8028  		}
  8029  
  8030  	}
  8031  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  8032  	if flush == Z_FINISH {
  8033  		{
  8034  			{
  8035  				X_tr_flush_block(tls, s, func() uintptr {
  8036  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  8037  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  8038  					}
  8039  					return uintptr(Z_NULL)
  8040  				}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  8041  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  8042  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  8043  			}
  8044  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  8045  				if 1 != 0 {
  8046  					return Finish_started
  8047  				}
  8048  				return Need_more
  8049  			}
  8050  		}
  8051  
  8052  		return Finish_done
  8053  	}
  8054  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  8055  		{
  8056  			X_tr_flush_block(tls, s, func() uintptr {
  8057  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  8058  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  8059  				}
  8060  				return uintptr(Z_NULL)
  8061  			}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  8062  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  8063  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  8064  		}
  8065  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  8066  			if 0 != 0 {
  8067  				return Finish_started
  8068  			}
  8069  			return Need_more
  8070  		}
  8071  	}
  8072  
  8073  	return Block_done
  8074  }
  8075  
  8076  // ===========================================================================
  8077  // For Z_HUFFMAN_ONLY, do not look for matches.  Do not maintain a hash table.
  8078  // (It will be regenerated if this run of deflate switches away from Huffman.)
  8079  func deflate_huff(tls *libc.TLS, s uintptr, flush int32) Block_state { /* deflate.c:2130:19: */
  8080  	var bflush int32 // set if current block must be flushed
  8081  
  8082  	for {
  8083  		// Make sure that we have a literal to write.
  8084  		if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  8085  			fill_window(tls, s)
  8086  			if (*Deflate_state)(unsafe.Pointer(s)).Flookahead == UInt(0) {
  8087  				if flush == Z_NO_FLUSH {
  8088  					return Need_more
  8089  				}
  8090  				break // flush the current block
  8091  			}
  8092  		}
  8093  
  8094  		// Output a literal byte
  8095  		(*Deflate_state)(unsafe.Pointer(s)).Fmatch_length = UInt(0)
  8096  
  8097  		{
  8098  			var cc Uch = *(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)))
  8099  			*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ushf(0)
  8100  			*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = cc
  8101  			*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(cc)*4 /* &.fc */))++
  8102  			bflush = (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
  8103  		}
  8104  
  8105  		(*Deflate_state)(unsafe.Pointer(s)).Flookahead--
  8106  		(*Deflate_state)(unsafe.Pointer(s)).Fstrstart++
  8107  		if bflush != 0 {
  8108  			{
  8109  				X_tr_flush_block(tls, s, func() uintptr {
  8110  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  8111  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  8112  					}
  8113  					return uintptr(Z_NULL)
  8114  				}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  8115  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  8116  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  8117  			}
  8118  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  8119  				if 0 != 0 {
  8120  					return Finish_started
  8121  				}
  8122  				return Need_more
  8123  			}
  8124  		}
  8125  
  8126  	}
  8127  	(*Deflate_state)(unsafe.Pointer(s)).Finsert = UInt(0)
  8128  	if flush == Z_FINISH {
  8129  		{
  8130  			{
  8131  				X_tr_flush_block(tls, s, func() uintptr {
  8132  					if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  8133  						return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  8134  					}
  8135  					return uintptr(Z_NULL)
  8136  				}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 1)
  8137  				(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  8138  				flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  8139  			}
  8140  			if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  8141  				if 1 != 0 {
  8142  					return Finish_started
  8143  				}
  8144  				return Need_more
  8145  			}
  8146  		}
  8147  
  8148  		return Finish_done
  8149  	}
  8150  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != 0 {
  8151  		{
  8152  			X_tr_flush_block(tls, s, func() uintptr {
  8153  				if (*Deflate_state)(unsafe.Pointer(s)).Fblock_start >= 0 {
  8154  					return ((*Deflate_state)(unsafe.Pointer(s)).Fwindow + uintptr(uint32((*Deflate_state)(unsafe.Pointer(s)).Fblock_start)))
  8155  				}
  8156  				return uintptr(Z_NULL)
  8157  			}(), (Ulg(int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart) - (*Deflate_state)(unsafe.Pointer(s)).Fblock_start)), 0)
  8158  			(*Deflate_state)(unsafe.Pointer(s)).Fblock_start = int32((*Deflate_state)(unsafe.Pointer(s)).Fstrstart)
  8159  			flush_pending(tls, (*Deflate_state)(unsafe.Pointer(s)).Fstrm)
  8160  		}
  8161  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Favail_out == UInt(0) {
  8162  			if 0 != 0 {
  8163  				return Finish_started
  8164  			}
  8165  			return Need_more
  8166  		}
  8167  	}
  8168  
  8169  	return Block_done
  8170  }
  8171  
  8172  // bits/types.h -- definitions of __*_t types underlying *_t types.
  8173  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  8174  //    This file is part of the GNU C Library.
  8175  //
  8176  //    The GNU C Library is free software; you can redistribute it and/or
  8177  //    modify it under the terms of the GNU Lesser General Public
  8178  //    License as published by the Free Software Foundation; either
  8179  //    version 2.1 of the License, or (at your option) any later version.
  8180  //
  8181  //    The GNU C Library is distributed in the hope that it will be useful,
  8182  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8183  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  8184  //    Lesser General Public License for more details.
  8185  //
  8186  //    You should have received a copy of the GNU Lesser General Public
  8187  //    License along with the GNU C Library; if not, see
  8188  //    <https://www.gnu.org/licenses/>.
  8189  
  8190  // Never include this file directly; use <sys/types.h> instead.
  8191  
  8192  // Integral type unchanged by default argument promotions that can
  8193  //    hold any value corresponding to members of the extended character
  8194  //    set, as well as at least one value that does not correspond to any
  8195  //    member of the extended character set.
  8196  
  8197  // Conversion state information.
  8198  type X__mbstate_t = struct {
  8199  	F__count int32
  8200  	F__value struct{ F__wch uint32 }
  8201  } /* __mbstate_t.h:21:3 */
  8202  
  8203  // The tag name of this struct is _G_fpos_t to preserve historic
  8204  //    C++ mangled names for functions taking fpos_t arguments.
  8205  //    That name should not be used in new code.
  8206  type X_G_fpos_t = struct {
  8207  	F__pos   X__off_t
  8208  	F__state X__mbstate_t
  8209  } /* __fpos_t.h:10:9 */
  8210  
  8211  // The tag name of this struct is _G_fpos_t to preserve historic
  8212  //    C++ mangled names for functions taking fpos_t arguments.
  8213  //    That name should not be used in new code.
  8214  type X__fpos_t = X_G_fpos_t /* __fpos_t.h:14:3 */
  8215  
  8216  // bits/types.h -- definitions of __*_t types underlying *_t types.
  8217  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  8218  //    This file is part of the GNU C Library.
  8219  //
  8220  //    The GNU C Library is free software; you can redistribute it and/or
  8221  //    modify it under the terms of the GNU Lesser General Public
  8222  //    License as published by the Free Software Foundation; either
  8223  //    version 2.1 of the License, or (at your option) any later version.
  8224  //
  8225  //    The GNU C Library is distributed in the hope that it will be useful,
  8226  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8227  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  8228  //    Lesser General Public License for more details.
  8229  //
  8230  //    You should have received a copy of the GNU Lesser General Public
  8231  //    License along with the GNU C Library; if not, see
  8232  //    <https://www.gnu.org/licenses/>.
  8233  
  8234  // Never include this file directly; use <sys/types.h> instead.
  8235  
  8236  // The tag name of this struct is _G_fpos64_t to preserve historic
  8237  //    C++ mangled names for functions taking fpos_t and/or fpos64_t
  8238  //    arguments.  That name should not be used in new code.
  8239  type X_G_fpos64_t = struct {
  8240  	F__pos   X__off64_t
  8241  	F__state X__mbstate_t
  8242  } /* __fpos64_t.h:10:9 */
  8243  
  8244  // bits/types.h -- definitions of __*_t types underlying *_t types.
  8245  //    Copyright (C) 2002-2020 Free Software Foundation, Inc.
  8246  //    This file is part of the GNU C Library.
  8247  //
  8248  //    The GNU C Library is free software; you can redistribute it and/or
  8249  //    modify it under the terms of the GNU Lesser General Public
  8250  //    License as published by the Free Software Foundation; either
  8251  //    version 2.1 of the License, or (at your option) any later version.
  8252  //
  8253  //    The GNU C Library is distributed in the hope that it will be useful,
  8254  //    but WITHOUT ANY WARRANTY; without even the implied warranty of
  8255  //    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  8256  //    Lesser General Public License for more details.
  8257  //
  8258  //    You should have received a copy of the GNU Lesser General Public
  8259  //    License along with the GNU C Library; if not, see
  8260  //    <https://www.gnu.org/licenses/>.
  8261  
  8262  // Never include this file directly; use <sys/types.h> instead.
  8263  
  8264  // The tag name of this struct is _G_fpos64_t to preserve historic
  8265  //    C++ mangled names for functions taking fpos_t and/or fpos64_t
  8266  //    arguments.  That name should not be used in new code.
  8267  type X__fpos64_t = X_G_fpos64_t /* __fpos64_t.h:14:3 */
  8268  
  8269  type X_IO_FILE = struct {
  8270  	F_flags          int32
  8271  	F_IO_read_ptr    uintptr
  8272  	F_IO_read_end    uintptr
  8273  	F_IO_read_base   uintptr
  8274  	F_IO_write_base  uintptr
  8275  	F_IO_write_ptr   uintptr
  8276  	F_IO_write_end   uintptr
  8277  	F_IO_buf_base    uintptr
  8278  	F_IO_buf_end     uintptr
  8279  	F_IO_save_base   uintptr
  8280  	F_IO_backup_base uintptr
  8281  	F_IO_save_end    uintptr
  8282  	F_markers        uintptr
  8283  	F_chain          uintptr
  8284  	F_fileno         int32
  8285  	F_flags2         int32
  8286  	F_old_offset     X__off_t
  8287  	F_cur_column     uint16
  8288  	F_vtable_offset  int8
  8289  	F_shortbuf       [1]uint8
  8290  	F_lock           uintptr
  8291  	F__ccgo_pad1     [4]byte
  8292  	F_offset         X__off64_t
  8293  	F_codecvt        uintptr
  8294  	F_wide_data      uintptr
  8295  	F_freeres_list   uintptr
  8296  	F_freeres_buf    uintptr
  8297  	F__pad5          Size_t
  8298  	F_mode           int32
  8299  	F_unused2        [40]uint8
  8300  } /* __FILE.h:4:1 */
  8301  
  8302  type X__FILE = X_IO_FILE /* __FILE.h:5:25 */
  8303  
  8304  // The opaque type of streams.  This is the definition used elsewhere.
  8305  type FILE = X_IO_FILE /* FILE.h:7:25 */
  8306  
  8307  type Off_t1 = X__off_t /* stdio.h:63:17 */
  8308  
  8309  // The type of the second argument to `fgetpos' and `fsetpos'.
  8310  type Fpos_t = X__fpos_t     /* stdio.h:84:18 */
  8311  type Fpos64_t = X__fpos64_t /* stdio.h:89:20 */
  8312  
  8313  type Ino_t1 = X__ino_t /* types.h:47:17 */
  8314  
  8315  // Types from the Large File Support interface.
  8316  type Blkcnt_t1 = X__blkcnt_t     /* types.h:192:20 */ // Type to count number of disk blocks.
  8317  type Fsblkcnt_t1 = X__fsblkcnt_t /* types.h:196:22 */ // Type to count file system blocks.
  8318  type Fsfilcnt_t1 = X__fsfilcnt_t /* types.h:200:22 */
  8319  
  8320  type Flock64 = struct {
  8321  	Fl_type      int16
  8322  	Fl_whence    int16
  8323  	F__ccgo_pad1 [4]byte
  8324  	Fl_start     X__off64_t
  8325  	Fl_len       X__off64_t
  8326  	Fl_pid       X__pid_t
  8327  	F__ccgo_pad2 [4]byte
  8328  } /* fcntl.h:43:1 */
  8329  
  8330  type Stat64 = struct {
  8331  	Fst_dev      X__dev_t
  8332  	F__pad1      uint32
  8333  	F__st_ino    X__ino_t
  8334  	Fst_mode     X__mode_t
  8335  	Fst_nlink    X__nlink_t
  8336  	Fst_uid      X__uid_t
  8337  	Fst_gid      X__gid_t
  8338  	Fst_rdev     X__dev_t
  8339  	F__pad2      uint32
  8340  	F__ccgo_pad1 [4]byte
  8341  	Fst_size     X__off64_t
  8342  	Fst_blksize  X__blksize_t
  8343  	F__ccgo_pad2 [4]byte
  8344  	Fst_blocks   X__blkcnt64_t
  8345  	Fst_atim     struct {
  8346  		Ftv_sec  X__time_t
  8347  		Ftv_nsec X__syscall_slong_t
  8348  	}
  8349  	Fst_mtim struct {
  8350  		Ftv_sec  X__time_t
  8351  		Ftv_nsec X__syscall_slong_t
  8352  	}
  8353  	Fst_ctim struct {
  8354  		Ftv_sec  X__time_t
  8355  		Ftv_nsec X__syscall_slong_t
  8356  	}
  8357  	Fst_ino X__ino64_t
  8358  } /* stat.h:95:1 */
  8359  
  8360  // provide prototypes for these when building zlib without LFS
  8361  
  8362  // default memLevel
  8363  
  8364  // default i/o buffer size -- double this for output when reading (this and
  8365  //    twice this must be able to fit in an unsigned type)
  8366  
  8367  // gzip modes, also provide a little integrity check on the passed structure
  8368  
  8369  // values for gz_state how
  8370  
  8371  // internal gzip file state data structure
  8372  type Gz_state = struct {
  8373  	Fx           GzFile_s
  8374  	Fmode        int32
  8375  	Ffd          int32
  8376  	Fpath        uintptr
  8377  	Fsize        uint32
  8378  	Fwant        uint32
  8379  	Fin          uintptr
  8380  	Fout         uintptr
  8381  	Fdirect      int32
  8382  	Fhow         int32
  8383  	F__ccgo_pad1 [4]byte
  8384  	Fstart       Off64_t
  8385  	Feof         int32
  8386  	Fpast        int32
  8387  	Flevel       int32
  8388  	Fstrategy    int32
  8389  	Fskip        Off64_t
  8390  	Fseek        int32
  8391  	Ferr         int32
  8392  	Fmsg         uintptr
  8393  	Fstrm        Z_stream
  8394  	F__ccgo_pad2 [4]byte
  8395  }                        /* gzguts.h:201:3 */
  8396  type Gz_statep = uintptr /* gzguts.h:202:22 */
  8397  
  8398  // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
  8399  //    value -- needed when comparing unsigned to z_off64_t, which is signed
  8400  //    (possible z_off64_t types off_t, off64_t, and long are all signed)
  8401  
  8402  // gzclose() is in a separate file so that it is linked in only if it is used.
  8403  //    That way the other gzclose functions can be used instead to avoid linking in
  8404  //    unneeded compression or decompression routines.
  8405  func Xgzclose(tls *libc.TLS, file GzFile) int32 { /* gzclose.c:11:13: */
  8406  	var state Gz_statep
  8407  
  8408  	if file == (uintptr(0)) {
  8409  		return -2
  8410  	}
  8411  	state = file
  8412  
  8413  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  8414  		return Xgzclose_r(tls, file)
  8415  	}
  8416  	return Xgzclose_w(tls, file)
  8417  }
  8418  
  8419  // Reset gzip file state
  8420  func gz_reset(tls *libc.TLS, state Gz_statep) { /* gzlib.c:75:12: */
  8421  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)  // no output data available
  8422  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // for reading ...
  8423  		(*Gz_state)(unsafe.Pointer(state)).Feof = 0    // not at end of file
  8424  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0   // have not read past end yet
  8425  		(*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK // look for gzip header
  8426  	}
  8427  	(*Gz_state)(unsafe.Pointer(state)).Fseek = 0                 // no seek request pending
  8428  	Xgz_error(tls, state, Z_OK, uintptr(0))                      // clear error
  8429  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos = int64(0)        // no uncompressed data yet
  8430  	(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0) // no input data yet
  8431  }
  8432  
  8433  // Open a gzip file either by name or file descriptor.
  8434  func gz_open(tls *libc.TLS, path uintptr, fd int32, mode uintptr) GzFile { /* gzlib.c:91:14: */
  8435  	bp := tls.Alloc(16)
  8436  	defer tls.Free(16)
  8437  
  8438  	var state Gz_statep
  8439  	var len Z_size_t
  8440  	var oflag int32
  8441  	var cloexec int32 = 0
  8442  	var exclusive int32 = 0
  8443  
  8444  	// check input
  8445  	if path == (uintptr(0)) {
  8446  		return uintptr(0)
  8447  	}
  8448  
  8449  	// allocate gzFile structure to return
  8450  	state = libc.Xmalloc(tls, uint32(unsafe.Sizeof(Gz_state{})))
  8451  	if state == (uintptr(0)) {
  8452  		return uintptr(0)
  8453  	}
  8454  	(*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0)         // no buffers allocated yet
  8455  	(*Gz_state)(unsafe.Pointer(state)).Fwant = uint32(GZBUFSIZE) // requested buffer size
  8456  	(*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0)         // no error message yet
  8457  
  8458  	// interpret mode
  8459  	(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_NONE
  8460  	(*Gz_state)(unsafe.Pointer(state)).Flevel = -1
  8461  	(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_DEFAULT_STRATEGY
  8462  	(*Gz_state)(unsafe.Pointer(state)).Fdirect = 0
  8463  	for *(*uint8)(unsafe.Pointer(mode)) != 0 {
  8464  		if (int32(*(*uint8)(unsafe.Pointer(mode))) >= '0') && (int32(*(*uint8)(unsafe.Pointer(mode))) <= '9') {
  8465  			(*Gz_state)(unsafe.Pointer(state)).Flevel = (int32(*(*uint8)(unsafe.Pointer(mode))) - '0')
  8466  		} else {
  8467  			switch int32(*(*uint8)(unsafe.Pointer(mode))) {
  8468  			case 'r':
  8469  				(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_READ
  8470  				break
  8471  				fallthrough
  8472  			case 'w':
  8473  				(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE
  8474  				break
  8475  				fallthrough
  8476  			case 'a':
  8477  				(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_APPEND
  8478  				break
  8479  				fallthrough
  8480  			case '+': // can't read and write at the same time
  8481  				libc.Xfree(tls, state)
  8482  				return uintptr(0)
  8483  				fallthrough
  8484  			case 'b': // ignore -- will request binary anyway
  8485  				break
  8486  				fallthrough
  8487  			case 'e':
  8488  				cloexec = 1
  8489  				break
  8490  				fallthrough
  8491  			case 'x':
  8492  				exclusive = 1
  8493  				break
  8494  				fallthrough
  8495  			case 'f':
  8496  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FILTERED
  8497  				break
  8498  				fallthrough
  8499  			case 'h':
  8500  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_HUFFMAN_ONLY
  8501  				break
  8502  				fallthrough
  8503  			case 'R':
  8504  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_RLE
  8505  				break
  8506  				fallthrough
  8507  			case 'F':
  8508  				(*Gz_state)(unsafe.Pointer(state)).Fstrategy = Z_FIXED
  8509  				break
  8510  				fallthrough
  8511  			case 'T':
  8512  				(*Gz_state)(unsafe.Pointer(state)).Fdirect = 1
  8513  				break
  8514  				fallthrough
  8515  			default: // could consider as an error, but just ignore
  8516  
  8517  			}
  8518  		}
  8519  		mode++
  8520  	}
  8521  
  8522  	// must provide an "r", "w", or "a"
  8523  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_NONE {
  8524  		libc.Xfree(tls, state)
  8525  		return uintptr(0)
  8526  	}
  8527  
  8528  	// can't force transparent read
  8529  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  8530  		if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 {
  8531  			libc.Xfree(tls, state)
  8532  			return uintptr(0)
  8533  		}
  8534  		(*Gz_state)(unsafe.Pointer(state)).Fdirect = 1 // for empty file
  8535  	}
  8536  
  8537  	// save the path name for error messages
  8538  	len = libc.Xstrlen(tls, path)
  8539  	(*Gz_state)(unsafe.Pointer(state)).Fpath = libc.Xmalloc(tls, (len + Z_size_t(1)))
  8540  	if (*Gz_state)(unsafe.Pointer(state)).Fpath == (uintptr(0)) {
  8541  		libc.Xfree(tls, state)
  8542  		return uintptr(0)
  8543  	}
  8544  	libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath, (len + Z_size_t(1)), ts+76 /* "%s" */, libc.VaList(bp, path))
  8545  
  8546  	// compute the flags for open()
  8547  	oflag = ((0400000 | (func() int32 {
  8548  		if cloexec != 0 {
  8549  			return 02000000
  8550  		}
  8551  		return 0
  8552  	}())) | (func() int32 {
  8553  		if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  8554  			return O_RDONLY
  8555  		}
  8556  		return (((O_WRONLY | O_CREAT) | (func() int32 {
  8557  			if exclusive != 0 {
  8558  				return O_EXCL
  8559  			}
  8560  			return 0
  8561  		}())) | (func() int32 {
  8562  			if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_WRITE {
  8563  				return O_TRUNC
  8564  			}
  8565  			return O_APPEND
  8566  		}()))
  8567  	}()))
  8568  
  8569  	// open the file with the appropriate flags (or just use fd)
  8570  	(*Gz_state)(unsafe.Pointer(state)).Ffd = func() int32 {
  8571  		if fd > -1 {
  8572  			return fd
  8573  		}
  8574  		return libc.Xopen(tls, path, oflag, libc.VaList(bp+8, 0666))
  8575  	}()
  8576  	if (*Gz_state)(unsafe.Pointer(state)).Ffd == -1 {
  8577  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)
  8578  		libc.Xfree(tls, state)
  8579  		return uintptr(0)
  8580  	}
  8581  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_APPEND {
  8582  		libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_END) // so gzoffset() is correct
  8583  		(*Gz_state)(unsafe.Pointer(state)).Fmode = GZ_WRITE                            // simplify later checks
  8584  	}
  8585  
  8586  	// save the current position for rewinding (only if reading)
  8587  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  8588  		(*Gz_state)(unsafe.Pointer(state)).Fstart = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR)
  8589  		if (*Gz_state)(unsafe.Pointer(state)).Fstart == int64(-1) {
  8590  			(*Gz_state)(unsafe.Pointer(state)).Fstart = int64(0)
  8591  		}
  8592  	}
  8593  
  8594  	// initialize stream
  8595  	gz_reset(tls, state)
  8596  
  8597  	// return stream
  8598  	return state
  8599  }
  8600  
  8601  // -- see zlib.h --
  8602  func Xgzopen(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:270:16: */
  8603  	return gz_open(tls, path, -1, mode)
  8604  }
  8605  
  8606  // -- see zlib.h --
  8607  func Xgzopen64(tls *libc.TLS, path uintptr, mode uintptr) GzFile { /* gzlib.c:278:16: */
  8608  	return gz_open(tls, path, -1, mode)
  8609  }
  8610  
  8611  // -- see zlib.h --
  8612  func Xgzdopen(tls *libc.TLS, fd int32, mode uintptr) GzFile { /* gzlib.c:286:16: */
  8613  	bp := tls.Alloc(8)
  8614  	defer tls.Free(8)
  8615  
  8616  	var path uintptr // identifier for error messages
  8617  	var gz GzFile
  8618  
  8619  	if (fd == -1) || ((libc.AssignUintptr(&path, libc.Xmalloc(tls, (uint32(7)+(uint32(3)*uint32(unsafe.Sizeof(int32(0)))))))) == (uintptr(0))) {
  8620  		return uintptr(0)
  8621  	}
  8622  	libc.Xsnprintf(tls, path, (uint32(7) + (uint32(3) * uint32(unsafe.Sizeof(int32(0))))), ts+79 /* "<fd:%d>" */, libc.VaList(bp, fd))
  8623  	gz = gz_open(tls, path, fd, mode)
  8624  	libc.Xfree(tls, path)
  8625  	return gz
  8626  }
  8627  
  8628  // -- see zlib.h --
  8629  
  8630  // -- see zlib.h --
  8631  func Xgzbuffer(tls *libc.TLS, file GzFile, size uint32) int32 { /* gzlib.c:316:13: */
  8632  	var state Gz_statep
  8633  
  8634  	// get internal structure and check integrity
  8635  	if file == (uintptr(0)) {
  8636  		return -1
  8637  	}
  8638  	state = file
  8639  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  8640  		return -1
  8641  	}
  8642  
  8643  	// make sure we haven't already allocated memory
  8644  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != uint32(0) {
  8645  		return -1
  8646  	}
  8647  
  8648  	// check and set requested size
  8649  	if (size << 1) < size {
  8650  		return -1
  8651  	} // need to be able to double it
  8652  	if size < uint32(2) {
  8653  		size = uint32(2)
  8654  	} // need two bytes to check magic header
  8655  	(*Gz_state)(unsafe.Pointer(state)).Fwant = size
  8656  	return 0
  8657  }
  8658  
  8659  // -- see zlib.h --
  8660  func Xgzrewind(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:343:13: */
  8661  	var state Gz_statep
  8662  
  8663  	// get internal structure
  8664  	if file == (uintptr(0)) {
  8665  		return -1
  8666  	}
  8667  	state = file
  8668  
  8669  	// check that we're reading and that there's no error
  8670  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  8671  		return -1
  8672  	}
  8673  
  8674  	// back up and start over
  8675  	if libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fstart, SEEK_SET) == int64(-1) {
  8676  		return -1
  8677  	}
  8678  	gz_reset(tls, state)
  8679  	return 0
  8680  }
  8681  
  8682  // -- see zlib.h --
  8683  func Xgzseek64(tls *libc.TLS, file GzFile, offset Off64_t, whence int32) Off64_t { /* gzlib.c:366:19: */
  8684  	var n uint32
  8685  	var ret Off64_t
  8686  	var state Gz_statep
  8687  
  8688  	// get internal structure and check integrity
  8689  	if file == (uintptr(0)) {
  8690  		return int64(-1)
  8691  	}
  8692  	state = file
  8693  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  8694  		return int64(-1)
  8695  	}
  8696  
  8697  	// check that there's no error
  8698  	if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) {
  8699  		return int64(-1)
  8700  	}
  8701  
  8702  	// can only seek from start or relative to current position
  8703  	if (whence != SEEK_SET) && (whence != SEEK_CUR) {
  8704  		return int64(-1)
  8705  	}
  8706  
  8707  	// normalize offset to a SEEK_CUR specification
  8708  	if whence == SEEK_SET {
  8709  		offset = offset - ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos)
  8710  	} else if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8711  		offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fskip)
  8712  	}
  8713  	(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8714  
  8715  	// if within raw area while reading, just go there
  8716  	if (((*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1)) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset) >= int64(0)) {
  8717  		ret = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (offset - Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave)), SEEK_CUR)
  8718  		if ret == int64(-1) {
  8719  			return int64(-1)
  8720  		}
  8721  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  8722  		(*Gz_state)(unsafe.Pointer(state)).Feof = 0
  8723  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  8724  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  8725  		Xgz_error(tls, state, Z_OK, uintptr(0))
  8726  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0)
  8727  		*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (offset)
  8728  		return (*Gz_state)(unsafe.Pointer(state)).Fx.Fpos
  8729  	}
  8730  
  8731  	// calculate skip amount, rewinding if needed for back seek when reading
  8732  	if offset < int64(0) {
  8733  		if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ { // writing -- can't go backwards
  8734  			return int64(-1)
  8735  		}
  8736  		offset = offset + ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos)
  8737  		if offset < int64(0) { // before start of file!
  8738  			return int64(-1)
  8739  		}
  8740  		if Xgzrewind(tls, file) == -1 { // rewind, then skip to offset
  8741  			return int64(-1)
  8742  		}
  8743  	}
  8744  
  8745  	// if reading, skip what's in output buffer (one less gzgetc() check)
  8746  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  8747  		if ((uint32(unsafe.Sizeof(int32(0))) == uint32(unsafe.Sizeof(Off64_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > offset) {
  8748  			n = uint32(offset)
  8749  		} else {
  8750  			n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  8751  		}
  8752  		*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n)
  8753  		*(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(n))
  8754  		*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n))
  8755  		offset = offset - (Off64_t(n))
  8756  	}
  8757  
  8758  	// request skip (if not zero)
  8759  	if offset != 0 {
  8760  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 1
  8761  		(*Gz_state)(unsafe.Pointer(state)).Fskip = offset
  8762  	}
  8763  	return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + offset)
  8764  }
  8765  
  8766  // -- see zlib.h --
  8767  func Xgzseek(tls *libc.TLS, file GzFile, offset Off_t1, whence int32) Off_t1 { /* gzlib.c:443:17: */
  8768  	var ret Off64_t
  8769  
  8770  	ret = Xgzseek64(tls, file, Off64_t(offset), whence)
  8771  	if ret == Off64_t(Off_t1(ret)) {
  8772  		return Off_t1(ret)
  8773  	}
  8774  	return -1
  8775  }
  8776  
  8777  // -- see zlib.h --
  8778  func Xgztell64(tls *libc.TLS, file GzFile) Off64_t { /* gzlib.c:455:19: */
  8779  	var state Gz_statep
  8780  
  8781  	// get internal structure and check integrity
  8782  	if file == (uintptr(0)) {
  8783  		return int64(-1)
  8784  	}
  8785  	state = file
  8786  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  8787  		return int64(-1)
  8788  	}
  8789  
  8790  	// return position
  8791  	return ((*Gz_state)(unsafe.Pointer(state)).Fx.Fpos + (func() int64 {
  8792  		if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  8793  			return (*Gz_state)(unsafe.Pointer(state)).Fskip
  8794  		}
  8795  		return int64(0)
  8796  	}()))
  8797  }
  8798  
  8799  // -- see zlib.h --
  8800  func Xgztell(tls *libc.TLS, file GzFile) Off_t1 { /* gzlib.c:472:17: */
  8801  	var ret Off64_t
  8802  
  8803  	ret = Xgztell64(tls, file)
  8804  	if ret == Off64_t(Off_t1(ret)) {
  8805  		return Off_t1(ret)
  8806  	}
  8807  	return -1
  8808  }
  8809  
  8810  // -- see zlib.h --
  8811  func Xgzoffset64(tls *libc.TLS, file GzFile) Off64_t { /* gzlib.c:482:19: */
  8812  	var offset Off64_t
  8813  	var state Gz_statep
  8814  
  8815  	// get internal structure and check integrity
  8816  	if file == (uintptr(0)) {
  8817  		return int64(-1)
  8818  	}
  8819  	state = file
  8820  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  8821  		return int64(-1)
  8822  	}
  8823  
  8824  	// compute and return effective offset in file
  8825  	offset = libc.Xlseek64(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, int64(0), SEEK_CUR)
  8826  	if offset == int64(-1) {
  8827  		return int64(-1)
  8828  	}
  8829  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ { // reading
  8830  		offset = offset - (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in))
  8831  	} // don't count buffered input
  8832  	return offset
  8833  }
  8834  
  8835  // -- see zlib.h --
  8836  func Xgzoffset(tls *libc.TLS, file GzFile) Off_t1 { /* gzlib.c:505:17: */
  8837  	var ret Off64_t
  8838  
  8839  	ret = Xgzoffset64(tls, file)
  8840  	if ret == Off64_t(Off_t1(ret)) {
  8841  		return Off_t1(ret)
  8842  	}
  8843  	return -1
  8844  }
  8845  
  8846  // -- see zlib.h --
  8847  func Xgzeof(tls *libc.TLS, file GzFile) int32 { /* gzlib.c:515:13: */
  8848  	var state Gz_statep
  8849  
  8850  	// get internal structure and check integrity
  8851  	if file == (uintptr(0)) {
  8852  		return 0
  8853  	}
  8854  	state = file
  8855  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  8856  		return 0
  8857  	}
  8858  
  8859  	// return end-of-file state
  8860  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  8861  		return (*Gz_state)(unsafe.Pointer(state)).Fpast
  8862  	}
  8863  	return 0
  8864  }
  8865  
  8866  // -- see zlib.h --
  8867  func Xgzerror(tls *libc.TLS, file GzFile, errnum uintptr) uintptr { /* gzlib.c:532:12: */
  8868  	var state Gz_statep
  8869  
  8870  	// get internal structure and check integrity
  8871  	if file == (uintptr(0)) {
  8872  		return uintptr(0)
  8873  	}
  8874  	state = file
  8875  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  8876  		return uintptr(0)
  8877  	}
  8878  
  8879  	// return error information
  8880  	if errnum != (uintptr(0)) {
  8881  		*(*int32)(unsafe.Pointer(errnum)) = (*Gz_state)(unsafe.Pointer(state)).Ferr
  8882  	}
  8883  	if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-4) {
  8884  		return ts + 87 /* "out of memory" */
  8885  	}
  8886  	return func() uintptr {
  8887  		if (*Gz_state)(unsafe.Pointer(state)).Fmsg == (uintptr(0)) {
  8888  			return ts + 101 /* "" */
  8889  		}
  8890  		return (*Gz_state)(unsafe.Pointer(state)).Fmsg
  8891  	}()
  8892  }
  8893  
  8894  // -- see zlib.h --
  8895  func Xgzclearerr(tls *libc.TLS, file GzFile) { /* gzlib.c:553:14: */
  8896  	var state Gz_statep
  8897  
  8898  	// get internal structure and check integrity
  8899  	if file == (uintptr(0)) {
  8900  		return
  8901  	}
  8902  	state = file
  8903  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) {
  8904  		return
  8905  	}
  8906  
  8907  	// clear error and end-of-file
  8908  	if (*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ {
  8909  		(*Gz_state)(unsafe.Pointer(state)).Feof = 0
  8910  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  8911  	}
  8912  	Xgz_error(tls, state, Z_OK, uintptr(0))
  8913  }
  8914  
  8915  // Create an error message in allocated memory and set state->err and
  8916  //    state->msg accordingly.  Free any previous error message already there.  Do
  8917  //    not try to free or allocate space if the error is Z_MEM_ERROR (out of
  8918  //    memory).  Simply save the error message as a static string.  If there is an
  8919  //    allocation failure constructing the error message, then convert the error to
  8920  //    out of memory.
  8921  func Xgz_error(tls *libc.TLS, state Gz_statep, err int32, msg uintptr) { /* gzlib.c:579:20: */
  8922  	bp := tls.Alloc(24)
  8923  	defer tls.Free(24)
  8924  
  8925  	// free previously allocated message and clear
  8926  	if (*Gz_state)(unsafe.Pointer(state)).Fmsg != (uintptr(0)) {
  8927  		if (*Gz_state)(unsafe.Pointer(state)).Ferr != (-4) {
  8928  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg)
  8929  		}
  8930  		(*Gz_state)(unsafe.Pointer(state)).Fmsg = uintptr(0)
  8931  	}
  8932  
  8933  	// if fatal, set state->x.have to 0 so that the gzgetc() macro fails
  8934  	if (err != Z_OK) && (err != (-5)) {
  8935  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  8936  	}
  8937  
  8938  	// set error code, and if no message, then done
  8939  	(*Gz_state)(unsafe.Pointer(state)).Ferr = err
  8940  	if msg == (uintptr(0)) {
  8941  		return
  8942  	}
  8943  
  8944  	// for an out of memory error, return literal string when requested
  8945  	if err == (-4) {
  8946  		return
  8947  	}
  8948  
  8949  	// construct error message with path
  8950  	if (libc.AssignPtrUintptr(state+96 /* &.msg */, libc.Xmalloc(tls, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)+libc.Xstrlen(tls, msg))+Size_t(3))))) == (uintptr(0)) {
  8951  		(*Gz_state)(unsafe.Pointer(state)).Ferr = -4
  8952  		return
  8953  	}
  8954  	libc.Xsnprintf(tls, (*Gz_state)(unsafe.Pointer(state)).Fmsg, ((libc.Xstrlen(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath) + libc.Xstrlen(tls, msg)) + Size_t(3)),
  8955  		ts+102 /* "%s%s%s" */, libc.VaList(bp, (*Gz_state)(unsafe.Pointer(state)).Fpath, ts+109 /* ": " */, msg))
  8956  }
  8957  
  8958  // Use read() to load a buffer -- return -1 on error, otherwise 0.  Read from
  8959  //    state->fd, and update state->eof, state->err, and state->msg as appropriate.
  8960  //    This function needs to loop on read(), since read() is not guaranteed to
  8961  //    read the number of bytes requested, depending on the type of descriptor.
  8962  func gz_load(tls *libc.TLS, state Gz_statep, buf uintptr, len uint32, have uintptr) int32 { /* gzread.c:21:11: */
  8963  	var ret int32
  8964  	var get uint32
  8965  	var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1))
  8966  
  8967  	*(*uint32)(unsafe.Pointer(have)) = uint32(0)
  8968  	for ok := true; ok; ok = (*(*uint32)(unsafe.Pointer(have)) < len) {
  8969  		get = (len - *(*uint32)(unsafe.Pointer(have)))
  8970  		if get > max {
  8971  			get = max
  8972  		}
  8973  		ret = libc.Xread(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (buf + uintptr(*(*uint32)(unsafe.Pointer(have)))), get)
  8974  		if ret <= 0 {
  8975  			break
  8976  		}
  8977  		*(*uint32)(unsafe.Pointer(have)) += (uint32(ret))
  8978  	}
  8979  	if ret < 0 {
  8980  		Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls)))))
  8981  		return -1
  8982  	}
  8983  	if ret == 0 {
  8984  		(*Gz_state)(unsafe.Pointer(state)).Feof = 1
  8985  	}
  8986  	return 0
  8987  }
  8988  
  8989  // Load up input buffer and set eof flag if last data loaded -- return -1 on
  8990  //    error, 0 otherwise.  Note that the eof flag is set when the end of the input
  8991  //    file is reached, even though there may be unused data in the buffer.  Once
  8992  //    that data has been used, no more attempts will be made to read the file.
  8993  //    If strm->avail_in != 0, then the current data is moved to the beginning of
  8994  //    the input buffer, and then the remainder of the buffer is loaded with the
  8995  //    available data from the input file.
  8996  func gz_avail(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:56:11: */
  8997  	bp := tls.Alloc(4)
  8998  	defer tls.Free(4)
  8999  
  9000  	// var got uint32 at bp, 4
  9001  
  9002  	var strm Z_streamp = (state + 100 /* &.strm */)
  9003  
  9004  	if ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) {
  9005  		return -1
  9006  	}
  9007  	if (*Gz_state)(unsafe.Pointer(state)).Feof == 0 {
  9008  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 { // copy what's there to the start
  9009  			var p uintptr = (*Gz_state)(unsafe.Pointer(state)).Fin
  9010  			var q uintptr = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
  9011  			var n uint32 = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  9012  			for ok := true; ok; ok = libc.PreDecUint32(&n, 1) != 0 {
  9013  				*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&p, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&q, 1)))
  9014  			}
  9015  		}
  9016  		if gz_load(tls, state, ((*Gz_state)(unsafe.Pointer(state)).Fin+uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in)),
  9017  			((*Gz_state)(unsafe.Pointer(state)).Fsize-(*Z_stream)(unsafe.Pointer(strm)).Favail_in), bp /* &got */) == -1 {
  9018  			return -1
  9019  		}
  9020  		*(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) += (*(*uint32)(unsafe.Pointer(bp /* got */)))
  9021  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  9022  	}
  9023  	return 0
  9024  }
  9025  
  9026  // Look for gzip header, set up for inflate or copy.  state->x.have must be 0.
  9027  //    If this is the first time in, allocate required memory.  state->how will be
  9028  //    left unchanged if there is no more input data available, will be set to COPY
  9029  //    if there is no gzip header and direct copying will be performed, or it will
  9030  //    be set to GZIP for decompression.  If direct copying, then leftover input
  9031  //    data from the input buffer will be copied to the output buffer.  In that
  9032  //    case, all further file reads will be directly to either the output buffer or
  9033  //    a user buffer.  If decompressing, the inflate state will be initialized.
  9034  //    gz_look() will return 0 on success or -1 on failure.
  9035  func gz_look(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:91:11: */
  9036  	var strm Z_streamp = (state + 100 /* &.strm */)
  9037  
  9038  	// allocate read buffers and inflate memory
  9039  	if (*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0) {
  9040  		// allocate buffers
  9041  		(*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, (*Gz_state)(unsafe.Pointer(state)).Fwant)
  9042  		(*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, ((*Gz_state)(unsafe.Pointer(state)).Fwant << 1))
  9043  		if ((*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0))) || ((*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0))) {
  9044  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  9045  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  9046  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  9047  			return -1
  9048  		}
  9049  		(*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant
  9050  
  9051  		// allocate inflate memory
  9052  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzalloc = Alloc_func(Z_NULL)
  9053  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fzfree = Free_func(Z_NULL)
  9054  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fopaque = Voidpf(Z_NULL)
  9055  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = UInt(0)
  9056  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = uintptr(Z_NULL)
  9057  		if (XinflateInit2_(tls, (state+100 /* &.strm */), (15+16), ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{}))) != Z_OK) { // gunzip
  9058  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  9059  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  9060  			(*Gz_state)(unsafe.Pointer(state)).Fsize = uint32(0)
  9061  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  9062  			return -1
  9063  		}
  9064  	}
  9065  
  9066  	// get at least the magic bytes in the input buffer
  9067  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in < UInt(2) {
  9068  		if gz_avail(tls, state) == -1 {
  9069  			return -1
  9070  		}
  9071  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
  9072  			return 0
  9073  		}
  9074  	}
  9075  
  9076  	// look for gzip magic bytes -- if there, do gzip decoding (note: there is
  9077  	//        a logical dilemma here when considering the case of a partially written
  9078  	//        gzip file, to wit, if a single 31 byte is written, then we cannot tell
  9079  	//        whether this is a single-byte file, or just a partially written gzip
  9080  	//        file -- for here we assume that if a gzip file is being written, then
  9081  	//        the header will be written in a single operation, so that reading a
  9082  	//        single byte is sufficient indication that it is not a gzip file)
  9083  	if (((*Z_stream)(unsafe.Pointer(strm)).Favail_in > UInt(1)) && (int32(*(*Bytef)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fnext_in))) == 31)) && (int32(*(*Bytef)(unsafe.Pointer((*Z_stream)(unsafe.Pointer(strm)).Fnext_in + 1))) == 139) {
  9084  		XinflateReset(tls, strm)
  9085  		(*Gz_state)(unsafe.Pointer(state)).Fhow = /* GZIP */ 2
  9086  		(*Gz_state)(unsafe.Pointer(state)).Fdirect = 0
  9087  		return 0
  9088  	}
  9089  
  9090  	// no gzip header -- if we were decoding gzip before, then this is trailing
  9091  	//        garbage.  Ignore the trailing garbage and finish.
  9092  	if (*Gz_state)(unsafe.Pointer(state)).Fdirect == 0 {
  9093  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0)
  9094  		(*Gz_state)(unsafe.Pointer(state)).Feof = 1
  9095  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  9096  		return 0
  9097  	}
  9098  
  9099  	// doing raw i/o, copy any leftover input to output -- this assumes that
  9100  	//        the output buffer is larger than the input buffer, which also assures
  9101  	//        space for gzungetc()
  9102  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout
  9103  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 {
  9104  		libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, (*Z_stream)(unsafe.Pointer(strm)).Favail_in)
  9105  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  9106  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = UInt(0)
  9107  	}
  9108  	(*Gz_state)(unsafe.Pointer(state)).Fhow = COPY1
  9109  	(*Gz_state)(unsafe.Pointer(state)).Fdirect = 1
  9110  	return 0
  9111  }
  9112  
  9113  // Decompress from input to the provided next_out and avail_out in the state.
  9114  //    On return, state->x.have and state->x.next point to the just decompressed
  9115  //    data.  If the gzip stream completes, state->how is reset to LOOK to look for
  9116  //    the next gzip stream or raw data, once state->x.have is depleted.  Returns 0
  9117  //    on success, -1 on failure.
  9118  func gz_decomp(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:175:11: */
  9119  	var ret int32 = Z_OK
  9120  	var had uint32
  9121  	var strm Z_streamp = (state + 100 /* &.strm */)
  9122  
  9123  	// fill output buffer up to end of deflate stream
  9124  	had = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
  9125  	for ok := true; ok; ok = (((*Z_stream)(unsafe.Pointer(strm)).Favail_out != 0) && (ret != Z_STREAM_END)) {
  9126  		// get more input for inflate()
  9127  		if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && (gz_avail(tls, state) == -1) {
  9128  			return -1
  9129  		}
  9130  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
  9131  			Xgz_error(tls, state, -5, ts+112 /* "unexpected end o..." */)
  9132  			break
  9133  		}
  9134  
  9135  		// decompress and handle errors
  9136  		ret = Xinflate(tls, strm, Z_NO_FLUSH)
  9137  		if (ret == (-2)) || (ret == Z_NEED_DICT) {
  9138  			Xgz_error(tls, state, -2,
  9139  				ts+135 /* "internal error: ..." */)
  9140  			return -1
  9141  		}
  9142  		if ret == (-4) {
  9143  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  9144  			return -1
  9145  		}
  9146  		if ret == (-3) { // deflate stream invalid
  9147  			Xgz_error(tls, state, -3,
  9148  				func() uintptr {
  9149  					if (*Z_stream)(unsafe.Pointer(strm)).Fmsg == (uintptr(0)) {
  9150  						return ts + 174 /* "compressed data ..." */
  9151  					}
  9152  					return (*Z_stream)(unsafe.Pointer(strm)).Fmsg
  9153  				}())
  9154  			return -1
  9155  		}
  9156  	}
  9157  
  9158  	// update available output
  9159  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = (had - (*Z_stream)(unsafe.Pointer(strm)).Favail_out)
  9160  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave))
  9161  
  9162  	// if the gzip stream completed successfully, look for another
  9163  	if ret == Z_STREAM_END {
  9164  		(*Gz_state)(unsafe.Pointer(state)).Fhow = LOOK
  9165  	}
  9166  
  9167  	// good decompression
  9168  	return 0
  9169  }
  9170  
  9171  // Fetch data and put it in the output buffer.  Assumes state->x.have is 0.
  9172  //    Data is either copied from the input file or decompressed from the input
  9173  //    file depending on state->how.  If state->how is LOOK, then a gzip header is
  9174  //    looked for to determine whether to copy or decompress.  Returns -1 on error,
  9175  //    otherwise 0.  gz_fetch() will leave state->how as COPY or GZIP unless the
  9176  //    end of the input file has been reached and all data has been processed.
  9177  func gz_fetch(tls *libc.TLS, state Gz_statep) int32 { /* gzread.c:229:11: */
  9178  	var strm Z_streamp = (state + 100 /* &.strm */)
  9179  
  9180  	for ok := true; ok; ok = (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) && (!((*Gz_state)(unsafe.Pointer(state)).Feof != 0) || ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0))) {
  9181  		switch (*Gz_state)(unsafe.Pointer(state)).Fhow {
  9182  		case LOOK: // -> LOOK, COPY (only if never GZIP), or GZIP
  9183  			if gz_look(tls, state) == -1 {
  9184  				return -1
  9185  			}
  9186  			if (*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK {
  9187  				return 0
  9188  			}
  9189  			break
  9190  		case COPY1: // -> COPY
  9191  			if gz_load(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fout, ((*Gz_state)(unsafe.Pointer(state)).Fsize<<1), (state /* &.x */ /* &.have */)) ==
  9192  				-1 {
  9193  				return -1
  9194  			}
  9195  			(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout
  9196  			return 0
  9197  		case /* GZIP */ 2: // -> GZIP or LOOK (if end of gzip stream)
  9198  			(*Z_stream)(unsafe.Pointer(strm)).Favail_out = ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)
  9199  			(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout
  9200  			if gz_decomp(tls, state) == -1 {
  9201  				return -1
  9202  			}
  9203  		}
  9204  	}
  9205  	return 0
  9206  }
  9207  
  9208  // Skip len uncompressed bytes of output.  Return -1 on error, 0 on success.
  9209  func gz_skip(tls *libc.TLS, state Gz_statep, len Off64_t) int32 { /* gzread.c:259:11: */
  9210  	var n uint32
  9211  
  9212  	// skip over len bytes or reach end-of-file, whichever comes first
  9213  	for len != 0 {
  9214  		// skip over whatever is in output buffer
  9215  		if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 {
  9216  			if ((uint32(unsafe.Sizeof(int32(0))) == uint32(unsafe.Sizeof(Off64_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > uint32(0x7fffffff))) || (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave) > len) {
  9217  				n = uint32(len)
  9218  			} else {
  9219  				n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  9220  			}
  9221  			*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n)
  9222  			*(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(n))
  9223  			*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n))
  9224  			len = len - (Off64_t(n))
  9225  		} else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) {
  9226  			break
  9227  		} else {
  9228  			// get more output, looking for header if required
  9229  			if gz_fetch(tls, state) == -1 {
  9230  				return -1
  9231  			}
  9232  		}
  9233  	}
  9234  	return 0
  9235  }
  9236  
  9237  // Read len bytes into buf from file, or less than len up to the end of the
  9238  //    input.  Return the number of bytes read.  If zero is returned, either the
  9239  //    end of file was reached, or there was an error.  state->err must be
  9240  //    consulted in that case to determine which.
  9241  func gz_read(tls *libc.TLS, state Gz_statep, buf Voidp, len Z_size_t) Z_size_t { /* gzread.c:294:16: */
  9242  	bp := tls.Alloc(4)
  9243  	defer tls.Free(4)
  9244  
  9245  	var got Z_size_t
  9246  	// var n uint32 at bp, 4
  9247  
  9248  	// if len is zero, avoid unnecessary operations
  9249  	if len == Z_size_t(0) {
  9250  		return Z_size_t(0)
  9251  	}
  9252  
  9253  	// process a skip request
  9254  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  9255  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  9256  		if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  9257  			return Z_size_t(0)
  9258  		}
  9259  	}
  9260  
  9261  	// get len bytes to buf, or less than len if at the end
  9262  	got = Z_size_t(0)
  9263  	for ok := true; ok; ok = len != 0 {
  9264  		// set n to the maximum amount of len that fits in an unsigned int
  9265  		*(*uint32)(unsafe.Pointer(bp /* n */)) = libc.Uint32FromInt32(-1)
  9266  		if *(*uint32)(unsafe.Pointer(bp /* n */)) > len {
  9267  			*(*uint32)(unsafe.Pointer(bp /* n */)) = len
  9268  		}
  9269  
  9270  		// first just try copying data from the output buffer
  9271  		if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 {
  9272  			if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave < *(*uint32)(unsafe.Pointer(bp /* n */)) {
  9273  				*(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  9274  			}
  9275  			libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, *(*uint32)(unsafe.Pointer(bp /* n */)))
  9276  			*(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(*(*uint32)(unsafe.Pointer(bp /* n */))))
  9277  			*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (*(*uint32)(unsafe.Pointer(bp /* n */)))
  9278  		} else if ((*Gz_state)(unsafe.Pointer(state)).Feof != 0) && ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0)) {
  9279  			(*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // tried to read past end
  9280  			break
  9281  		} else if ((*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK) || (*(*uint32)(unsafe.Pointer(bp /* n */)) < ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)) {
  9282  			// get more output, looking for header if required
  9283  			if gz_fetch(tls, state) == -1 {
  9284  				return Z_size_t(0)
  9285  			}
  9286  			continue // no progress yet -- go back to copy above
  9287  			// the copy above assures that we will leave with space in the
  9288  			//                output buffer, allowing at least one gzungetc() to succeed
  9289  		} else if (*Gz_state)(unsafe.Pointer(state)).Fhow == COPY1 { // read directly
  9290  			if gz_load(tls, state, buf, *(*uint32)(unsafe.Pointer(bp /* n */)), bp /* &n */) == -1 {
  9291  				return Z_size_t(0)
  9292  			}
  9293  		} else { // state->how == GZIP
  9294  			(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_out = *(*uint32)(unsafe.Pointer(bp /* n */))
  9295  			(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_out = buf
  9296  			if gz_decomp(tls, state) == -1 {
  9297  				return Z_size_t(0)
  9298  			}
  9299  			*(*uint32)(unsafe.Pointer(bp /* n */)) = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  9300  			(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(0)
  9301  		}
  9302  
  9303  		// update progress
  9304  		len = len - (*(*uint32)(unsafe.Pointer(bp /* n */)))
  9305  		buf = (buf + uintptr(*(*uint32)(unsafe.Pointer(bp /* n */))))
  9306  		got = got + (*(*uint32)(unsafe.Pointer(bp /* n */)))
  9307  		*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(*(*uint32)(unsafe.Pointer(bp /* n */))))
  9308  	}
  9309  
  9310  	// return number of bytes read into user buffer
  9311  	return got
  9312  }
  9313  
  9314  // -- see zlib.h --
  9315  func Xgzread(tls *libc.TLS, file GzFile, buf Voidp, len uint32) int32 { /* gzread.c:375:13: */
  9316  	var state Gz_statep
  9317  
  9318  	// get internal structure
  9319  	if file == (uintptr(0)) {
  9320  		return -1
  9321  	}
  9322  	state = file
  9323  
  9324  	// check that we're reading and that there's no (serious) error
  9325  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  9326  		return -1
  9327  	}
  9328  
  9329  	// since an int is returned, make sure len fits in one, otherwise return
  9330  	//        with an error (this avoids a flaw in the interface)
  9331  	if int32(len) < 0 {
  9332  		Xgz_error(tls, state, -2, ts+196 /* "request does not..." */)
  9333  		return -1
  9334  	}
  9335  
  9336  	// read len or fewer bytes to buf
  9337  	len = gz_read(tls, state, buf, len)
  9338  
  9339  	// check for an error
  9340  	if ((len == uint32(0)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK)) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5)) {
  9341  		return -1
  9342  	}
  9343  
  9344  	// return the number of bytes read (this is assured to fit in an int)
  9345  	return int32(len)
  9346  }
  9347  
  9348  // -- see zlib.h --
  9349  func Xgzfread(tls *libc.TLS, buf Voidp, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzread.c:411:18: */
  9350  	var len Z_size_t
  9351  	var state Gz_statep
  9352  
  9353  	// get internal structure
  9354  	if file == (uintptr(0)) {
  9355  		return Z_size_t(0)
  9356  	}
  9357  	state = file
  9358  
  9359  	// check that we're reading and that there's no (serious) error
  9360  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  9361  		return Z_size_t(0)
  9362  	}
  9363  
  9364  	// compute bytes to read -- error on overflow
  9365  	len = (nitems * size)
  9366  	if (size != 0) && ((len / size) != nitems) {
  9367  		Xgz_error(tls, state, -2, ts+227 /* "request does not..." */)
  9368  		return Z_size_t(0)
  9369  	}
  9370  
  9371  	// read len or fewer bytes to buf, return the number of full items read
  9372  	if len != 0 {
  9373  		return (gz_read(tls, state, buf, len) / size)
  9374  	}
  9375  	return uint32(0)
  9376  }
  9377  
  9378  // -- see zlib.h --
  9379  func Xgzgetc(tls *libc.TLS, file GzFile) int32 { /* gzread.c:447:13: */
  9380  	bp := tls.Alloc(1)
  9381  	defer tls.Free(1)
  9382  
  9383  	var ret int32
  9384  	// var buf [1]uint8 at bp, 1
  9385  
  9386  	var state Gz_statep
  9387  
  9388  	// get internal structure
  9389  	if file == (uintptr(0)) {
  9390  		return -1
  9391  	}
  9392  	state = file
  9393  
  9394  	// check that we're reading and that there's no (serious) error
  9395  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  9396  		return -1
  9397  	}
  9398  
  9399  	// try output buffer (no need to check for skip request)
  9400  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave != 0 {
  9401  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave--
  9402  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++
  9403  		return int32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext), 1))))
  9404  	}
  9405  
  9406  	// nothing there -- try gz_read()
  9407  	ret = int32(gz_read(tls, state, bp /* &buf[0] */, uint32(1)))
  9408  	if ret < 1 {
  9409  		return -1
  9410  	}
  9411  	return int32(*(*uint8)(unsafe.Pointer(bp /* &buf[0] */)))
  9412  }
  9413  
  9414  func Xgzgetc_(tls *libc.TLS, file GzFile) int32 { /* gzread.c:476:13: */
  9415  	return Xgzgetc(tls, file)
  9416  }
  9417  
  9418  // -- see zlib.h --
  9419  func Xgzungetc(tls *libc.TLS, c int32, file GzFile) int32 { /* gzread.c:483:13: */
  9420  	var state Gz_statep
  9421  
  9422  	// get internal structure
  9423  	if file == (uintptr(0)) {
  9424  		return -1
  9425  	}
  9426  	state = file
  9427  
  9428  	// check that we're reading and that there's no (serious) error
  9429  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  9430  		return -1
  9431  	}
  9432  
  9433  	// process a skip request
  9434  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  9435  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  9436  		if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  9437  			return -1
  9438  		}
  9439  	}
  9440  
  9441  	// can't push EOF
  9442  	if c < 0 {
  9443  		return -1
  9444  	}
  9445  
  9446  	// if output buffer empty, put byte at end (allows more pushing)
  9447  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) {
  9448  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave = uint32(1)
  9449  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1))) - uintptr(1))
  9450  		*(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c)
  9451  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos--
  9452  		(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  9453  		return c
  9454  	}
  9455  
  9456  	// if no room, give up (must have already done a gzungetc())
  9457  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == ((*Gz_state)(unsafe.Pointer(state)).Fsize << 1) {
  9458  		Xgz_error(tls, state, -3, ts+260 /* "out of room to p..." */)
  9459  		return -1
  9460  	}
  9461  
  9462  	// slide output data if needed and insert byte before existing data
  9463  	if (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext == (*Gz_state)(unsafe.Pointer(state)).Fout {
  9464  		var src uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave))
  9465  		var dest uintptr = ((*Gz_state)(unsafe.Pointer(state)).Fout + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize << 1)))
  9466  		for src > (*Gz_state)(unsafe.Pointer(state)).Fout {
  9467  			*(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&dest, 1))) = *(*uint8)(unsafe.Pointer(libc.PreDecUintptr(&src, 1)))
  9468  		}
  9469  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = dest
  9470  	}
  9471  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fhave++
  9472  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext--
  9473  	*(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) = uint8(c)
  9474  	(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos--
  9475  	(*Gz_state)(unsafe.Pointer(state)).Fpast = 0
  9476  	return c
  9477  }
  9478  
  9479  // -- see zlib.h --
  9480  func Xgzgets(tls *libc.TLS, file GzFile, buf uintptr, len int32) uintptr { /* gzread.c:543:6: */
  9481  	var left uint32
  9482  	var n uint32
  9483  	var str uintptr
  9484  	var eol uintptr
  9485  	var state Gz_statep
  9486  
  9487  	// check parameters and get internal structure
  9488  	if ((file == (uintptr(0))) || (buf == (uintptr(0)))) || (len < 1) {
  9489  		return uintptr(0)
  9490  	}
  9491  	state = file
  9492  
  9493  	// check that we're reading and that there's no (serious) error
  9494  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ) || (((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) && ((*Gz_state)(unsafe.Pointer(state)).Ferr != (-5))) {
  9495  		return uintptr(0)
  9496  	}
  9497  
  9498  	// process a skip request
  9499  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  9500  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  9501  		if gz_skip(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  9502  			return uintptr(0)
  9503  		}
  9504  	}
  9505  
  9506  	// copy output bytes up to new line or len - 1, whichever comes first --
  9507  	//        append a terminating zero to the string (we don't check for a zero in
  9508  	//        the contents, let the user worry about that)
  9509  	str = buf
  9510  	left = (uint32(len) - uint32(1))
  9511  	if left != 0 {
  9512  		for ok := true; ok; ok = ((left != 0) && (eol == (uintptr(0)))) {
  9513  			// assure that something is in the output buffer
  9514  			if ((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) && (gz_fetch(tls, state) == -1) {
  9515  				return uintptr(0)
  9516  			} // error
  9517  			if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0) { // end of file
  9518  				(*Gz_state)(unsafe.Pointer(state)).Fpast = 1 // read past end
  9519  				break                                        // return what we have
  9520  			}
  9521  
  9522  			// look for end-of-line in current output buffer
  9523  			if (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave > left {
  9524  				n = left
  9525  			} else {
  9526  				n = (*Gz_state)(unsafe.Pointer(state)).Fx.Fhave
  9527  			}
  9528  			eol = libc.Xmemchr(tls, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, '\n', n)
  9529  			if eol != (uintptr(0)) {
  9530  				n = ((uint32((int32(eol) - int32((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1)) + uint32(1))
  9531  			}
  9532  
  9533  			// copy through end-of-line, or remainder if not found
  9534  			libc.Xmemcpy(tls, buf, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, n)
  9535  			*(*uint32)(unsafe.Pointer(state /* &.x */ /* &.have */)) -= (n)
  9536  			*(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(n))
  9537  			*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n))
  9538  			left = left - (n)
  9539  			buf += uintptr(n)
  9540  		}
  9541  	}
  9542  
  9543  	// return terminated string, or if nothing, end of file
  9544  	if buf == str {
  9545  		return uintptr(0)
  9546  	}
  9547  	*(*uint8)(unsafe.Pointer(buf)) = uint8(0)
  9548  	return str
  9549  }
  9550  
  9551  // -- see zlib.h --
  9552  func Xgzdirect(tls *libc.TLS, file GzFile) int32 { /* gzread.c:607:13: */
  9553  	var state Gz_statep
  9554  
  9555  	// get internal structure
  9556  	if file == (uintptr(0)) {
  9557  		return 0
  9558  	}
  9559  	state = file
  9560  
  9561  	// if the state is not known, but we can find out, then do so (this is
  9562  	//        mainly for right after a gzopen() or gzdopen())
  9563  	if (((*Gz_state)(unsafe.Pointer(state)).Fmode == GZ_READ) && ((*Gz_state)(unsafe.Pointer(state)).Fhow == LOOK)) && ((*Gz_state)(unsafe.Pointer(state)).Fx.Fhave == uint32(0)) {
  9564  		gz_look(tls, state)
  9565  	}
  9566  
  9567  	// return 1 if transparent, 0 if processing a gzip stream
  9568  	return (*Gz_state)(unsafe.Pointer(state)).Fdirect
  9569  }
  9570  
  9571  // -- see zlib.h --
  9572  func Xgzclose_r(tls *libc.TLS, file GzFile) int32 { /* gzread.c:627:13: */
  9573  	var ret int32
  9574  	var err int32
  9575  	var state Gz_statep
  9576  
  9577  	// get internal structure
  9578  	if file == (uintptr(0)) {
  9579  		return -2
  9580  	}
  9581  	state = file
  9582  
  9583  	// check that we're reading
  9584  	if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_READ {
  9585  		return -2
  9586  	}
  9587  
  9588  	// free memory and close file
  9589  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
  9590  		XinflateEnd(tls, (state + 100 /* &.strm */))
  9591  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  9592  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  9593  	}
  9594  	if (*Gz_state)(unsafe.Pointer(state)).Ferr == (-5) {
  9595  		err = -5
  9596  	} else {
  9597  		err = Z_OK
  9598  	}
  9599  	Xgz_error(tls, state, Z_OK, uintptr(0))
  9600  	libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)
  9601  	ret = libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd)
  9602  	libc.Xfree(tls, state)
  9603  	if ret != 0 {
  9604  		return -1
  9605  	}
  9606  	return err
  9607  }
  9608  
  9609  // Initialize state for writing a gzip file.  Mark initialization by setting
  9610  //    state->size to non-zero.  Return -1 on a memory allocation failure, or 0 on
  9611  //    success.
  9612  func gz_init(tls *libc.TLS, state Gz_statep) int32 { /* gzwrite.c:17:11: */
  9613  	var ret int32
  9614  	var strm Z_streamp = (state + 100 /* &.strm */)
  9615  
  9616  	// allocate input buffer (double size for gzprintf)
  9617  	(*Gz_state)(unsafe.Pointer(state)).Fin = libc.Xmalloc(tls, ((*Gz_state)(unsafe.Pointer(state)).Fwant << 1))
  9618  	if (*Gz_state)(unsafe.Pointer(state)).Fin == (uintptr(0)) {
  9619  		Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  9620  		return -1
  9621  	}
  9622  
  9623  	// only need output buffer and deflate state if compressing
  9624  	if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) {
  9625  		// allocate output buffer
  9626  		(*Gz_state)(unsafe.Pointer(state)).Fout = libc.Xmalloc(tls, (*Gz_state)(unsafe.Pointer(state)).Fwant)
  9627  		if (*Gz_state)(unsafe.Pointer(state)).Fout == (uintptr(0)) {
  9628  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  9629  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  9630  			return -1
  9631  		}
  9632  
  9633  		// allocate deflate memory, set up for gzip compression
  9634  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = Alloc_func(Z_NULL)
  9635  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = Free_func(Z_NULL)
  9636  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = Voidpf(Z_NULL)
  9637  		ret = XdeflateInit2_(tls, strm, (*Gz_state)(unsafe.Pointer(state)).Flevel, Z_DEFLATED, (MAX_WBITS + 16), DEF_MEM_LEVEL, (*Gz_state)(unsafe.Pointer(state)).Fstrategy, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{})))
  9638  		if ret != Z_OK {
  9639  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
  9640  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
  9641  			Xgz_error(tls, state, -4, ts+87 /* "out of memory" */)
  9642  			return -1
  9643  		}
  9644  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = uintptr(0)
  9645  	}
  9646  
  9647  	// mark state as initialized
  9648  	(*Gz_state)(unsafe.Pointer(state)).Fsize = (*Gz_state)(unsafe.Pointer(state)).Fwant
  9649  
  9650  	// initialize write buffer if compressing
  9651  	if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) {
  9652  		(*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize
  9653  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout
  9654  		(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
  9655  	}
  9656  	return 0
  9657  }
  9658  
  9659  // Compress whatever is at avail_in and next_in and write to the output file.
  9660  //    Return -1 if there is an error writing to the output file or if gz_init()
  9661  //    fails to allocate memory, otherwise 0.  flush is assumed to be a valid
  9662  //    deflate() flush value.  If flush is Z_FINISH, then the deflate() state is
  9663  //    reset to start a new gzip stream.  If gz->direct is true, then simply write
  9664  //    to the output file without compressing, and ignore flush.
  9665  func gz_comp(tls *libc.TLS, state Gz_statep, flush int32) int32 { /* gzwrite.c:73:11: */
  9666  	var ret int32
  9667  	var writ int32
  9668  	var have uint32
  9669  	var put uint32
  9670  	var max uint32 = ((uint32(libc.Uint32(libc.Uint32FromInt32(-1))) >> 2) + uint32(1))
  9671  	var strm Z_streamp = (state + 100 /* &.strm */)
  9672  
  9673  	// allocate memory if this is the first time through
  9674  	if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) {
  9675  		return -1
  9676  	}
  9677  
  9678  	// write directly if requested
  9679  	if (*Gz_state)(unsafe.Pointer(state)).Fdirect != 0 {
  9680  		for (*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0 {
  9681  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_in > max {
  9682  				put = max
  9683  			} else {
  9684  				put = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
  9685  			}
  9686  			writ = libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, put)
  9687  			if writ < 0 {
  9688  				Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls)))))
  9689  				return -1
  9690  			}
  9691  			*(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) -= (uint32(writ))
  9692  			*(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(writ))
  9693  		}
  9694  		return 0
  9695  	}
  9696  
  9697  	// run deflate() on provided input until it produces no more output
  9698  	ret = Z_OK
  9699  	for ok := true; ok; ok = have != 0 {
  9700  		// write out current buffer contents if full, or if flushing, but if
  9701  		//            doing Z_FINISH then don't write until we get to Z_STREAM_END
  9702  		if ((*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0)) || ((flush != Z_NO_FLUSH) && ((flush != Z_FINISH) || (ret == Z_STREAM_END))) {
  9703  			for (*Z_stream)(unsafe.Pointer(strm)).Fnext_out > (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext {
  9704  				if ((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int32((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1) > int32(max) {
  9705  					put = max
  9706  				} else {
  9707  					put = (uint32((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_out) - int32((*Gz_state)(unsafe.Pointer(state)).Fx.Fnext)) / 1))
  9708  				}
  9709  				writ = libc.Xwrite(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd, (*Gz_state)(unsafe.Pointer(state)).Fx.Fnext, put)
  9710  				if writ < 0 {
  9711  					Xgz_error(tls, state, -1, libc.Xstrerror(tls, *(*int32)(unsafe.Pointer(libc.X__errno_location(tls)))))
  9712  					return -1
  9713  				}
  9714  				*(*uintptr)(unsafe.Pointer(state /* &.x */ + 4 /* &.next */)) += (uintptr(writ))
  9715  			}
  9716  			if (*Z_stream)(unsafe.Pointer(strm)).Favail_out == UInt(0) {
  9717  				(*Z_stream)(unsafe.Pointer(strm)).Favail_out = (*Gz_state)(unsafe.Pointer(state)).Fsize
  9718  				(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = (*Gz_state)(unsafe.Pointer(state)).Fout
  9719  				(*Gz_state)(unsafe.Pointer(state)).Fx.Fnext = (*Gz_state)(unsafe.Pointer(state)).Fout
  9720  			}
  9721  		}
  9722  
  9723  		// compress
  9724  		have = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
  9725  		ret = Xdeflate(tls, strm, flush)
  9726  		if ret == (-2) {
  9727  			Xgz_error(tls, state, -2,
  9728  				ts+291 /* "internal error: ..." */)
  9729  			return -1
  9730  		}
  9731  		have = have - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out)
  9732  	}
  9733  
  9734  	// if that completed a deflate stream, allow another to start
  9735  	if flush == Z_FINISH {
  9736  		XdeflateReset(tls, strm)
  9737  	}
  9738  
  9739  	// all done, no errors
  9740  	return 0
  9741  }
  9742  
  9743  // Compress len zeros to output.  Return -1 on a write error or memory
  9744  //    allocation failure by gz_comp(), or 0 on success.
  9745  func gz_zero(tls *libc.TLS, state Gz_statep, len Off64_t) int32 { /* gzwrite.c:145:11: */
  9746  	var first int32
  9747  	var n uint32
  9748  	var strm Z_streamp = (state + 100 /* &.strm */)
  9749  
  9750  	// consume whatever's left in the input buffer
  9751  	if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) {
  9752  		return -1
  9753  	}
  9754  
  9755  	// compress len zeros (len guaranteed > 0)
  9756  	first = 1
  9757  	for len != 0 {
  9758  		if ((uint32(unsafe.Sizeof(int32(0))) == uint32(unsafe.Sizeof(Off64_t(0)))) && (((*Gz_state)(unsafe.Pointer(state)).Fsize) > uint32(0x7fffffff))) || (Off64_t((*Gz_state)(unsafe.Pointer(state)).Fsize) > len) {
  9759  			n = uint32(len)
  9760  		} else {
  9761  			n = (*Gz_state)(unsafe.Pointer(state)).Fsize
  9762  		}
  9763  		if first != 0 {
  9764  			libc.Xmemset(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, 0, n)
  9765  			first = 0
  9766  		}
  9767  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = n
  9768  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  9769  		*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n))
  9770  		if gz_comp(tls, state, Z_NO_FLUSH) == -1 {
  9771  			return -1
  9772  		}
  9773  		len = len - (Off64_t(n))
  9774  	}
  9775  	return 0
  9776  }
  9777  
  9778  // Write len bytes from buf to file.  Return the number of bytes written.  If
  9779  //    the returned value is less than len, then there was an error.
  9780  func gz_write(tls *libc.TLS, state Gz_statep, buf Voidpc, len Z_size_t) Z_size_t { /* gzwrite.c:178:16: */
  9781  	var put Z_size_t = len
  9782  
  9783  	// if len is zero, avoid unnecessary operations
  9784  	if len == Z_size_t(0) {
  9785  		return Z_size_t(0)
  9786  	}
  9787  
  9788  	// allocate memory if this is the first time through
  9789  	if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) {
  9790  		return Z_size_t(0)
  9791  	}
  9792  
  9793  	// check for seek request
  9794  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  9795  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  9796  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  9797  			return Z_size_t(0)
  9798  		}
  9799  	}
  9800  
  9801  	// for small len, copy to input buffer, otherwise compress directly
  9802  	if len < (*Gz_state)(unsafe.Pointer(state)).Fsize {
  9803  		// copy to input buffer, compress when full
  9804  		for ok := true; ok; ok = len != 0 {
  9805  			var have uint32
  9806  			var copy uint32
  9807  
  9808  			if (*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in == UInt(0) {
  9809  				(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  9810  			}
  9811  			have = (uint32(((int32((*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in + uintptr((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in))) - int32((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))
  9812  			copy = ((*Gz_state)(unsafe.Pointer(state)).Fsize - have)
  9813  			if copy > len {
  9814  				copy = len
  9815  			}
  9816  			libc.Xmemcpy(tls, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have)), buf, copy)
  9817  			*(*UInt)(unsafe.Pointer(state + 100 /* &.strm */ + 4 /* &.avail_in */)) += (copy)
  9818  			*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(copy))
  9819  			buf = (buf + uintptr(copy))
  9820  			len = len - (copy)
  9821  			if (len != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) {
  9822  				return Z_size_t(0)
  9823  			}
  9824  		}
  9825  	} else {
  9826  		// consume whatever's left in the input buffer
  9827  		if ((*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in != 0) && (gz_comp(tls, state, Z_NO_FLUSH) == -1) {
  9828  			return Z_size_t(0)
  9829  		}
  9830  
  9831  		// directly compress user buffer to file
  9832  		(*Gz_state)(unsafe.Pointer(state)).Fstrm.Fnext_in = buf
  9833  		for ok1 := true; ok1; ok1 = len != 0 {
  9834  			var n uint32 = libc.Uint32(libc.Uint32FromInt32(-1))
  9835  			if n > len {
  9836  				n = len
  9837  			}
  9838  			(*Gz_state)(unsafe.Pointer(state)).Fstrm.Favail_in = n
  9839  			*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(n))
  9840  			if gz_comp(tls, state, Z_NO_FLUSH) == -1 {
  9841  				return Z_size_t(0)
  9842  			}
  9843  			len = len - (n)
  9844  		}
  9845  	}
  9846  
  9847  	// input was all buffered or compressed
  9848  	return put
  9849  }
  9850  
  9851  // -- see zlib.h --
  9852  func Xgzwrite(tls *libc.TLS, file GzFile, buf Voidpc, len uint32) int32 { /* gzwrite.c:246:13: */
  9853  	var state Gz_statep
  9854  
  9855  	// get internal structure
  9856  	if file == (uintptr(0)) {
  9857  		return 0
  9858  	}
  9859  	state = file
  9860  
  9861  	// check that we're writing and that there's no error
  9862  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  9863  		return 0
  9864  	}
  9865  
  9866  	// since an int is returned, make sure len fits in one, otherwise return
  9867  	//        with an error (this avoids a flaw in the interface)
  9868  	if int32(len) < 0 {
  9869  		Xgz_error(tls, state, -3, ts+330 /* "requested length..." */)
  9870  		return 0
  9871  	}
  9872  
  9873  	// write len bytes from buf (the return value will fit in an int)
  9874  	return int32(gz_write(tls, state, buf, len))
  9875  }
  9876  
  9877  // -- see zlib.h --
  9878  func Xgzfwrite(tls *libc.TLS, buf Voidpc, size Z_size_t, nitems Z_size_t, file GzFile) Z_size_t { /* gzwrite.c:274:18: */
  9879  	var len Z_size_t
  9880  	var state Gz_statep
  9881  
  9882  	// get internal structure
  9883  	if file == (uintptr(0)) {
  9884  		return Z_size_t(0)
  9885  	}
  9886  	state = file
  9887  
  9888  	// check that we're writing and that there's no error
  9889  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  9890  		return Z_size_t(0)
  9891  	}
  9892  
  9893  	// compute bytes to read -- error on overflow
  9894  	len = (nitems * size)
  9895  	if (size != 0) && ((len / size) != nitems) {
  9896  		Xgz_error(tls, state, -2, ts+227 /* "request does not..." */)
  9897  		return Z_size_t(0)
  9898  	}
  9899  
  9900  	// write len bytes to buf, return the number of full items written
  9901  	if len != 0 {
  9902  		return (gz_write(tls, state, buf, len) / size)
  9903  	}
  9904  	return uint32(0)
  9905  }
  9906  
  9907  // -- see zlib.h --
  9908  func Xgzputc(tls *libc.TLS, file GzFile, c int32) int32 { /* gzwrite.c:304:13: */
  9909  	bp := tls.Alloc(1)
  9910  	defer tls.Free(1)
  9911  
  9912  	var have uint32
  9913  	// var buf [1]uint8 at bp, 1
  9914  
  9915  	var state Gz_statep
  9916  	var strm Z_streamp
  9917  
  9918  	// get internal structure
  9919  	if file == (uintptr(0)) {
  9920  		return -1
  9921  	}
  9922  	state = file
  9923  	strm = (state + 100 /* &.strm */)
  9924  
  9925  	// check that we're writing and that there's no error
  9926  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  9927  		return -1
  9928  	}
  9929  
  9930  	// check for seek request
  9931  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
  9932  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
  9933  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
  9934  			return -1
  9935  		}
  9936  	}
  9937  
  9938  	// try writing to input buffer for speed (state->size == 0 if buffer not
  9939  	//        initialized)
  9940  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
  9941  		if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
  9942  			(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
  9943  		}
  9944  		have = (uint32(((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_in + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in))) - int32((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))
  9945  		if have < (*Gz_state)(unsafe.Pointer(state)).Fsize {
  9946  			*(*uint8)(unsafe.Pointer((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(have))) = uint8(c)
  9947  			(*Z_stream)(unsafe.Pointer(strm)).Favail_in++
  9948  			(*Gz_state)(unsafe.Pointer(state)).Fx.Fpos++
  9949  			return (c & 0xff)
  9950  		}
  9951  	}
  9952  
  9953  	// no room in buffer or not initialized, use gz_write()
  9954  	*(*uint8)(unsafe.Pointer(bp /* &buf[0] */)) = uint8(c)
  9955  	if gz_write(tls, state, bp /* &buf[0] */, uint32(1)) != Z_size_t(1) {
  9956  		return -1
  9957  	}
  9958  	return (c & 0xff)
  9959  }
  9960  
  9961  // -- see zlib.h --
  9962  func Xgzputs(tls *libc.TLS, file GzFile, str uintptr) int32 { /* gzwrite.c:352:13: */
  9963  	var ret int32
  9964  	var len Z_size_t
  9965  	var state Gz_statep
  9966  
  9967  	// get internal structure
  9968  	if file == (uintptr(0)) {
  9969  		return -1
  9970  	}
  9971  	state = file
  9972  
  9973  	// check that we're writing and that there's no error
  9974  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
  9975  		return -1
  9976  	}
  9977  
  9978  	// write string
  9979  	len = libc.Xstrlen(tls, str)
  9980  	ret = int32(gz_write(tls, state, str, len))
  9981  	if (ret == 0) && (len != Z_size_t(0)) {
  9982  		return -1
  9983  	}
  9984  	return ret
  9985  }
  9986  
  9987  // Copyright (C) 1989-2020 Free Software Foundation, Inc.
  9988  //
  9989  // This file is part of GCC.
  9990  //
  9991  // GCC is free software; you can redistribute it and/or modify
  9992  // it under the terms of the GNU General Public License as published by
  9993  // the Free Software Foundation; either version 3, or (at your option)
  9994  // any later version.
  9995  //
  9996  // GCC is distributed in the hope that it will be useful,
  9997  // but WITHOUT ANY WARRANTY; without even the implied warranty of
  9998  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  9999  // GNU General Public License for more details.
 10000  //
 10001  // Under Section 7 of GPL version 3, you are granted additional
 10002  // permissions described in the GCC Runtime Library Exception, version
 10003  // 3.1, as published by the Free Software Foundation.
 10004  //
 10005  // You should have received a copy of the GNU General Public License and
 10006  // a copy of the GCC Runtime Library Exception along with this program;
 10007  // see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 10008  // <http://www.gnu.org/licenses/>.
 10009  
 10010  // ISO C Standard:  7.15  Variable arguments  <stdarg.h>
 10011  
 10012  // -- see zlib.h --
 10013  func Xgzvprintf(tls *libc.TLS, file GzFile, format uintptr, va Va_list) int32 { /* gzwrite.c:379:15: */
 10014  	var len int32
 10015  	var left uint32
 10016  	var next uintptr
 10017  	var state Gz_statep
 10018  	var strm Z_streamp
 10019  
 10020  	// get internal structure
 10021  	if file == (uintptr(0)) {
 10022  		return -2
 10023  	}
 10024  	state = file
 10025  	strm = (state + 100 /* &.strm */)
 10026  
 10027  	// check that we're writing and that there's no error
 10028  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
 10029  		return -2
 10030  	}
 10031  
 10032  	// make sure we have some buffer space
 10033  	if ((*Gz_state)(unsafe.Pointer(state)).Fsize == uint32(0)) && (gz_init(tls, state) == -1) {
 10034  		return (*Gz_state)(unsafe.Pointer(state)).Ferr
 10035  	}
 10036  
 10037  	// check for seek request
 10038  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
 10039  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
 10040  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
 10041  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
 10042  		}
 10043  	}
 10044  
 10045  	// do the printf() into the input buffer, put length in len -- the input
 10046  	//        buffer is double-sized just for this function, so there is guaranteed to
 10047  	//        be state->size bytes available after the current contents
 10048  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0) {
 10049  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
 10050  	}
 10051  	next = (((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr(((int32((*Z_stream)(unsafe.Pointer(strm)).Fnext_in) - int32((*Gz_state)(unsafe.Pointer(state)).Fin)) / 1))) + uintptr((*Z_stream)(unsafe.Pointer(strm)).Favail_in))
 10052  	*(*uint8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1))))) = uint8(0)
 10053  	len = libc.Xvsnprintf(tls, next, (*Gz_state)(unsafe.Pointer(state)).Fsize, format, va)
 10054  
 10055  	// check that printf() results fit in buffer
 10056  	if ((len == 0) || (uint32(len) >= (*Gz_state)(unsafe.Pointer(state)).Fsize)) || (int32(*(*uint8)(unsafe.Pointer(next + uintptr(((*Gz_state)(unsafe.Pointer(state)).Fsize - uint32(1)))))) != 0) {
 10057  		return 0
 10058  	}
 10059  
 10060  	// update buffer and position, compress first half if past that
 10061  	*(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) += (uint32(len))
 10062  	*(*Off64_t)(unsafe.Pointer(state /* &.x */ + 8 /* &.pos */)) += (Off64_t(len))
 10063  	if (*Z_stream)(unsafe.Pointer(strm)).Favail_in >= (*Gz_state)(unsafe.Pointer(state)).Fsize {
 10064  		left = ((*Z_stream)(unsafe.Pointer(strm)).Favail_in - (*Gz_state)(unsafe.Pointer(state)).Fsize)
 10065  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = (*Gz_state)(unsafe.Pointer(state)).Fsize
 10066  		if gz_comp(tls, state, Z_NO_FLUSH) == -1 {
 10067  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
 10068  		}
 10069  		libc.Xmemcpy(tls, (*Gz_state)(unsafe.Pointer(state)).Fin, ((*Gz_state)(unsafe.Pointer(state)).Fin + uintptr((*Gz_state)(unsafe.Pointer(state)).Fsize)), left)
 10070  		(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = (*Gz_state)(unsafe.Pointer(state)).Fin
 10071  		(*Z_stream)(unsafe.Pointer(strm)).Favail_in = left
 10072  	}
 10073  	return len
 10074  }
 10075  
 10076  func Xgzprintf(tls *libc.TLS, file GzFile, format uintptr, va uintptr) int32 { /* gzwrite.c:451:15: */
 10077  	var va1 Va_list
 10078  	_ = va1
 10079  	var ret int32
 10080  
 10081  	va1 = va
 10082  	ret = Xgzvprintf(tls, file, format, va1)
 10083  	_ = va1
 10084  	return ret
 10085  }
 10086  
 10087  // -- see zlib.h --
 10088  func Xgzflush(tls *libc.TLS, file GzFile, flush int32) int32 { /* gzwrite.c:553:13: */
 10089  	var state Gz_statep
 10090  
 10091  	// get internal structure
 10092  	if file == (uintptr(0)) {
 10093  		return -2
 10094  	}
 10095  	state = file
 10096  
 10097  	// check that we're writing and that there's no error
 10098  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
 10099  		return -2
 10100  	}
 10101  
 10102  	// check flush parameter
 10103  	if (flush < 0) || (flush > Z_FINISH) {
 10104  		return -2
 10105  	}
 10106  
 10107  	// check for seek request
 10108  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
 10109  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
 10110  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
 10111  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
 10112  		}
 10113  	}
 10114  
 10115  	// compress remaining data with requested flush
 10116  	gz_comp(tls, state, flush)
 10117  	return (*Gz_state)(unsafe.Pointer(state)).Ferr
 10118  }
 10119  
 10120  // -- see zlib.h --
 10121  func Xgzsetparams(tls *libc.TLS, file GzFile, level int32, strategy int32) int32 { /* gzwrite.c:585:13: */
 10122  	var state Gz_statep
 10123  	var strm Z_streamp
 10124  
 10125  	// get internal structure
 10126  	if file == (uintptr(0)) {
 10127  		return -2
 10128  	}
 10129  	state = file
 10130  	strm = (state + 100 /* &.strm */)
 10131  
 10132  	// check that we're writing and that there's no error
 10133  	if ((*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE) || ((*Gz_state)(unsafe.Pointer(state)).Ferr != Z_OK) {
 10134  		return -2
 10135  	}
 10136  
 10137  	// if no change is requested, then do nothing
 10138  	if (level == (*Gz_state)(unsafe.Pointer(state)).Flevel) && (strategy == (*Gz_state)(unsafe.Pointer(state)).Fstrategy) {
 10139  		return Z_OK
 10140  	}
 10141  
 10142  	// check for seek request
 10143  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
 10144  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
 10145  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
 10146  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
 10147  		}
 10148  	}
 10149  
 10150  	// change compression parameters for subsequent input
 10151  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
 10152  		// flush previous input with previous parameters before changing
 10153  		if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != 0) && (gz_comp(tls, state, Z_BLOCK) == -1) {
 10154  			return (*Gz_state)(unsafe.Pointer(state)).Ferr
 10155  		}
 10156  		XdeflateParams(tls, strm, level, strategy)
 10157  	}
 10158  	(*Gz_state)(unsafe.Pointer(state)).Flevel = level
 10159  	(*Gz_state)(unsafe.Pointer(state)).Fstrategy = strategy
 10160  	return Z_OK
 10161  }
 10162  
 10163  // -- see zlib.h --
 10164  func Xgzclose_w(tls *libc.TLS, file GzFile) int32 { /* gzwrite.c:627:13: */
 10165  	var ret int32 = Z_OK
 10166  	var state Gz_statep
 10167  
 10168  	// get internal structure
 10169  	if file == (uintptr(0)) {
 10170  		return -2
 10171  	}
 10172  	state = file
 10173  
 10174  	// check that we're writing
 10175  	if (*Gz_state)(unsafe.Pointer(state)).Fmode != GZ_WRITE {
 10176  		return -2
 10177  	}
 10178  
 10179  	// check for seek request
 10180  	if (*Gz_state)(unsafe.Pointer(state)).Fseek != 0 {
 10181  		(*Gz_state)(unsafe.Pointer(state)).Fseek = 0
 10182  		if gz_zero(tls, state, (*Gz_state)(unsafe.Pointer(state)).Fskip) == -1 {
 10183  			ret = (*Gz_state)(unsafe.Pointer(state)).Ferr
 10184  		}
 10185  	}
 10186  
 10187  	// flush, free memory, and close file
 10188  	if gz_comp(tls, state, Z_FINISH) == -1 {
 10189  		ret = (*Gz_state)(unsafe.Pointer(state)).Ferr
 10190  	}
 10191  	if (*Gz_state)(unsafe.Pointer(state)).Fsize != 0 {
 10192  		if !((*Gz_state)(unsafe.Pointer(state)).Fdirect != 0) {
 10193  			XdeflateEnd(tls, (state + 100 /* &.strm */))
 10194  			libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fout)
 10195  		}
 10196  		libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fin)
 10197  	}
 10198  	Xgz_error(tls, state, Z_OK, uintptr(0))
 10199  	libc.Xfree(tls, (*Gz_state)(unsafe.Pointer(state)).Fpath)
 10200  	if libc.Xclose(tls, (*Gz_state)(unsafe.Pointer(state)).Ffd) == -1 {
 10201  		ret = -1
 10202  	}
 10203  	libc.Xfree(tls, state)
 10204  	return ret
 10205  }
 10206  
 10207  type Ino_t2 = X__ino64_t /* types.h:49:19 */
 10208  
 10209  type Off_t2 = X__off64_t /* types.h:87:19 */
 10210  
 10211  // Types from the Large File Support interface.
 10212  type Blkcnt_t2 = X__blkcnt64_t     /* types.h:205:22 */ // Type to count number of disk blocks.
 10213  type Fsblkcnt_t2 = X__fsblkcnt64_t /* types.h:209:24 */ // Type to count file system blocks.
 10214  type Fsfilcnt_t2 = X__fsfilcnt64_t /* types.h:213:24 */
 10215  
 10216  // Reverse the bytes in a 32-bit value
 10217  
 10218  // inftrees.h -- header to use inftrees.c
 10219  // Copyright (C) 1995-2005, 2010 Mark Adler
 10220  // For conditions of distribution and use, see copyright notice in zlib.h
 10221  
 10222  // WARNING: this file should *not* be used by applications. It is
 10223  //    part of the implementation of the compression library and is
 10224  //    subject to change. Applications should only use zlib.h.
 10225  //
 10226  
 10227  // Structure for decoding tables.  Each entry provides either the
 10228  //    information needed to do the operation requested by the code that
 10229  //    indexed that table entry, or it provides a pointer to another
 10230  //    table that indexes more bits of the code.  op indicates whether
 10231  //    the entry is a pointer to another table, a literal, a length or
 10232  //    distance, an end-of-block, or an invalid code.  For a table
 10233  //    pointer, the low four bits of op is the number of index bits of
 10234  //    that table.  For a length or distance, the low four bits of op
 10235  //    is the number of extra bits to get after the code.  bits is
 10236  //    the number of bits in this code or part of the code to drop off
 10237  //    of the bit buffer.  val is the actual byte to output in the case
 10238  //    of a literal, the base length or distance, or the offset from
 10239  //    the current table to the next table.  Each entry is four bytes.
 10240  type Code = struct {
 10241  	Fop   uint8
 10242  	Fbits uint8
 10243  	Fval  uint16
 10244  } /* inftrees.h:28:3 */
 10245  
 10246  // op values as set by inflate_table():
 10247  //     00000000 - literal
 10248  //     0000tttt - table link, tttt != 0 is the number of table index bits
 10249  //     0001eeee - length or distance, eeee is the number of extra bits
 10250  //     01100000 - end of block
 10251  //     01000000 - invalid code
 10252  //
 10253  
 10254  // Maximum size of the dynamic table.  The maximum number of code structures is
 10255  //    1444, which is the sum of 852 for literal/length codes and 592 for distance
 10256  //    codes.  These values were found by exhaustive searches using the program
 10257  //    examples/enough.c found in the zlib distribtution.  The arguments to that
 10258  //    program are the number of symbols, the initial root table size, and the
 10259  //    maximum bit length of a code.  "enough 286 9 15" for literal/length codes
 10260  //    returns returns 852, and "enough 30 6 15" for distance codes returns 592.
 10261  //    The initial root table size (9 or 6) is found in the fifth argument of the
 10262  //    inflate_table() calls in inflate.c and infback.c.  If the root table size is
 10263  //    changed, then these maximum sizes would be need to be recalculated and
 10264  //    updated.
 10265  
 10266  // Type of code to build for inflate_table()
 10267  type Codetype = uint32 /* inftrees.h:58:3 */
 10268  // inflate.h -- internal inflate state definition
 10269  // Copyright (C) 1995-2016 Mark Adler
 10270  // For conditions of distribution and use, see copyright notice in zlib.h
 10271  
 10272  // WARNING: this file should *not* be used by applications. It is
 10273  //    part of the implementation of the compression library and is
 10274  //    subject to change. Applications should only use zlib.h.
 10275  //
 10276  
 10277  // define NO_GZIP when compiling if you want to disable gzip header and
 10278  //    trailer decoding by inflate().  NO_GZIP would be used to avoid linking in
 10279  //    the crc code when it is not needed.  For shared libraries, gzip decoding
 10280  //    should be left enabled.
 10281  
 10282  // Possible inflate modes between inflate() calls
 10283  type Inflate_mode = uint32 /* inflate.h:53:3 */
 10284  
 10285  //
 10286  //     State transitions between above modes -
 10287  //
 10288  //     (most modes can go to BAD or MEM on error -- not shown for clarity)
 10289  //
 10290  //     Process header:
 10291  //         HEAD -> (gzip) or (zlib) or (raw)
 10292  //         (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT ->
 10293  //                   HCRC -> TYPE
 10294  //         (zlib) -> DICTID or TYPE
 10295  //         DICTID -> DICT -> TYPE
 10296  //         (raw) -> TYPEDO
 10297  //     Read deflate blocks:
 10298  //             TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK
 10299  //             STORED -> COPY_ -> COPY -> TYPE
 10300  //             TABLE -> LENLENS -> CODELENS -> LEN_
 10301  //             LEN_ -> LEN
 10302  //     Read deflate codes in fixed or dynamic block:
 10303  //                 LEN -> LENEXT or LIT or TYPE
 10304  //                 LENEXT -> DIST -> DISTEXT -> MATCH -> LEN
 10305  //                 LIT -> LEN
 10306  //     Process trailer:
 10307  //         CHECK -> LENGTH -> DONE
 10308  //
 10309  
 10310  // State maintained between inflate() calls -- approximately 7K bytes, not
 10311  //    including the allocated sliding window, which is up to 32K bytes.
 10312  type Inflate_state = struct {
 10313  	Fstrm     Z_streamp
 10314  	Fmode     Inflate_mode
 10315  	Flast     int32
 10316  	Fwrap     int32
 10317  	Fhavedict int32
 10318  	Fflags    int32
 10319  	Fdmax     uint32
 10320  	Fcheck    uint32
 10321  	Ftotal    uint32
 10322  	Fhead     Gz_headerp
 10323  	Fwbits    uint32
 10324  	Fwsize    uint32
 10325  	Fwhave    uint32
 10326  	Fwnext    uint32
 10327  	Fwindow   uintptr
 10328  	Fhold     uint32
 10329  	Fbits     uint32
 10330  	Flength   uint32
 10331  	Foffset   uint32
 10332  	Fextra    uint32
 10333  	Flencode  uintptr
 10334  	Fdistcode uintptr
 10335  	Flenbits  uint32
 10336  	Fdistbits uint32
 10337  	Fncode    uint32
 10338  	Fnlen     uint32
 10339  	Fndist    uint32
 10340  	Fhave     uint32
 10341  	Fnext     uintptr
 10342  	Flens     [320]uint16
 10343  	Fwork     [288]uint16
 10344  	Fcodes    [1444]Code
 10345  	Fsane     int32
 10346  	Fback     int32
 10347  	Fwas      uint32
 10348  } /* inflate.h:82:1 */
 10349  
 10350  //
 10351  //    strm provides memory allocation functions in zalloc and zfree, or
 10352  //    Z_NULL to use the library memory allocation functions.
 10353  //
 10354  //    windowBits is in the range 8..15, and window is a user-supplied
 10355  //    window and output buffer that is 2**windowBits bytes.
 10356  //
 10357  func XinflateBackInit_(tls *libc.TLS, strm Z_streamp, windowBits int32, window uintptr, version uintptr, stream_size int32) int32 { /* infback.c:28:13: */
 10358  	var state uintptr
 10359  
 10360  	if ((version == uintptr(Z_NULL)) || (int32(*(*uint8)(unsafe.Pointer(version))) != int32(*(*uint8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) {
 10361  		return -6
 10362  	}
 10363  	if (((strm == uintptr(Z_NULL)) || (window == uintptr(Z_NULL))) || (windowBits < 8)) || (windowBits > 15) {
 10364  		return -2
 10365  	}
 10366  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error
 10367  	if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) {
 10368  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct {
 10369  			f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf
 10370  		}{Xzcalloc}))
 10371  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0)
 10372  	}
 10373  	if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) {
 10374  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct {
 10375  			f func(*libc.TLS, Voidpf, Voidpf)
 10376  		}{Xzcfree}))
 10377  	}
 10378  	state = (*struct {
 10379  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 10380  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{})))
 10381  	if state == uintptr(Z_NULL) {
 10382  		return -4
 10383  	}
 10384  
 10385  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = state
 10386  	(*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768
 10387  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = UInt(windowBits)
 10388  	(*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << windowBits)
 10389  	(*Inflate_state)(unsafe.Pointer(state)).Fwindow = window
 10390  	(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 10391  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
 10392  	return Z_OK
 10393  }
 10394  
 10395  //
 10396  //    Return state with length and distance decoding tables and index sizes set to
 10397  //    fixed code decoding.  Normally this returns fixed tables from inffixed.h.
 10398  //    If BUILDFIXED is defined, then instead this routine builds the tables the
 10399  //    first time it's called, and returns those tables the first time and
 10400  //    thereafter.  This reduces the size of the code by about 2K bytes, in
 10401  //    exchange for a little execution time.  However, BUILDFIXED should not be
 10402  //    used for threaded applications, since the rewriting of the tables and virgin
 10403  //    may not be thread-safe.
 10404  //
 10405  func fixedtables(tls *libc.TLS, state uintptr) { /* infback.c:82:12: */
 10406  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix))
 10407  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
 10408  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix))
 10409  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5)
 10410  }
 10411  
 10412  var lenfix = [512]Code{
 10413  	{Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)},
 10414  	{Fbits: uint8(9), Fval: uint16(192)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(160)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)},
 10415  	{Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(224)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(144)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)},
 10416  	{Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(208)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(176)},
 10417  	{Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, {Fbits: uint8(9), Fval: uint16(240)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)},
 10418  	{Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(200)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)},
 10419  	{Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(168)}, {Fbits: uint8(8), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(232)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)},
 10420  	{Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(152)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(216)},
 10421  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, {Fbits: uint8(9), Fval: uint16(184)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)},
 10422  	{Fbits: uint8(9), Fval: uint16(248)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)},
 10423  	{Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(196)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(164)}, {Fbits: uint8(8), Fval: uint16(2)},
 10424  	{Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(228)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(148)},
 10425  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, {Fbits: uint8(9), Fval: uint16(212)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)},
 10426  	{Fbits: uint8(9), Fval: uint16(180)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(244)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)},
 10427  	{Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(204)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)},
 10428  	{Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(172)}, {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(236)},
 10429  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, {Fbits: uint8(9), Fval: uint16(156)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)},
 10430  	{Fbits: uint8(9), Fval: uint16(220)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(188)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)},
 10431  	{Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(252)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)},
 10432  	{Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(194)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(162)},
 10433  	{Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, {Fbits: uint8(9), Fval: uint16(226)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)},
 10434  	{Fbits: uint8(9), Fval: uint16(146)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(210)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)},
 10435  	{Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(178)}, {Fbits: uint8(8), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(242)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)},
 10436  	{Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(202)},
 10437  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, {Fbits: uint8(9), Fval: uint16(170)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)},
 10438  	{Fbits: uint8(9), Fval: uint16(234)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(154)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)},
 10439  	{Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(218)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(186)}, {Fbits: uint8(8), Fval: uint16(13)},
 10440  	{Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(250)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)},
 10441  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, {Fbits: uint8(9), Fval: uint16(198)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)},
 10442  	{Fbits: uint8(9), Fval: uint16(166)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(230)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)},
 10443  	{Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(150)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(214)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)},
 10444  	{Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(182)}, {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(246)},
 10445  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)},
 10446  	{Fbits: uint8(9), Fval: uint16(206)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(174)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)},
 10447  	{Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(238)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(158)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)},
 10448  	{Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(222)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(190)},
 10449  	{Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, {Fbits: uint8(9), Fval: uint16(254)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)},
 10450  	{Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, {Fbits: uint8(9), Fval: uint16(193)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)},
 10451  	{Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(161)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(225)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)},
 10452  	{Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(145)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(209)},
 10453  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(177)}, {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)},
 10454  	{Fbits: uint8(9), Fval: uint16(241)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)},
 10455  	{Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(201)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(169)}, {Fbits: uint8(8), Fval: uint16(4)},
 10456  	{Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(233)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(153)},
 10457  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(217)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)},
 10458  	{Fbits: uint8(9), Fval: uint16(185)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, {Fbits: uint8(9), Fval: uint16(249)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)},
 10459  	{Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(197)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)},
 10460  	{Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(165)}, {Fbits: uint8(8), Fval: uint16(2)}, {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(229)},
 10461  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(149)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)},
 10462  	{Fbits: uint8(9), Fval: uint16(213)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, {Fbits: uint8(9), Fval: uint16(181)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)},
 10463  	{Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(245)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)},
 10464  	{Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(205)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(173)},
 10465  	{Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(237)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)},
 10466  	{Fbits: uint8(9), Fval: uint16(157)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, {Fbits: uint8(9), Fval: uint16(221)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)},
 10467  	{Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(189)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(253)}, {Fop: uint8(96), Fbits: uint8(7)},
 10468  	{Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(195)},
 10469  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(163)}, {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)},
 10470  	{Fbits: uint8(9), Fval: uint16(227)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, {Fbits: uint8(9), Fval: uint16(147)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)},
 10471  	{Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(211)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(179)}, {Fbits: uint8(8), Fval: uint16(9)},
 10472  	{Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(243)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)},
 10473  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(203)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)},
 10474  	{Fbits: uint8(9), Fval: uint16(171)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, {Fbits: uint8(9), Fval: uint16(235)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)},
 10475  	{Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(155)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(219)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)},
 10476  	{Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(187)}, {Fbits: uint8(8), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(251)},
 10477  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)},
 10478  	{Fbits: uint8(9), Fval: uint16(199)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, {Fbits: uint8(9), Fval: uint16(167)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)},
 10479  	{Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(231)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(151)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)},
 10480  	{Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(215)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(183)},
 10481  	{Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(247)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)},
 10482  	{Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, {Fbits: uint8(9), Fval: uint16(207)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)},
 10483  	{Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(175)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(239)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)},
 10484  	{Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(159)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(223)},
 10485  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(191)}, {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)},
 10486  	{Fbits: uint8(9), Fval: uint16(255)},
 10487  } /* inffixed.h:10:23 */
 10488  var distfix = [32]Code{
 10489  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(1)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(257)}, {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(17)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(4097)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(5)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1025)},
 10490  	{Fop: uint8(21), Fbits: uint8(5), Fval: uint16(65)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(16385)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(3)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(513)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(33)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(8193)},
 10491  	{Fop: uint8(18), Fbits: uint8(5), Fval: uint16(9)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(2049)}, {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(129)}, {Fop: uint8(64), Fbits: uint8(5)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(2)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(385)},
 10492  	{Fop: uint8(19), Fbits: uint8(5), Fval: uint16(25)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(6145)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(7)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1537)}, {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(97)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(24577)},
 10493  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(4)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(769)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(49)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(12289)}, {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(13)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(3073)},
 10494  	{Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)},
 10495  } /* inffixed.h:87:23 */
 10496  
 10497  // Macros for inflateBack():
 10498  
 10499  // Load returned state from inflate_fast()
 10500  
 10501  // Set state from registers for inflate_fast()
 10502  
 10503  // Clear the input bit accumulator
 10504  
 10505  // Assure that some input is available.  If input is requested, but denied,
 10506  //    then return a Z_BUF_ERROR from inflateBack().
 10507  
 10508  // Get a byte of input into the bit accumulator, or return from inflateBack()
 10509  //    with an error if there is no input available.
 10510  
 10511  // Assure that there are at least n bits in the bit accumulator.  If there is
 10512  //    not enough available input to do that, then return from inflateBack() with
 10513  //    an error.
 10514  
 10515  // Return the low n bits of the bit accumulator (n < 16)
 10516  
 10517  // Remove n bits from the bit accumulator
 10518  
 10519  // Remove zero to seven bits as needed to go to a byte boundary
 10520  
 10521  // Assure that some output space is available, by writing out the window
 10522  //    if it's full.  If the write fails, return from inflateBack() with a
 10523  //    Z_BUF_ERROR.
 10524  
 10525  //
 10526  //    strm provides the memory allocation functions and window buffer on input,
 10527  //    and provides information on the unused input on return.  For Z_DATA_ERROR
 10528  //    returns, strm will also provide an error message.
 10529  //
 10530  //    in() and out() are the call-back input and output functions.  When
 10531  //    inflateBack() needs more input, it calls in().  When inflateBack() has
 10532  //    filled the window with output, or when it completes with data in the
 10533  //    window, it calls out() to write out the data.  The application must not
 10534  //    change the provided input until in() is called again or inflateBack()
 10535  //    returns.  The application must not change the window/output buffer until
 10536  //    inflateBack() returns.
 10537  //
 10538  //    in() and out() are called with a descriptor parameter provided in the
 10539  //    inflateBack() call.  This parameter can be a structure that provides the
 10540  //    information required to do the read or write, as well as accumulated
 10541  //    information on the input and output such as totals and check values.
 10542  //
 10543  //    in() should return zero on failure.  out() should return non-zero on
 10544  //    failure.  If either in() or out() fails, than inflateBack() returns a
 10545  //    Z_BUF_ERROR.  strm->next_in can be checked for Z_NULL to see whether it
 10546  //    was in() or out() that caused in the error.  Otherwise,  inflateBack()
 10547  //    returns Z_STREAM_END on success, Z_DATA_ERROR for an deflate format
 10548  //    error, or Z_MEM_ERROR if it could not allocate memory for the state.
 10549  //    inflateBack() can also return Z_STREAM_ERROR if the input parameters
 10550  //    are not correct, i.e. strm is Z_NULL or the state was not initialized.
 10551  //
 10552  func XinflateBack(tls *libc.TLS, strm Z_streamp, in In_func, in_desc uintptr, out Out_func, out_desc uintptr) int32 { /* infback.c:250:13: */
 10553  	bp := tls.Alloc(4)
 10554  	defer tls.Free(4)
 10555  
 10556  	var state uintptr
 10557  	// var next uintptr at bp, 4
 10558  	// next input
 10559  	var put uintptr // next output
 10560  	var have uint32
 10561  	var left uint32  // available input and output
 10562  	var hold uint32  // bit buffer
 10563  	var bits uint32  // bits in bit buffer
 10564  	var copy uint32  // number of stored or match bytes to copy
 10565  	var from uintptr // where to copy match bytes from
 10566  	var here Code    // current decoding table entry
 10567  	var last Code    // parent table entry
 10568  	var len uint32   // length to copy for repeats, bits to drop
 10569  	var ret int32
 10570  
 10571  	// Check that the strm exists and that the state was initialized
 10572  	if !((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) {
 10573  		goto __1
 10574  	}
 10575  	return -2
 10576  __1:
 10577  	;
 10578  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 10579  
 10580  	// Reset the state
 10581  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL)
 10582  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 10583  	(*Inflate_state)(unsafe.Pointer(state)).Flast = 0
 10584  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
 10585  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 10586  	if *(*uintptr)(unsafe.Pointer(bp /* next */)) != uintptr(Z_NULL) {
 10587  		have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
 10588  	} else {
 10589  		have = uint32(0)
 10590  	}
 10591  	hold = uint32(0)
 10592  	bits = uint32(0)
 10593  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 10594  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 10595  
 10596  	// Inflate until end of block marked as last
 10597  __2:
 10598  	switch (*Inflate_state)(unsafe.Pointer(state)).Fmode {
 10599  	case TYPE:
 10600  		goto __6
 10601  
 10602  	case STORED:
 10603  		goto __7
 10604  
 10605  	case TABLE:
 10606  		goto __8
 10607  
 10608  	case LEN:
 10609  		goto __9
 10610  
 10611  	case DONE:
 10612  		goto __10
 10613  
 10614  	case BAD:
 10615  		goto __11
 10616  
 10617  	default:
 10618  		goto __12
 10619  	}
 10620  	goto __5
 10621  __6:
 10622  	// determine and dispatch block type
 10623  	if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) {
 10624  		goto __13
 10625  	}
 10626  __14:
 10627  	hold >>= (bits & uint32(7))
 10628  	bits = bits - (bits & uint32(7))
 10629  	goto __15
 10630  __15:
 10631  	if 0 != 0 {
 10632  		goto __14
 10633  	}
 10634  	goto __16
 10635  __16:
 10636  	;
 10637  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE
 10638  	goto __5
 10639  __13:
 10640  	;
 10641  __17:
 10642  __20:
 10643  	if !(bits < (uint32(3))) {
 10644  		goto __21
 10645  	}
 10646  __22:
 10647  __25:
 10648  	if !(have == uint32(0)) {
 10649  		goto __28
 10650  	}
 10651  	have = (*struct {
 10652  		f func(*libc.TLS, uintptr, uintptr) uint32
 10653  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10654  	if !(have == uint32(0)) {
 10655  		goto __29
 10656  	}
 10657  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10658  	ret = -5
 10659  	goto inf_leave
 10660  __29:
 10661  	;
 10662  __28:
 10663  	;
 10664  	goto __26
 10665  __26:
 10666  	if 0 != 0 {
 10667  		goto __25
 10668  	}
 10669  	goto __27
 10670  __27:
 10671  	;
 10672  	have--
 10673  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10674  	bits = bits + (uint32(8))
 10675  	goto __23
 10676  __23:
 10677  	if 0 != 0 {
 10678  		goto __22
 10679  	}
 10680  	goto __24
 10681  __24:
 10682  	;
 10683  	goto __20
 10684  __21:
 10685  	;
 10686  	goto __18
 10687  __18:
 10688  	if 0 != 0 {
 10689  		goto __17
 10690  	}
 10691  	goto __19
 10692  __19:
 10693  	;
 10694  	(*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1))))
 10695  __30:
 10696  	hold >>= 1
 10697  	bits = bits - (uint32(1))
 10698  	goto __31
 10699  __31:
 10700  	if 0 != 0 {
 10701  		goto __30
 10702  	}
 10703  	goto __32
 10704  __32:
 10705  	;
 10706  	switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) {
 10707  	case uint32(0):
 10708  		goto __34
 10709  	case uint32(1):
 10710  		goto __35
 10711  	case uint32(2):
 10712  		goto __36
 10713  	case uint32(3):
 10714  		goto __37
 10715  	}
 10716  	goto __33
 10717  __34: // stored block
 10718  	;
 10719  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED
 10720  	goto __33
 10721  __35: // fixed block
 10722  	fixedtables(tls, state)
 10723  
 10724  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN // decode codes
 10725  	goto __33
 10726  __36: // dynamic block
 10727  	;
 10728  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE
 10729  	goto __33
 10730  __37:
 10731  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */
 10732  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10733  __33:
 10734  	;
 10735  __38:
 10736  	hold >>= 2
 10737  	bits = bits - (uint32(2))
 10738  	goto __39
 10739  __39:
 10740  	if 0 != 0 {
 10741  		goto __38
 10742  	}
 10743  	goto __40
 10744  __40:
 10745  	;
 10746  	goto __5
 10747  
 10748  __7:
 10749  	// get and verify stored block length
 10750  __41:
 10751  	hold >>= (bits & uint32(7))
 10752  	bits = bits - (bits & uint32(7))
 10753  	goto __42
 10754  __42:
 10755  	if 0 != 0 {
 10756  		goto __41
 10757  	}
 10758  	goto __43
 10759  __43:
 10760  	; // go to byte boundary
 10761  __44:
 10762  __47:
 10763  	if !(bits < (uint32(32))) {
 10764  		goto __48
 10765  	}
 10766  __49:
 10767  __52:
 10768  	if !(have == uint32(0)) {
 10769  		goto __55
 10770  	}
 10771  	have = (*struct {
 10772  		f func(*libc.TLS, uintptr, uintptr) uint32
 10773  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10774  	if !(have == uint32(0)) {
 10775  		goto __56
 10776  	}
 10777  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10778  	ret = -5
 10779  	goto inf_leave
 10780  __56:
 10781  	;
 10782  __55:
 10783  	;
 10784  	goto __53
 10785  __53:
 10786  	if 0 != 0 {
 10787  		goto __52
 10788  	}
 10789  	goto __54
 10790  __54:
 10791  	;
 10792  	have--
 10793  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10794  	bits = bits + (uint32(8))
 10795  	goto __50
 10796  __50:
 10797  	if 0 != 0 {
 10798  		goto __49
 10799  	}
 10800  	goto __51
 10801  __51:
 10802  	;
 10803  	goto __47
 10804  __48:
 10805  	;
 10806  	goto __45
 10807  __45:
 10808  	if 0 != 0 {
 10809  		goto __44
 10810  	}
 10811  	goto __46
 10812  __46:
 10813  	;
 10814  	if !((hold & uint32(0xffff)) != ((hold >> 16) ^ uint32(0xffff))) {
 10815  		goto __57
 10816  	}
 10817  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */
 10818  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 10819  	goto __5
 10820  __57:
 10821  	;
 10822  	(*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff))
 10823  
 10824  __58:
 10825  	hold = uint32(0)
 10826  	bits = uint32(0)
 10827  	goto __59
 10828  __59:
 10829  	if 0 != 0 {
 10830  		goto __58
 10831  	}
 10832  	goto __60
 10833  __60:
 10834  	;
 10835  
 10836  	// copy stored block from input to output
 10837  __61:
 10838  	if !((*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0)) {
 10839  		goto __62
 10840  	}
 10841  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 10842  __63:
 10843  	if !(have == uint32(0)) {
 10844  		goto __66
 10845  	}
 10846  	have = (*struct {
 10847  		f func(*libc.TLS, uintptr, uintptr) uint32
 10848  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10849  	if !(have == uint32(0)) {
 10850  		goto __67
 10851  	}
 10852  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10853  	ret = -5
 10854  	goto inf_leave
 10855  __67:
 10856  	;
 10857  __66:
 10858  	;
 10859  	goto __64
 10860  __64:
 10861  	if 0 != 0 {
 10862  		goto __63
 10863  	}
 10864  	goto __65
 10865  __65:
 10866  	;
 10867  __68:
 10868  	if !(left == uint32(0)) {
 10869  		goto __71
 10870  	}
 10871  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 10872  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 10873  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = left
 10874  	if !((*struct {
 10875  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
 10876  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) {
 10877  		goto __72
 10878  	}
 10879  	ret = -5
 10880  	goto inf_leave
 10881  __72:
 10882  	;
 10883  __71:
 10884  	;
 10885  	goto __69
 10886  __69:
 10887  	if 0 != 0 {
 10888  		goto __68
 10889  	}
 10890  	goto __70
 10891  __70:
 10892  	;
 10893  	if !(copy > have) {
 10894  		goto __73
 10895  	}
 10896  	copy = have
 10897  __73:
 10898  	;
 10899  	if !(copy > left) {
 10900  		goto __74
 10901  	}
 10902  	copy = left
 10903  __74:
 10904  	;
 10905  	libc.Xmemcpy(tls, put, *(*uintptr)(unsafe.Pointer(bp /* next */)), copy)
 10906  	have = have - (copy)
 10907  	*(*uintptr)(unsafe.Pointer(bp /* next */)) += uintptr(copy)
 10908  	left = left - (copy)
 10909  	put += uintptr(copy)
 10910  	*(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy)
 10911  	goto __61
 10912  __62:
 10913  	;
 10914  
 10915  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 10916  	goto __5
 10917  
 10918  __8:
 10919  	// get dynamic table entries descriptor
 10920  __75:
 10921  __78:
 10922  	if !(bits < (uint32(14))) {
 10923  		goto __79
 10924  	}
 10925  __80:
 10926  __83:
 10927  	if !(have == uint32(0)) {
 10928  		goto __86
 10929  	}
 10930  	have = (*struct {
 10931  		f func(*libc.TLS, uintptr, uintptr) uint32
 10932  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 10933  	if !(have == uint32(0)) {
 10934  		goto __87
 10935  	}
 10936  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 10937  	ret = -5
 10938  	goto inf_leave
 10939  __87:
 10940  	;
 10941  __86:
 10942  	;
 10943  	goto __84
 10944  __84:
 10945  	if 0 != 0 {
 10946  		goto __83
 10947  	}
 10948  	goto __85
 10949  __85:
 10950  	;
 10951  	have--
 10952  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 10953  	bits = bits + (uint32(8))
 10954  	goto __81
 10955  __81:
 10956  	if 0 != 0 {
 10957  		goto __80
 10958  	}
 10959  	goto __82
 10960  __82:
 10961  	;
 10962  	goto __78
 10963  __79:
 10964  	;
 10965  	goto __76
 10966  __76:
 10967  	if 0 != 0 {
 10968  		goto __75
 10969  	}
 10970  	goto __77
 10971  __77:
 10972  	;
 10973  	(*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257))
 10974  __88:
 10975  	hold >>= 5
 10976  	bits = bits - (uint32(5))
 10977  	goto __89
 10978  __89:
 10979  	if 0 != 0 {
 10980  		goto __88
 10981  	}
 10982  	goto __90
 10983  __90:
 10984  	;
 10985  	(*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1))
 10986  __91:
 10987  	hold >>= 5
 10988  	bits = bits - (uint32(5))
 10989  	goto __92
 10990  __92:
 10991  	if 0 != 0 {
 10992  		goto __91
 10993  	}
 10994  	goto __93
 10995  __93:
 10996  	;
 10997  	(*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4))
 10998  __94:
 10999  	hold >>= 4
 11000  	bits = bits - (uint32(4))
 11001  	goto __95
 11002  __95:
 11003  	if 0 != 0 {
 11004  		goto __94
 11005  	}
 11006  	goto __96
 11007  __96:
 11008  	;
 11009  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) {
 11010  		goto __97
 11011  	}
 11012  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */
 11013  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11014  	goto __5
 11015  __97:
 11016  	;
 11017  
 11018  	// get code length code lengths (not a typo)
 11019  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 11020  __98:
 11021  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) {
 11022  		goto __99
 11023  	}
 11024  __100:
 11025  __103:
 11026  	if !(bits < (uint32(3))) {
 11027  		goto __104
 11028  	}
 11029  __105:
 11030  __108:
 11031  	if !(have == uint32(0)) {
 11032  		goto __111
 11033  	}
 11034  	have = (*struct {
 11035  		f func(*libc.TLS, uintptr, uintptr) uint32
 11036  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11037  	if !(have == uint32(0)) {
 11038  		goto __112
 11039  	}
 11040  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11041  	ret = -5
 11042  	goto inf_leave
 11043  __112:
 11044  	;
 11045  __111:
 11046  	;
 11047  	goto __109
 11048  __109:
 11049  	if 0 != 0 {
 11050  		goto __108
 11051  	}
 11052  	goto __110
 11053  __110:
 11054  	;
 11055  	have--
 11056  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11057  	bits = bits + (uint32(8))
 11058  	goto __106
 11059  __106:
 11060  	if 0 != 0 {
 11061  		goto __105
 11062  	}
 11063  	goto __107
 11064  __107:
 11065  	;
 11066  	goto __103
 11067  __104:
 11068  	;
 11069  	goto __101
 11070  __101:
 11071  	if 0 != 0 {
 11072  		goto __100
 11073  	}
 11074  	goto __102
 11075  __102:
 11076  	;
 11077  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
 11078  __113:
 11079  	hold >>= 3
 11080  	bits = bits - (uint32(3))
 11081  	goto __114
 11082  __114:
 11083  	if 0 != 0 {
 11084  		goto __113
 11085  	}
 11086  	goto __115
 11087  __115:
 11088  	;
 11089  	goto __98
 11090  __99:
 11091  	;
 11092  __116:
 11093  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) {
 11094  		goto __117
 11095  	}
 11096  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0)
 11097  	goto __116
 11098  __117:
 11099  	;
 11100  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */
 11101  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 11102  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7)
 11103  	ret = Xinflate_table(tls, CODES, state+116 /* &.lens */, uint32(19), (state + 112 /* &.next */),
 11104  		(state + 88 /* &.lenbits */), state+756 /* &.work */)
 11105  	if !(ret != 0) {
 11106  		goto __118
 11107  	}
 11108  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */
 11109  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11110  	goto __5
 11111  __118:
 11112  	;
 11113  
 11114  	// get length and distance code code lengths
 11115  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 11116  __119:
 11117  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
 11118  		goto __120
 11119  	}
 11120  __121:
 11121  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
 11122  	if !((uint32(here.Fbits)) <= bits) {
 11123  		goto __124
 11124  	}
 11125  	goto __123
 11126  __124:
 11127  	;
 11128  __125:
 11129  __128:
 11130  	if !(have == uint32(0)) {
 11131  		goto __131
 11132  	}
 11133  	have = (*struct {
 11134  		f func(*libc.TLS, uintptr, uintptr) uint32
 11135  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11136  	if !(have == uint32(0)) {
 11137  		goto __132
 11138  	}
 11139  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11140  	ret = -5
 11141  	goto inf_leave
 11142  __132:
 11143  	;
 11144  __131:
 11145  	;
 11146  	goto __129
 11147  __129:
 11148  	if 0 != 0 {
 11149  		goto __128
 11150  	}
 11151  	goto __130
 11152  __130:
 11153  	;
 11154  	have--
 11155  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11156  	bits = bits + (uint32(8))
 11157  	goto __126
 11158  __126:
 11159  	if 0 != 0 {
 11160  		goto __125
 11161  	}
 11162  	goto __127
 11163  __127:
 11164  	;
 11165  	goto __122
 11166  __122:
 11167  	goto __121
 11168  	goto __123
 11169  __123:
 11170  	;
 11171  	if !(int32(here.Fval) < 16) {
 11172  		goto __133
 11173  	}
 11174  __135:
 11175  	hold >>= int32(here.Fbits)
 11176  	bits = bits - (uint32(here.Fbits))
 11177  	goto __136
 11178  __136:
 11179  	if 0 != 0 {
 11180  		goto __135
 11181  	}
 11182  	goto __137
 11183  __137:
 11184  	;
 11185  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval
 11186  	goto __134
 11187  __133:
 11188  	if !(int32(here.Fval) == 16) {
 11189  		goto __138
 11190  	}
 11191  __140:
 11192  __143:
 11193  	if !(bits < (uint32(int32(here.Fbits) + 2))) {
 11194  		goto __144
 11195  	}
 11196  __145:
 11197  __148:
 11198  	if !(have == uint32(0)) {
 11199  		goto __151
 11200  	}
 11201  	have = (*struct {
 11202  		f func(*libc.TLS, uintptr, uintptr) uint32
 11203  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11204  	if !(have == uint32(0)) {
 11205  		goto __152
 11206  	}
 11207  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11208  	ret = -5
 11209  	goto inf_leave
 11210  __152:
 11211  	;
 11212  __151:
 11213  	;
 11214  	goto __149
 11215  __149:
 11216  	if 0 != 0 {
 11217  		goto __148
 11218  	}
 11219  	goto __150
 11220  __150:
 11221  	;
 11222  	have--
 11223  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11224  	bits = bits + (uint32(8))
 11225  	goto __146
 11226  __146:
 11227  	if 0 != 0 {
 11228  		goto __145
 11229  	}
 11230  	goto __147
 11231  __147:
 11232  	;
 11233  	goto __143
 11234  __144:
 11235  	;
 11236  	goto __141
 11237  __141:
 11238  	if 0 != 0 {
 11239  		goto __140
 11240  	}
 11241  	goto __142
 11242  __142:
 11243  	;
 11244  __153:
 11245  	hold >>= int32(here.Fbits)
 11246  	bits = bits - (uint32(here.Fbits))
 11247  	goto __154
 11248  __154:
 11249  	if 0 != 0 {
 11250  		goto __153
 11251  	}
 11252  	goto __155
 11253  __155:
 11254  	;
 11255  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) {
 11256  		goto __156
 11257  	}
 11258  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
 11259  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11260  	goto __120
 11261  __156:
 11262  	;
 11263  	len = uint32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2)))
 11264  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1))))
 11265  __157:
 11266  	hold >>= 2
 11267  	bits = bits - (uint32(2))
 11268  	goto __158
 11269  __158:
 11270  	if 0 != 0 {
 11271  		goto __157
 11272  	}
 11273  	goto __159
 11274  __159:
 11275  	;
 11276  	goto __139
 11277  __138:
 11278  	if !(int32(here.Fval) == 17) {
 11279  		goto __160
 11280  	}
 11281  __162:
 11282  __165:
 11283  	if !(bits < (uint32(int32(here.Fbits) + 3))) {
 11284  		goto __166
 11285  	}
 11286  __167:
 11287  __170:
 11288  	if !(have == uint32(0)) {
 11289  		goto __173
 11290  	}
 11291  	have = (*struct {
 11292  		f func(*libc.TLS, uintptr, uintptr) uint32
 11293  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11294  	if !(have == uint32(0)) {
 11295  		goto __174
 11296  	}
 11297  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11298  	ret = -5
 11299  	goto inf_leave
 11300  __174:
 11301  	;
 11302  __173:
 11303  	;
 11304  	goto __171
 11305  __171:
 11306  	if 0 != 0 {
 11307  		goto __170
 11308  	}
 11309  	goto __172
 11310  __172:
 11311  	;
 11312  	have--
 11313  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11314  	bits = bits + (uint32(8))
 11315  	goto __168
 11316  __168:
 11317  	if 0 != 0 {
 11318  		goto __167
 11319  	}
 11320  	goto __169
 11321  __169:
 11322  	;
 11323  	goto __165
 11324  __166:
 11325  	;
 11326  	goto __163
 11327  __163:
 11328  	if 0 != 0 {
 11329  		goto __162
 11330  	}
 11331  	goto __164
 11332  __164:
 11333  	;
 11334  __175:
 11335  	hold >>= int32(here.Fbits)
 11336  	bits = bits - (uint32(here.Fbits))
 11337  	goto __176
 11338  __176:
 11339  	if 0 != 0 {
 11340  		goto __175
 11341  	}
 11342  	goto __177
 11343  __177:
 11344  	;
 11345  	len = uint32(0)
 11346  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
 11347  __178:
 11348  	hold >>= 3
 11349  	bits = bits - (uint32(3))
 11350  	goto __179
 11351  __179:
 11352  	if 0 != 0 {
 11353  		goto __178
 11354  	}
 11355  	goto __180
 11356  __180:
 11357  	;
 11358  	goto __161
 11359  __160:
 11360  __181:
 11361  __184:
 11362  	if !(bits < (uint32(int32(here.Fbits) + 7))) {
 11363  		goto __185
 11364  	}
 11365  __186:
 11366  __189:
 11367  	if !(have == uint32(0)) {
 11368  		goto __192
 11369  	}
 11370  	have = (*struct {
 11371  		f func(*libc.TLS, uintptr, uintptr) uint32
 11372  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11373  	if !(have == uint32(0)) {
 11374  		goto __193
 11375  	}
 11376  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11377  	ret = -5
 11378  	goto inf_leave
 11379  __193:
 11380  	;
 11381  __192:
 11382  	;
 11383  	goto __190
 11384  __190:
 11385  	if 0 != 0 {
 11386  		goto __189
 11387  	}
 11388  	goto __191
 11389  __191:
 11390  	;
 11391  	have--
 11392  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11393  	bits = bits + (uint32(8))
 11394  	goto __187
 11395  __187:
 11396  	if 0 != 0 {
 11397  		goto __186
 11398  	}
 11399  	goto __188
 11400  __188:
 11401  	;
 11402  	goto __184
 11403  __185:
 11404  	;
 11405  	goto __182
 11406  __182:
 11407  	if 0 != 0 {
 11408  		goto __181
 11409  	}
 11410  	goto __183
 11411  __183:
 11412  	;
 11413  __194:
 11414  	hold >>= int32(here.Fbits)
 11415  	bits = bits - (uint32(here.Fbits))
 11416  	goto __195
 11417  __195:
 11418  	if 0 != 0 {
 11419  		goto __194
 11420  	}
 11421  	goto __196
 11422  __196:
 11423  	;
 11424  	len = uint32(0)
 11425  	copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1))))
 11426  __197:
 11427  	hold >>= 7
 11428  	bits = bits - (uint32(7))
 11429  	goto __198
 11430  __198:
 11431  	if 0 != 0 {
 11432  		goto __197
 11433  	}
 11434  	goto __199
 11435  __199:
 11436  	;
 11437  __161:
 11438  	;
 11439  __139:
 11440  	;
 11441  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
 11442  		goto __200
 11443  	}
 11444  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
 11445  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11446  	goto __120
 11447  __200:
 11448  	;
 11449  __201:
 11450  	if !(libc.PostDecUint32(&copy, 1) != 0) {
 11451  		goto __202
 11452  	}
 11453  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len)
 11454  	goto __201
 11455  __202:
 11456  	;
 11457  __134:
 11458  	;
 11459  	goto __119
 11460  __120:
 11461  	;
 11462  
 11463  	// handle error breaks in while
 11464  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) {
 11465  		goto __203
 11466  	}
 11467  	goto __5
 11468  __203:
 11469  	;
 11470  
 11471  	// check for end-of-block code (better have one)
 11472  	if !(int32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + 256*2))) == 0) {
 11473  		goto __204
 11474  	}
 11475  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */
 11476  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11477  	goto __5
 11478  __204:
 11479  	;
 11480  
 11481  	// build code tables -- note: do not change the lenbits or distbits
 11482  	//                values here (9 and 6) without reading the comments in inftrees.h
 11483  	//                concerning the ENOUGH constants, which depend on those values
 11484  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */
 11485  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 11486  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
 11487  	ret = Xinflate_table(tls, LENS, state+116 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 112 /* &.next */),
 11488  		(state + 88 /* &.lenbits */), state+756 /* &.work */)
 11489  	if !(ret != 0) {
 11490  		goto __205
 11491  	}
 11492  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */
 11493  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11494  	goto __5
 11495  __205:
 11496  	;
 11497  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 11498  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6)
 11499  	ret = Xinflate_table(tls, DISTS, ((state + 116 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist,
 11500  		(state + 112 /* &.next */), (state + 92 /* &.distbits */), state+756 /* &.work */)
 11501  	if !(ret != 0) {
 11502  		goto __206
 11503  	}
 11504  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */
 11505  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11506  	goto __5
 11507  __206:
 11508  	;
 11509  
 11510  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 11511  
 11512  __9:
 11513  	// use inflate_fast() if we have enough input and output
 11514  	if !((have >= uint32(6)) && (left >= uint32(258))) {
 11515  		goto __207
 11516  	}
 11517  __208:
 11518  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 11519  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 11520  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */))
 11521  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 11522  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 11523  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 11524  	goto __209
 11525  __209:
 11526  	if 0 != 0 {
 11527  		goto __208
 11528  	}
 11529  	goto __210
 11530  __210:
 11531  	;
 11532  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) {
 11533  		goto __211
 11534  	}
 11535  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - left)
 11536  __211:
 11537  	;
 11538  	Xinflate_fast(tls, strm, (*Inflate_state)(unsafe.Pointer(state)).Fwsize)
 11539  __212:
 11540  	put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 11541  	left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
 11542  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 11543  	have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
 11544  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 11545  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 11546  	goto __213
 11547  __213:
 11548  	if 0 != 0 {
 11549  		goto __212
 11550  	}
 11551  	goto __214
 11552  __214:
 11553  	;
 11554  	goto __5
 11555  __207:
 11556  	;
 11557  
 11558  	// get a literal, length, or end-of-block code
 11559  __215:
 11560  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
 11561  	if !((uint32(here.Fbits)) <= bits) {
 11562  		goto __218
 11563  	}
 11564  	goto __217
 11565  __218:
 11566  	;
 11567  __219:
 11568  __222:
 11569  	if !(have == uint32(0)) {
 11570  		goto __225
 11571  	}
 11572  	have = (*struct {
 11573  		f func(*libc.TLS, uintptr, uintptr) uint32
 11574  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11575  	if !(have == uint32(0)) {
 11576  		goto __226
 11577  	}
 11578  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11579  	ret = -5
 11580  	goto inf_leave
 11581  __226:
 11582  	;
 11583  __225:
 11584  	;
 11585  	goto __223
 11586  __223:
 11587  	if 0 != 0 {
 11588  		goto __222
 11589  	}
 11590  	goto __224
 11591  __224:
 11592  	;
 11593  	have--
 11594  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11595  	bits = bits + (uint32(8))
 11596  	goto __220
 11597  __220:
 11598  	if 0 != 0 {
 11599  		goto __219
 11600  	}
 11601  	goto __221
 11602  __221:
 11603  	;
 11604  	goto __216
 11605  __216:
 11606  	goto __215
 11607  	goto __217
 11608  __217:
 11609  	;
 11610  	if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) {
 11611  		goto __227
 11612  	}
 11613  	last = here
 11614  __228:
 11615  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 11616  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 11617  		goto __231
 11618  	}
 11619  	goto __230
 11620  __231:
 11621  	;
 11622  __232:
 11623  __235:
 11624  	if !(have == uint32(0)) {
 11625  		goto __238
 11626  	}
 11627  	have = (*struct {
 11628  		f func(*libc.TLS, uintptr, uintptr) uint32
 11629  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11630  	if !(have == uint32(0)) {
 11631  		goto __239
 11632  	}
 11633  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11634  	ret = -5
 11635  	goto inf_leave
 11636  __239:
 11637  	;
 11638  __238:
 11639  	;
 11640  	goto __236
 11641  __236:
 11642  	if 0 != 0 {
 11643  		goto __235
 11644  	}
 11645  	goto __237
 11646  __237:
 11647  	;
 11648  	have--
 11649  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11650  	bits = bits + (uint32(8))
 11651  	goto __233
 11652  __233:
 11653  	if 0 != 0 {
 11654  		goto __232
 11655  	}
 11656  	goto __234
 11657  __234:
 11658  	;
 11659  	goto __229
 11660  __229:
 11661  	goto __228
 11662  	goto __230
 11663  __230:
 11664  	;
 11665  __240:
 11666  	hold >>= int32(last.Fbits)
 11667  	bits = bits - (uint32(last.Fbits))
 11668  	goto __241
 11669  __241:
 11670  	if 0 != 0 {
 11671  		goto __240
 11672  	}
 11673  	goto __242
 11674  __242:
 11675  	;
 11676  __227:
 11677  	;
 11678  __243:
 11679  	hold >>= int32(here.Fbits)
 11680  	bits = bits - (uint32(here.Fbits))
 11681  	goto __244
 11682  __244:
 11683  	if 0 != 0 {
 11684  		goto __243
 11685  	}
 11686  	goto __245
 11687  __245:
 11688  	;
 11689  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval)
 11690  
 11691  	// process literal
 11692  	if !(int32(here.Fop) == 0) {
 11693  		goto __246
 11694  	}
 11695  
 11696  __247:
 11697  	if !(left == uint32(0)) {
 11698  		goto __250
 11699  	}
 11700  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 11701  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 11702  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = left
 11703  	if !((*struct {
 11704  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
 11705  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) {
 11706  		goto __251
 11707  	}
 11708  	ret = -5
 11709  	goto inf_leave
 11710  __251:
 11711  	;
 11712  __250:
 11713  	;
 11714  	goto __248
 11715  __248:
 11716  	if 0 != 0 {
 11717  		goto __247
 11718  	}
 11719  	goto __249
 11720  __249:
 11721  	;
 11722  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength)
 11723  	left--
 11724  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 11725  	goto __5
 11726  __246:
 11727  	;
 11728  
 11729  	// process end of block
 11730  	if !((int32(here.Fop) & 32) != 0) {
 11731  		goto __252
 11732  	}
 11733  
 11734  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 11735  	goto __5
 11736  __252:
 11737  	;
 11738  
 11739  	// invalid code
 11740  	if !((int32(here.Fop) & 64) != 0) {
 11741  		goto __253
 11742  	}
 11743  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */
 11744  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11745  	goto __5
 11746  __253:
 11747  	;
 11748  
 11749  	// length code -- get extra bits, if any
 11750  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 11751  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) {
 11752  		goto __254
 11753  	}
 11754  __255:
 11755  __258:
 11756  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 11757  		goto __259
 11758  	}
 11759  __260:
 11760  __263:
 11761  	if !(have == uint32(0)) {
 11762  		goto __266
 11763  	}
 11764  	have = (*struct {
 11765  		f func(*libc.TLS, uintptr, uintptr) uint32
 11766  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11767  	if !(have == uint32(0)) {
 11768  		goto __267
 11769  	}
 11770  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11771  	ret = -5
 11772  	goto inf_leave
 11773  __267:
 11774  	;
 11775  __266:
 11776  	;
 11777  	goto __264
 11778  __264:
 11779  	if 0 != 0 {
 11780  		goto __263
 11781  	}
 11782  	goto __265
 11783  __265:
 11784  	;
 11785  	have--
 11786  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11787  	bits = bits + (uint32(8))
 11788  	goto __261
 11789  __261:
 11790  	if 0 != 0 {
 11791  		goto __260
 11792  	}
 11793  	goto __262
 11794  __262:
 11795  	;
 11796  	goto __258
 11797  __259:
 11798  	;
 11799  	goto __256
 11800  __256:
 11801  	if 0 != 0 {
 11802  		goto __255
 11803  	}
 11804  	goto __257
 11805  __257:
 11806  	;
 11807  	*(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 11808  __268:
 11809  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 11810  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 11811  	goto __269
 11812  __269:
 11813  	if 0 != 0 {
 11814  		goto __268
 11815  	}
 11816  	goto __270
 11817  __270:
 11818  	;
 11819  __254:
 11820  	;
 11821  
 11822  	// get distance code
 11823  __271:
 11824  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4))
 11825  	if !((uint32(here.Fbits)) <= bits) {
 11826  		goto __274
 11827  	}
 11828  	goto __273
 11829  __274:
 11830  	;
 11831  __275:
 11832  __278:
 11833  	if !(have == uint32(0)) {
 11834  		goto __281
 11835  	}
 11836  	have = (*struct {
 11837  		f func(*libc.TLS, uintptr, uintptr) uint32
 11838  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11839  	if !(have == uint32(0)) {
 11840  		goto __282
 11841  	}
 11842  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11843  	ret = -5
 11844  	goto inf_leave
 11845  __282:
 11846  	;
 11847  __281:
 11848  	;
 11849  	goto __279
 11850  __279:
 11851  	if 0 != 0 {
 11852  		goto __278
 11853  	}
 11854  	goto __280
 11855  __280:
 11856  	;
 11857  	have--
 11858  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11859  	bits = bits + (uint32(8))
 11860  	goto __276
 11861  __276:
 11862  	if 0 != 0 {
 11863  		goto __275
 11864  	}
 11865  	goto __277
 11866  __277:
 11867  	;
 11868  	goto __272
 11869  __272:
 11870  	goto __271
 11871  	goto __273
 11872  __273:
 11873  	;
 11874  	if !((int32(here.Fop) & 0xf0) == 0) {
 11875  		goto __283
 11876  	}
 11877  	last = here
 11878  __284:
 11879  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 11880  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 11881  		goto __287
 11882  	}
 11883  	goto __286
 11884  __287:
 11885  	;
 11886  __288:
 11887  __291:
 11888  	if !(have == uint32(0)) {
 11889  		goto __294
 11890  	}
 11891  	have = (*struct {
 11892  		f func(*libc.TLS, uintptr, uintptr) uint32
 11893  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11894  	if !(have == uint32(0)) {
 11895  		goto __295
 11896  	}
 11897  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11898  	ret = -5
 11899  	goto inf_leave
 11900  __295:
 11901  	;
 11902  __294:
 11903  	;
 11904  	goto __292
 11905  __292:
 11906  	if 0 != 0 {
 11907  		goto __291
 11908  	}
 11909  	goto __293
 11910  __293:
 11911  	;
 11912  	have--
 11913  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 11914  	bits = bits + (uint32(8))
 11915  	goto __289
 11916  __289:
 11917  	if 0 != 0 {
 11918  		goto __288
 11919  	}
 11920  	goto __290
 11921  __290:
 11922  	;
 11923  	goto __285
 11924  __285:
 11925  	goto __284
 11926  	goto __286
 11927  __286:
 11928  	;
 11929  __296:
 11930  	hold >>= int32(last.Fbits)
 11931  	bits = bits - (uint32(last.Fbits))
 11932  	goto __297
 11933  __297:
 11934  	if 0 != 0 {
 11935  		goto __296
 11936  	}
 11937  	goto __298
 11938  __298:
 11939  	;
 11940  __283:
 11941  	;
 11942  __299:
 11943  	hold >>= int32(here.Fbits)
 11944  	bits = bits - (uint32(here.Fbits))
 11945  	goto __300
 11946  __300:
 11947  	if 0 != 0 {
 11948  		goto __299
 11949  	}
 11950  	goto __301
 11951  __301:
 11952  	;
 11953  	if !((int32(here.Fop) & 64) != 0) {
 11954  		goto __302
 11955  	}
 11956  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */
 11957  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 11958  	goto __5
 11959  __302:
 11960  	;
 11961  	(*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval)
 11962  
 11963  	// get distance extra bits, if any
 11964  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 11965  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != uint32(0)) {
 11966  		goto __303
 11967  	}
 11968  __304:
 11969  __307:
 11970  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 11971  		goto __308
 11972  	}
 11973  __309:
 11974  __312:
 11975  	if !(have == uint32(0)) {
 11976  		goto __315
 11977  	}
 11978  	have = (*struct {
 11979  		f func(*libc.TLS, uintptr, uintptr) uint32
 11980  	})(unsafe.Pointer(&struct{ uintptr }{in})).f(tls, in_desc, bp /* &next */)
 11981  	if !(have == uint32(0)) {
 11982  		goto __316
 11983  	}
 11984  	*(*uintptr)(unsafe.Pointer(bp /* next */)) = uintptr(Z_NULL)
 11985  	ret = -5
 11986  	goto inf_leave
 11987  __316:
 11988  	;
 11989  __315:
 11990  	;
 11991  	goto __313
 11992  __313:
 11993  	if 0 != 0 {
 11994  		goto __312
 11995  	}
 11996  	goto __314
 11997  __314:
 11998  	;
 11999  	have--
 12000  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&*(*uintptr)(unsafe.Pointer(bp /* next */)), 1))))) << bits)
 12001  	bits = bits + (uint32(8))
 12002  	goto __310
 12003  __310:
 12004  	if 0 != 0 {
 12005  		goto __309
 12006  	}
 12007  	goto __311
 12008  __311:
 12009  	;
 12010  	goto __307
 12011  __308:
 12012  	;
 12013  	goto __305
 12014  __305:
 12015  	if 0 != 0 {
 12016  		goto __304
 12017  	}
 12018  	goto __306
 12019  __306:
 12020  	;
 12021  	*(*uint32)(unsafe.Pointer(state + 72 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 12022  __317:
 12023  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 12024  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 12025  	goto __318
 12026  __318:
 12027  	if 0 != 0 {
 12028  		goto __317
 12029  	}
 12030  	goto __319
 12031  __319:
 12032  	;
 12033  __303:
 12034  	;
 12035  	if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (func() uint32 {
 12036  		if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 12037  			return left
 12038  		}
 12039  		return uint32(0)
 12040  	}()))) {
 12041  		goto __320
 12042  	}
 12043  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */
 12044  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12045  	goto __5
 12046  __320:
 12047  	;
 12048  
 12049  	// copy match from window to output
 12050  __321:
 12051  __324:
 12052  	if !(left == uint32(0)) {
 12053  		goto __327
 12054  	}
 12055  	put = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 12056  	left = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 12057  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = left
 12058  	if !((*struct {
 12059  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
 12060  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, put, left) != 0) {
 12061  		goto __328
 12062  	}
 12063  	ret = -5
 12064  	goto inf_leave
 12065  __328:
 12066  	;
 12067  __327:
 12068  	;
 12069  	goto __325
 12070  __325:
 12071  	if 0 != 0 {
 12072  		goto __324
 12073  	}
 12074  	goto __326
 12075  __326:
 12076  	;
 12077  	copy = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Foffset)
 12078  	if !(copy < left) {
 12079  		goto __329
 12080  	}
 12081  	from = (put + uintptr(copy))
 12082  	copy = (left - copy)
 12083  	goto __330
 12084  __329:
 12085  	from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset))
 12086  	copy = left
 12087  __330:
 12088  	;
 12089  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) {
 12090  		goto __331
 12091  	}
 12092  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 12093  __331:
 12094  	;
 12095  	*(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy)
 12096  	left = left - (copy)
 12097  __332:
 12098  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12099  	goto __333
 12100  __333:
 12101  	if libc.PreDecUint32(&copy, 1) != 0 {
 12102  		goto __332
 12103  	}
 12104  	goto __334
 12105  __334:
 12106  	;
 12107  	goto __322
 12108  __322:
 12109  	if (*Inflate_state)(unsafe.Pointer(state)).Flength != uint32(0) {
 12110  		goto __321
 12111  	}
 12112  	goto __323
 12113  __323:
 12114  	;
 12115  	goto __5
 12116  
 12117  __10:
 12118  	// inflate stream terminated properly -- write leftover output
 12119  	ret = Z_STREAM_END
 12120  	if !(left < (*Inflate_state)(unsafe.Pointer(state)).Fwsize) {
 12121  		goto __335
 12122  	}
 12123  	if !((*struct {
 12124  		f func(*libc.TLS, uintptr, uintptr, uint32) int32
 12125  	})(unsafe.Pointer(&struct{ uintptr }{out})).f(tls, out_desc, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, ((*Inflate_state)(unsafe.Pointer(state)).Fwsize-left)) != 0) {
 12126  		goto __336
 12127  	}
 12128  	ret = -5
 12129  __336:
 12130  	;
 12131  __335:
 12132  	;
 12133  	goto inf_leave
 12134  
 12135  __11:
 12136  	ret = -3
 12137  	goto inf_leave
 12138  
 12139  __12: // can't happen, but makes compilers happy
 12140  	ret = -2
 12141  	goto inf_leave
 12142  __5:
 12143  	;
 12144  	goto __3
 12145  __3:
 12146  	goto __2
 12147  	goto __4
 12148  __4:
 12149  	;
 12150  
 12151  	// Return unused input
 12152  inf_leave:
 12153  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = *(*uintptr)(unsafe.Pointer(bp /* next */))
 12154  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 12155  	return ret
 12156  }
 12157  
 12158  var order =                                                                                                                                                                                                                          // permutation of code lengths
 12159  [19]uint16{uint16(16), uint16(17), uint16(18), uint16(0), uint16(8), uint16(7), uint16(9), uint16(6), uint16(10), uint16(5), uint16(11), uint16(4), uint16(12), uint16(3), uint16(13), uint16(2), uint16(14), uint16(1), uint16(15)} /* infback.c:269:33 */
 12160  
 12161  func XinflateBackEnd(tls *libc.TLS, strm Z_streamp) int32 { /* infback.c:631:13: */
 12162  	if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fstate == uintptr(Z_NULL))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) {
 12163  		return -2
 12164  	}
 12165  	(*struct {
 12166  		f func(*libc.TLS, Voidpf, Voidpf)
 12167  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
 12168  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
 12169  
 12170  	return Z_OK
 12171  }
 12172  
 12173  //
 12174  //    Decode literal, length, and distance codes and write out the resulting
 12175  //    literal and match bytes until either not enough input or output is
 12176  //    available, an end-of-block is encountered, or a data error is encountered.
 12177  //    When large enough input and output buffers are supplied to inflate(), for
 12178  //    example, a 16K input buffer and a 64K output buffer, more than 95% of the
 12179  //    inflate execution time is spent in this routine.
 12180  //
 12181  //    Entry assumptions:
 12182  //
 12183  //         state->mode == LEN
 12184  //         strm->avail_in >= 6
 12185  //         strm->avail_out >= 258
 12186  //         start >= strm->avail_out
 12187  //         state->bits < 8
 12188  //
 12189  //    On return, state->mode is one of:
 12190  //
 12191  //         LEN -- ran out of enough output space or enough available input
 12192  //         TYPE -- reached end of block code, inflate() to interpret next block
 12193  //         BAD -- error in block data
 12194  //
 12195  //    Notes:
 12196  //
 12197  //     - The maximum input bits used by a length/distance pair is 15 bits for the
 12198  //       length code, 5 bits for the length extra, 15 bits for the distance code,
 12199  //       and 13 bits for the distance extra.  This totals 48 bits, or six bytes.
 12200  //       Therefore if strm->avail_in >= 6, then there is enough input to avoid
 12201  //       checking for available input while decoding.
 12202  //
 12203  //     - The maximum bytes that a single length/distance pair can output is 258
 12204  //       bytes, which is the maximum length that can be coded.  inflate_fast()
 12205  //       requires strm->avail_out >= 258 for each loop to avoid checking for
 12206  //       output space.
 12207  //
 12208  func Xinflate_fast(tls *libc.TLS, strm Z_streamp, start uint32) { /* inffast.c:50:20: */
 12209  	var state uintptr
 12210  	var in uintptr     // local strm->next_in
 12211  	var last uintptr   // have enough input while in < last
 12212  	var out uintptr    // local strm->next_out
 12213  	var beg uintptr    // inflate()'s initial strm->next_out
 12214  	var end uintptr    // while out < end, enough space available
 12215  	var wsize uint32   // window size or zero if not using window
 12216  	var whave uint32   // valid bytes in the window
 12217  	var wnext uint32   // window write index
 12218  	var window uintptr // allocated sliding window, if wsize != 0
 12219  	var hold uint32    // local strm->hold
 12220  	var bits uint32    // local strm->bits
 12221  	var lcode uintptr  // local strm->lencode
 12222  	var dcode uintptr  // local strm->distcode
 12223  	var lmask uint32   // mask for first level of length codes
 12224  	var dmask uint32   // mask for first level of distance codes
 12225  	var here Code      // retrieved table entry
 12226  	var op uint32      // code bits, operation, extra bits, or
 12227  	//  window position, window bytes to copy
 12228  	var len uint32   // match length, unused bytes
 12229  	var dist uint32  // match distance
 12230  	var from uintptr // where to copy match from
 12231  
 12232  	// copy state to local variables
 12233  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 12234  	in = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 12235  	last = (in + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_in - UInt(5))))
 12236  	out = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 12237  	beg = (out - uintptr((start - (*Z_stream)(unsafe.Pointer(strm)).Favail_out)))
 12238  	end = (out + uintptr(((*Z_stream)(unsafe.Pointer(strm)).Favail_out - UInt(257))))
 12239  	wsize = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 12240  	whave = (*Inflate_state)(unsafe.Pointer(state)).Fwhave
 12241  	wnext = (*Inflate_state)(unsafe.Pointer(state)).Fwnext
 12242  	window = (*Inflate_state)(unsafe.Pointer(state)).Fwindow
 12243  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 12244  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 12245  	lcode = (*Inflate_state)(unsafe.Pointer(state)).Flencode
 12246  	dcode = (*Inflate_state)(unsafe.Pointer(state)).Fdistcode
 12247  	lmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Flenbits) - uint32(1))
 12248  	dmask = ((uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fdistbits) - uint32(1))
 12249  
 12250  	// decode literals and length/distances until end-of-block or not enough
 12251  	//        input data or output space
 12252  __1:
 12253  	if !(bits < uint32(15)) {
 12254  		goto __4
 12255  	}
 12256  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 12257  	bits = bits + (uint32(8))
 12258  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 12259  	bits = bits + (uint32(8))
 12260  __4:
 12261  	;
 12262  	here = *(*Code)(unsafe.Pointer(lcode + uintptr((hold&uint32(lmask)))*4))
 12263  dolen:
 12264  	op = uint32(here.Fbits)
 12265  	hold >>= op
 12266  	bits = bits - (op)
 12267  	op = uint32(here.Fop)
 12268  	if !(op == uint32(0)) {
 12269  		goto __5
 12270  	} // literal
 12271  
 12272  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = uint8(here.Fval)
 12273  	goto __6
 12274  __5:
 12275  	if !((op & uint32(16)) != 0) {
 12276  		goto __7
 12277  	} // length base
 12278  	len = uint32(here.Fval)
 12279  	op = op & (uint32(15)) // number of extra bits
 12280  	if !(op != 0) {
 12281  		goto __9
 12282  	}
 12283  	if !(bits < op) {
 12284  		goto __10
 12285  	}
 12286  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 12287  	bits = bits + (uint32(8))
 12288  __10:
 12289  	;
 12290  	len = len + (uint32(hold) & ((uint32(1) << op) - uint32(1)))
 12291  	hold >>= op
 12292  	bits = bits - (op)
 12293  __9:
 12294  	;
 12295  
 12296  	if !(bits < uint32(15)) {
 12297  		goto __11
 12298  	}
 12299  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 12300  	bits = bits + (uint32(8))
 12301  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 12302  	bits = bits + (uint32(8))
 12303  __11:
 12304  	;
 12305  	here = *(*Code)(unsafe.Pointer(dcode + uintptr((hold&uint32(dmask)))*4))
 12306  dodist:
 12307  	op = uint32(here.Fbits)
 12308  	hold >>= op
 12309  	bits = bits - (op)
 12310  	op = uint32(here.Fop)
 12311  	if !((op & uint32(16)) != 0) {
 12312  		goto __12
 12313  	} // distance base
 12314  	dist = uint32(here.Fval)
 12315  	op = op & (uint32(15)) // number of extra bits
 12316  	if !(bits < op) {
 12317  		goto __14
 12318  	}
 12319  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 12320  	bits = bits + (uint32(8))
 12321  	if !(bits < op) {
 12322  		goto __15
 12323  	}
 12324  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&in, 1))))) << bits)
 12325  	bits = bits + (uint32(8))
 12326  __15:
 12327  	;
 12328  __14:
 12329  	;
 12330  	dist = dist + (uint32(hold) & ((uint32(1) << op) - uint32(1)))
 12331  	hold >>= op
 12332  	bits = bits - (op)
 12333  
 12334  	op = (uint32((int32(out) - int32(beg)) / 1)) // max distance in output
 12335  	if !(dist > op) {
 12336  		goto __16
 12337  	} // see if copy from window
 12338  	op = (dist - op) // distance back in window
 12339  	if !(op > whave) {
 12340  		goto __18
 12341  	}
 12342  	if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) {
 12343  		goto __19
 12344  	}
 12345  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */
 12346  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12347  	goto __3
 12348  __19:
 12349  	;
 12350  __18:
 12351  	;
 12352  	from = window
 12353  	if !(wnext == uint32(0)) {
 12354  		goto __20
 12355  	} // very common case
 12356  	from += (uintptr(wsize - op))
 12357  	if !(op < len) {
 12358  		goto __22
 12359  	} // some from window
 12360  	len = len - (op)
 12361  __23:
 12362  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12363  	goto __24
 12364  __24:
 12365  	if libc.PreDecUint32(&op, 1) != 0 {
 12366  		goto __23
 12367  	}
 12368  	goto __25
 12369  __25:
 12370  	;
 12371  	from = (out - uintptr(dist)) // rest from output
 12372  __22:
 12373  	;
 12374  	goto __21
 12375  __20:
 12376  	if !(wnext < op) {
 12377  		goto __26
 12378  	} // wrap around window
 12379  	from += (uintptr((wsize + wnext) - op))
 12380  	op = op - (wnext)
 12381  	if !(op < len) {
 12382  		goto __28
 12383  	} // some from end of window
 12384  	len = len - (op)
 12385  __29:
 12386  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12387  	goto __30
 12388  __30:
 12389  	if libc.PreDecUint32(&op, 1) != 0 {
 12390  		goto __29
 12391  	}
 12392  	goto __31
 12393  __31:
 12394  	;
 12395  	from = window
 12396  	if !(wnext < len) {
 12397  		goto __32
 12398  	} // some from start of window
 12399  	op = wnext
 12400  	len = len - (op)
 12401  __33:
 12402  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12403  	goto __34
 12404  __34:
 12405  	if libc.PreDecUint32(&op, 1) != 0 {
 12406  		goto __33
 12407  	}
 12408  	goto __35
 12409  __35:
 12410  	;
 12411  	from = (out - uintptr(dist)) // rest from output
 12412  __32:
 12413  	;
 12414  __28:
 12415  	;
 12416  	goto __27
 12417  __26: // contiguous in window
 12418  	from += (uintptr(wnext - op))
 12419  	if !(op < len) {
 12420  		goto __36
 12421  	} // some from window
 12422  	len = len - (op)
 12423  __37:
 12424  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12425  	goto __38
 12426  __38:
 12427  	if libc.PreDecUint32(&op, 1) != 0 {
 12428  		goto __37
 12429  	}
 12430  	goto __39
 12431  __39:
 12432  	;
 12433  	from = (out - uintptr(dist)) // rest from output
 12434  __36:
 12435  	;
 12436  __27:
 12437  	;
 12438  __21:
 12439  	;
 12440  __40:
 12441  	if !(len > uint32(2)) {
 12442  		goto __41
 12443  	}
 12444  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12445  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12446  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12447  	len = len - (uint32(3))
 12448  	goto __40
 12449  __41:
 12450  	;
 12451  	if !(len != 0) {
 12452  		goto __42
 12453  	}
 12454  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12455  	if !(len > uint32(1)) {
 12456  		goto __43
 12457  	}
 12458  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12459  __43:
 12460  	;
 12461  __42:
 12462  	;
 12463  	goto __17
 12464  __16:
 12465  	from = (out - uintptr(dist)) // copy direct from output
 12466  __44: // minimum length is three
 12467  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12468  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12469  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12470  	len = len - (uint32(3))
 12471  	goto __45
 12472  __45:
 12473  	if len > uint32(2) {
 12474  		goto __44
 12475  	}
 12476  	goto __46
 12477  __46:
 12478  	;
 12479  	if !(len != 0) {
 12480  		goto __47
 12481  	}
 12482  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12483  	if !(len > uint32(1)) {
 12484  		goto __48
 12485  	}
 12486  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&out, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 12487  __48:
 12488  	;
 12489  __47:
 12490  	;
 12491  __17:
 12492  	;
 12493  	goto __13
 12494  __12:
 12495  	if !((op & uint32(64)) == uint32(0)) {
 12496  		goto __49
 12497  	} // 2nd level distance code
 12498  	here = *(*Code)(unsafe.Pointer(dcode + uintptr((uint32(here.Fval)+(hold&(uint32((uint32(1)<<op)-uint32(1))))))*4))
 12499  	goto dodist
 12500  	goto __50
 12501  __49:
 12502  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */
 12503  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12504  	goto __3
 12505  __50:
 12506  	;
 12507  __13:
 12508  	;
 12509  	goto __8
 12510  __7:
 12511  	if !((op & uint32(64)) == uint32(0)) {
 12512  		goto __51
 12513  	} // 2nd level length code
 12514  	here = *(*Code)(unsafe.Pointer(lcode + uintptr((uint32(here.Fval)+(hold&(uint32((uint32(1)<<op)-uint32(1))))))*4))
 12515  	goto dolen
 12516  	goto __52
 12517  __51:
 12518  	if !((op & uint32(32)) != 0) {
 12519  		goto __53
 12520  	} // end-of-block
 12521  
 12522  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 12523  	goto __3
 12524  	goto __54
 12525  __53:
 12526  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */
 12527  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 12528  	goto __3
 12529  __54:
 12530  	;
 12531  __52:
 12532  	;
 12533  __8:
 12534  	;
 12535  __6:
 12536  	;
 12537  	goto __2
 12538  __2:
 12539  	if (in < last) && (out < end) {
 12540  		goto __1
 12541  	}
 12542  	goto __3
 12543  __3:
 12544  	;
 12545  
 12546  	// return unused bytes (on entry, bits < 8, so in won't go too far back)
 12547  	len = (bits >> 3)
 12548  	in -= uintptr(len)
 12549  	bits = bits - (len << 3)
 12550  	hold = hold & (uint32((uint32(1) << bits) - uint32(1)))
 12551  
 12552  	// update state and return
 12553  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = in
 12554  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = out
 12555  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = func() uint32 {
 12556  		if in < last {
 12557  			return (uint32(5 + ((int32(last) - int32(in)) / 1)))
 12558  		}
 12559  		return (uint32(5 - ((int32(in) - int32(last)) / 1)))
 12560  	}()
 12561  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = func() uint32 {
 12562  		if out < end {
 12563  			return (uint32(257 + ((int32(end) - int32(out)) / 1)))
 12564  		}
 12565  		return (uint32(257 - ((int32(out) - int32(end)) / 1)))
 12566  	}()
 12567  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 12568  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 12569  	return
 12570  }
 12571  
 12572  //
 12573  //    inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe):
 12574  //    - Using bit fields for code structure
 12575  //    - Different op definition to avoid & for extra bits (do & for table bits)
 12576  //    - Three separate decoding do-loops for direct, window, and wnext == 0
 12577  //    - Special case for distance > 1 copies to do overlapped load and store copy
 12578  //    - Explicit branch predictions (based on measured branch probabilities)
 12579  //    - Deferring match copy and interspersed it with decoding subsequent codes
 12580  //    - Swapping literal/length else
 12581  //    - Swapping window/direct else
 12582  //    - Larger unrolled copy loops (three is about right)
 12583  //    - Moving len -= 3 statement into middle of loop
 12584  //
 12585  
 12586  func inflateStateCheck(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:105:11: */
 12587  	var state uintptr
 12588  	if ((strm == uintptr(Z_NULL)) || ((*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0))) || ((*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0)) {
 12589  		return 1
 12590  	}
 12591  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 12592  	if (((state == uintptr(Z_NULL)) || ((*Inflate_state)(unsafe.Pointer(state)).Fstrm != strm)) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode < HEAD)) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode > SYNC) {
 12593  		return 1
 12594  	}
 12595  	return 0
 12596  }
 12597  
 12598  func XinflateResetKeep(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:119:13: */
 12599  	var state uintptr
 12600  
 12601  	if inflateStateCheck(tls, strm) != 0 {
 12602  		return -2
 12603  	}
 12604  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 12605  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = libc.AssignPtrUint32(strm+20 /* &.total_out */, libc.AssignPtrUint32(state+32 /* &.total */, uint32(0)))
 12606  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL)
 12607  	if (*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0 { // to support ill-conceived Java test suite
 12608  		(*Z_stream)(unsafe.Pointer(strm)).Fadler = (ULong((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1))
 12609  	}
 12610  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD
 12611  	(*Inflate_state)(unsafe.Pointer(state)).Flast = 0
 12612  	(*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 0
 12613  	(*Inflate_state)(unsafe.Pointer(state)).Fdmax = 32768
 12614  	(*Inflate_state)(unsafe.Pointer(state)).Fhead = Gz_headerp(Z_NULL)
 12615  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = uint32(0)
 12616  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0)
 12617  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = libc.AssignPtrUintptr(state+84 /* &.distcode */, libc.AssignPtrUintptr(state+112 /* &.next */, state+1332 /* &.codes */))
 12618  	(*Inflate_state)(unsafe.Pointer(state)).Fsane = 1
 12619  	(*Inflate_state)(unsafe.Pointer(state)).Fback = -1
 12620  
 12621  	return Z_OK
 12622  }
 12623  
 12624  func XinflateReset(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:144:13: */
 12625  	var state uintptr
 12626  
 12627  	if inflateStateCheck(tls, strm) != 0 {
 12628  		return -2
 12629  	}
 12630  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 12631  	(*Inflate_state)(unsafe.Pointer(state)).Fwsize = uint32(0)
 12632  	(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
 12633  	(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 12634  	return XinflateResetKeep(tls, strm)
 12635  }
 12636  
 12637  func XinflateReset2(tls *libc.TLS, strm Z_streamp, windowBits int32) int32 { /* inflate.c:157:13: */
 12638  	var wrap int32
 12639  	var state uintptr
 12640  
 12641  	// get the state
 12642  	if inflateStateCheck(tls, strm) != 0 {
 12643  		return -2
 12644  	}
 12645  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 12646  
 12647  	// extract wrap request from windowBits parameter
 12648  	if windowBits < 0 {
 12649  		wrap = 0
 12650  		windowBits = -windowBits
 12651  	} else {
 12652  		wrap = ((windowBits >> 4) + 5)
 12653  		if windowBits < 48 {
 12654  			windowBits = windowBits & (15)
 12655  		}
 12656  	}
 12657  
 12658  	// set number of window bits, free window if different
 12659  	if (windowBits != 0) && ((windowBits < 8) || (windowBits > 15)) {
 12660  		return -2
 12661  	}
 12662  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL)) && ((*Inflate_state)(unsafe.Pointer(state)).Fwbits != uint32(windowBits)) {
 12663  		(*struct {
 12664  			f func(*libc.TLS, Voidpf, Voidpf)
 12665  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow)
 12666  		(*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL)
 12667  	}
 12668  
 12669  	// update state and reset the rest of it
 12670  	(*Inflate_state)(unsafe.Pointer(state)).Fwrap = wrap
 12671  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(windowBits)
 12672  	return XinflateReset(tls, strm)
 12673  }
 12674  
 12675  func XinflateInit2_(tls *libc.TLS, strm Z_streamp, windowBits int32, version uintptr, stream_size int32) int32 { /* inflate.c:195:13: */
 12676  	var ret int32
 12677  	var state uintptr
 12678  
 12679  	if ((version == uintptr(Z_NULL)) || (int32(*(*uint8)(unsafe.Pointer(version))) != int32(*(*uint8)(unsafe.Pointer(ts /* "1.2.11" */))))) || (stream_size != (int32(unsafe.Sizeof(Z_stream{})))) {
 12680  		return -6
 12681  	}
 12682  	if strm == uintptr(Z_NULL) {
 12683  		return -2
 12684  	}
 12685  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = uintptr(Z_NULL) // in case we return an error
 12686  	if (*Z_stream)(unsafe.Pointer(strm)).Fzalloc == uintptr(0) {
 12687  		(*Z_stream)(unsafe.Pointer(strm)).Fzalloc = *(*uintptr)(unsafe.Pointer(&struct {
 12688  			f func(*libc.TLS, Voidpf, uint32, uint32) Voidpf
 12689  		}{Xzcalloc}))
 12690  		(*Z_stream)(unsafe.Pointer(strm)).Fopaque = uintptr(0)
 12691  	}
 12692  	if (*Z_stream)(unsafe.Pointer(strm)).Fzfree == uintptr(0) {
 12693  		(*Z_stream)(unsafe.Pointer(strm)).Fzfree = *(*uintptr)(unsafe.Pointer(&struct {
 12694  			f func(*libc.TLS, Voidpf, Voidpf)
 12695  		}{Xzcfree}))
 12696  	}
 12697  	state = (*struct {
 12698  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 12699  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{})))
 12700  	if state == uintptr(Z_NULL) {
 12701  		return -4
 12702  	}
 12703  
 12704  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = state
 12705  	(*Inflate_state)(unsafe.Pointer(state)).Fstrm = strm
 12706  	(*Inflate_state)(unsafe.Pointer(state)).Fwindow = uintptr(Z_NULL)
 12707  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = HEAD // to pass state test in inflateReset2()
 12708  	ret = XinflateReset2(tls, strm, windowBits)
 12709  	if ret != Z_OK {
 12710  		(*struct {
 12711  			f func(*libc.TLS, Voidpf, Voidpf)
 12712  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, state)
 12713  		(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
 12714  	}
 12715  	return ret
 12716  }
 12717  
 12718  func XinflateInit_(tls *libc.TLS, strm Z_streamp, version uintptr, stream_size int32) int32 { /* inflate.c:239:13: */
 12719  	return XinflateInit2_(tls, strm, MAX_WBITS, version, stream_size)
 12720  }
 12721  
 12722  func XinflatePrime(tls *libc.TLS, strm Z_streamp, bits int32, value int32) int32 { /* inflate.c:247:13: */
 12723  	var state uintptr
 12724  
 12725  	if inflateStateCheck(tls, strm) != 0 {
 12726  		return -2
 12727  	}
 12728  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 12729  	if bits < 0 {
 12730  		(*Inflate_state)(unsafe.Pointer(state)).Fhold = uint32(0)
 12731  		(*Inflate_state)(unsafe.Pointer(state)).Fbits = uint32(0)
 12732  		return Z_OK
 12733  	}
 12734  	if (bits > 16) || (((*Inflate_state)(unsafe.Pointer(state)).Fbits + UInt(bits)) > uint32(32)) {
 12735  		return -2
 12736  	}
 12737  	value = int32(int32(value) & ((int32(1) << bits) - 1))
 12738  	*(*uint32)(unsafe.Pointer(state + 60 /* &.hold */)) += (uint32(uint32(value) << (*Inflate_state)(unsafe.Pointer(state)).Fbits))
 12739  	*(*uint32)(unsafe.Pointer(state + 64 /* &.bits */)) += (UInt(bits))
 12740  	return Z_OK
 12741  }
 12742  
 12743  //
 12744  //    Return state with length and distance decoding tables and index sizes set to
 12745  //    fixed code decoding.  Normally this returns fixed tables from inffixed.h.
 12746  //    If BUILDFIXED is defined, then instead this routine builds the tables the
 12747  //    first time it's called, and returns those tables the first time and
 12748  //    thereafter.  This reduces the size of the code by about 2K bytes, in
 12749  //    exchange for a little execution time.  However, BUILDFIXED should not be
 12750  //    used for threaded applications, since the rewriting of the tables and virgin
 12751  //    may not be thread-safe.
 12752  //
 12753  func fixedtables1(tls *libc.TLS, state uintptr) { /* inflate.c:278:12: */
 12754  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = uintptr(unsafe.Pointer(&lenfix1))
 12755  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
 12756  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = uintptr(unsafe.Pointer(&distfix1))
 12757  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(5)
 12758  }
 12759  
 12760  var lenfix1 = [512]Code{
 12761  	{Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)}, {Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)},
 12762  	{Fbits: uint8(9), Fval: uint16(192)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)}, {Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(160)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)},
 12763  	{Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(224)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(144)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)},
 12764  	{Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(208)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(176)},
 12765  	{Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)}, {Fbits: uint8(9), Fval: uint16(240)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)},
 12766  	{Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)}, {Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(200)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)},
 12767  	{Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(168)}, {Fbits: uint8(8), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(232)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)},
 12768  	{Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(152)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(216)},
 12769  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)}, {Fbits: uint8(9), Fval: uint16(184)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)},
 12770  	{Fbits: uint8(9), Fval: uint16(248)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)}, {Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)},
 12771  	{Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(196)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(164)}, {Fbits: uint8(8), Fval: uint16(2)},
 12772  	{Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(228)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(148)},
 12773  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)}, {Fbits: uint8(9), Fval: uint16(212)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)},
 12774  	{Fbits: uint8(9), Fval: uint16(180)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)}, {Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(244)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)},
 12775  	{Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(204)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)},
 12776  	{Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(172)}, {Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(236)},
 12777  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)}, {Fbits: uint8(9), Fval: uint16(156)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)},
 12778  	{Fbits: uint8(9), Fval: uint16(220)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)}, {Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(188)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)},
 12779  	{Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(252)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)},
 12780  	{Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(194)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(162)},
 12781  	{Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)}, {Fbits: uint8(9), Fval: uint16(226)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)},
 12782  	{Fbits: uint8(9), Fval: uint16(146)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)}, {Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(210)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)},
 12783  	{Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(178)}, {Fbits: uint8(8), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(242)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)},
 12784  	{Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(202)},
 12785  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)}, {Fbits: uint8(9), Fval: uint16(170)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)},
 12786  	{Fbits: uint8(9), Fval: uint16(234)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)}, {Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(154)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)},
 12787  	{Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(218)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(186)}, {Fbits: uint8(8), Fval: uint16(13)},
 12788  	{Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(250)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)},
 12789  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)}, {Fbits: uint8(9), Fval: uint16(198)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)},
 12790  	{Fbits: uint8(9), Fval: uint16(166)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)}, {Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(230)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)},
 12791  	{Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(150)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(214)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)},
 12792  	{Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(182)}, {Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(246)},
 12793  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)},
 12794  	{Fbits: uint8(9), Fval: uint16(206)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)}, {Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(174)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)},
 12795  	{Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(238)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(158)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)},
 12796  	{Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(222)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(190)},
 12797  	{Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)}, {Fbits: uint8(9), Fval: uint16(254)}, {Fop: uint8(96), Fbits: uint8(7)}, {Fbits: uint8(8), Fval: uint16(80)}, {Fbits: uint8(8), Fval: uint16(16)},
 12798  	{Fop: uint8(20), Fbits: uint8(8), Fval: uint16(115)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(112)}, {Fbits: uint8(8), Fval: uint16(48)}, {Fbits: uint8(9), Fval: uint16(193)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(96)},
 12799  	{Fbits: uint8(8), Fval: uint16(32)}, {Fbits: uint8(9), Fval: uint16(161)}, {Fbits: uint8(8)}, {Fbits: uint8(8), Fval: uint16(128)}, {Fbits: uint8(8), Fval: uint16(64)}, {Fbits: uint8(9), Fval: uint16(225)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)},
 12800  	{Fbits: uint8(8), Fval: uint16(88)}, {Fbits: uint8(8), Fval: uint16(24)}, {Fbits: uint8(9), Fval: uint16(145)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(120)}, {Fbits: uint8(8), Fval: uint16(56)}, {Fbits: uint8(9), Fval: uint16(209)},
 12801  	{Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(104)}, {Fbits: uint8(8), Fval: uint16(40)}, {Fbits: uint8(9), Fval: uint16(177)}, {Fbits: uint8(8), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(136)}, {Fbits: uint8(8), Fval: uint16(72)},
 12802  	{Fbits: uint8(9), Fval: uint16(241)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(84)}, {Fbits: uint8(8), Fval: uint16(20)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(227)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(116)},
 12803  	{Fbits: uint8(8), Fval: uint16(52)}, {Fbits: uint8(9), Fval: uint16(201)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(100)}, {Fbits: uint8(8), Fval: uint16(36)}, {Fbits: uint8(9), Fval: uint16(169)}, {Fbits: uint8(8), Fval: uint16(4)},
 12804  	{Fbits: uint8(8), Fval: uint16(132)}, {Fbits: uint8(8), Fval: uint16(68)}, {Fbits: uint8(9), Fval: uint16(233)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(92)}, {Fbits: uint8(8), Fval: uint16(28)}, {Fbits: uint8(9), Fval: uint16(153)},
 12805  	{Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(124)}, {Fbits: uint8(8), Fval: uint16(60)}, {Fbits: uint8(9), Fval: uint16(217)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)}, {Fbits: uint8(8), Fval: uint16(108)}, {Fbits: uint8(8), Fval: uint16(44)},
 12806  	{Fbits: uint8(9), Fval: uint16(185)}, {Fbits: uint8(8), Fval: uint16(12)}, {Fbits: uint8(8), Fval: uint16(140)}, {Fbits: uint8(8), Fval: uint16(76)}, {Fbits: uint8(9), Fval: uint16(249)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(82)},
 12807  	{Fbits: uint8(8), Fval: uint16(18)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(163)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(114)}, {Fbits: uint8(8), Fval: uint16(50)}, {Fbits: uint8(9), Fval: uint16(197)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)},
 12808  	{Fbits: uint8(8), Fval: uint16(98)}, {Fbits: uint8(8), Fval: uint16(34)}, {Fbits: uint8(9), Fval: uint16(165)}, {Fbits: uint8(8), Fval: uint16(2)}, {Fbits: uint8(8), Fval: uint16(130)}, {Fbits: uint8(8), Fval: uint16(66)}, {Fbits: uint8(9), Fval: uint16(229)},
 12809  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(90)}, {Fbits: uint8(8), Fval: uint16(26)}, {Fbits: uint8(9), Fval: uint16(149)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)}, {Fbits: uint8(8), Fval: uint16(122)}, {Fbits: uint8(8), Fval: uint16(58)},
 12810  	{Fbits: uint8(9), Fval: uint16(213)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(106)}, {Fbits: uint8(8), Fval: uint16(42)}, {Fbits: uint8(9), Fval: uint16(181)}, {Fbits: uint8(8), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(138)},
 12811  	{Fbits: uint8(8), Fval: uint16(74)}, {Fbits: uint8(9), Fval: uint16(245)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(86)}, {Fbits: uint8(8), Fval: uint16(22)}, {Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)},
 12812  	{Fbits: uint8(8), Fval: uint16(118)}, {Fbits: uint8(8), Fval: uint16(54)}, {Fbits: uint8(9), Fval: uint16(205)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(102)}, {Fbits: uint8(8), Fval: uint16(38)}, {Fbits: uint8(9), Fval: uint16(173)},
 12813  	{Fbits: uint8(8), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(134)}, {Fbits: uint8(8), Fval: uint16(70)}, {Fbits: uint8(9), Fval: uint16(237)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)}, {Fbits: uint8(8), Fval: uint16(94)}, {Fbits: uint8(8), Fval: uint16(30)},
 12814  	{Fbits: uint8(9), Fval: uint16(157)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(126)}, {Fbits: uint8(8), Fval: uint16(62)}, {Fbits: uint8(9), Fval: uint16(221)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(110)},
 12815  	{Fbits: uint8(8), Fval: uint16(46)}, {Fbits: uint8(9), Fval: uint16(189)}, {Fbits: uint8(8), Fval: uint16(14)}, {Fbits: uint8(8), Fval: uint16(142)}, {Fbits: uint8(8), Fval: uint16(78)}, {Fbits: uint8(9), Fval: uint16(253)}, {Fop: uint8(96), Fbits: uint8(7)},
 12816  	{Fbits: uint8(8), Fval: uint16(81)}, {Fbits: uint8(8), Fval: uint16(17)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(131)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(31)}, {Fbits: uint8(8), Fval: uint16(113)}, {Fbits: uint8(8), Fval: uint16(49)}, {Fbits: uint8(9), Fval: uint16(195)},
 12817  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(10)}, {Fbits: uint8(8), Fval: uint16(97)}, {Fbits: uint8(8), Fval: uint16(33)}, {Fbits: uint8(9), Fval: uint16(163)}, {Fbits: uint8(8), Fval: uint16(1)}, {Fbits: uint8(8), Fval: uint16(129)}, {Fbits: uint8(8), Fval: uint16(65)},
 12818  	{Fbits: uint8(9), Fval: uint16(227)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(6)}, {Fbits: uint8(8), Fval: uint16(89)}, {Fbits: uint8(8), Fval: uint16(25)}, {Fbits: uint8(9), Fval: uint16(147)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(59)}, {Fbits: uint8(8), Fval: uint16(121)},
 12819  	{Fbits: uint8(8), Fval: uint16(57)}, {Fbits: uint8(9), Fval: uint16(211)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(17)}, {Fbits: uint8(8), Fval: uint16(105)}, {Fbits: uint8(8), Fval: uint16(41)}, {Fbits: uint8(9), Fval: uint16(179)}, {Fbits: uint8(8), Fval: uint16(9)},
 12820  	{Fbits: uint8(8), Fval: uint16(137)}, {Fbits: uint8(8), Fval: uint16(73)}, {Fbits: uint8(9), Fval: uint16(243)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(4)}, {Fbits: uint8(8), Fval: uint16(85)}, {Fbits: uint8(8), Fval: uint16(21)}, {Fop: uint8(16), Fbits: uint8(8), Fval: uint16(258)},
 12821  	{Fop: uint8(19), Fbits: uint8(7), Fval: uint16(43)}, {Fbits: uint8(8), Fval: uint16(117)}, {Fbits: uint8(8), Fval: uint16(53)}, {Fbits: uint8(9), Fval: uint16(203)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(101)}, {Fbits: uint8(8), Fval: uint16(37)},
 12822  	{Fbits: uint8(9), Fval: uint16(171)}, {Fbits: uint8(8), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(133)}, {Fbits: uint8(8), Fval: uint16(69)}, {Fbits: uint8(9), Fval: uint16(235)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(8)}, {Fbits: uint8(8), Fval: uint16(93)},
 12823  	{Fbits: uint8(8), Fval: uint16(29)}, {Fbits: uint8(9), Fval: uint16(155)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(125)}, {Fbits: uint8(8), Fval: uint16(61)}, {Fbits: uint8(9), Fval: uint16(219)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(23)},
 12824  	{Fbits: uint8(8), Fval: uint16(109)}, {Fbits: uint8(8), Fval: uint16(45)}, {Fbits: uint8(9), Fval: uint16(187)}, {Fbits: uint8(8), Fval: uint16(13)}, {Fbits: uint8(8), Fval: uint16(141)}, {Fbits: uint8(8), Fval: uint16(77)}, {Fbits: uint8(9), Fval: uint16(251)},
 12825  	{Fop: uint8(16), Fbits: uint8(7), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(83)}, {Fbits: uint8(8), Fval: uint16(19)}, {Fop: uint8(21), Fbits: uint8(8), Fval: uint16(195)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(35)}, {Fbits: uint8(8), Fval: uint16(115)}, {Fbits: uint8(8), Fval: uint16(51)},
 12826  	{Fbits: uint8(9), Fval: uint16(199)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(35)}, {Fbits: uint8(9), Fval: uint16(167)}, {Fbits: uint8(8), Fval: uint16(3)}, {Fbits: uint8(8), Fval: uint16(131)},
 12827  	{Fbits: uint8(8), Fval: uint16(67)}, {Fbits: uint8(9), Fval: uint16(231)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(91)}, {Fbits: uint8(8), Fval: uint16(27)}, {Fbits: uint8(9), Fval: uint16(151)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(67)},
 12828  	{Fbits: uint8(8), Fval: uint16(123)}, {Fbits: uint8(8), Fval: uint16(59)}, {Fbits: uint8(9), Fval: uint16(215)}, {Fop: uint8(18), Fbits: uint8(7), Fval: uint16(19)}, {Fbits: uint8(8), Fval: uint16(107)}, {Fbits: uint8(8), Fval: uint16(43)}, {Fbits: uint8(9), Fval: uint16(183)},
 12829  	{Fbits: uint8(8), Fval: uint16(11)}, {Fbits: uint8(8), Fval: uint16(139)}, {Fbits: uint8(8), Fval: uint16(75)}, {Fbits: uint8(9), Fval: uint16(247)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(5)}, {Fbits: uint8(8), Fval: uint16(87)}, {Fbits: uint8(8), Fval: uint16(23)},
 12830  	{Fop: uint8(64), Fbits: uint8(8)}, {Fop: uint8(19), Fbits: uint8(7), Fval: uint16(51)}, {Fbits: uint8(8), Fval: uint16(119)}, {Fbits: uint8(8), Fval: uint16(55)}, {Fbits: uint8(9), Fval: uint16(207)}, {Fop: uint8(17), Fbits: uint8(7), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(103)},
 12831  	{Fbits: uint8(8), Fval: uint16(39)}, {Fbits: uint8(9), Fval: uint16(175)}, {Fbits: uint8(8), Fval: uint16(7)}, {Fbits: uint8(8), Fval: uint16(135)}, {Fbits: uint8(8), Fval: uint16(71)}, {Fbits: uint8(9), Fval: uint16(239)}, {Fop: uint8(16), Fbits: uint8(7), Fval: uint16(9)},
 12832  	{Fbits: uint8(8), Fval: uint16(95)}, {Fbits: uint8(8), Fval: uint16(31)}, {Fbits: uint8(9), Fval: uint16(159)}, {Fop: uint8(20), Fbits: uint8(7), Fval: uint16(99)}, {Fbits: uint8(8), Fval: uint16(127)}, {Fbits: uint8(8), Fval: uint16(63)}, {Fbits: uint8(9), Fval: uint16(223)},
 12833  	{Fop: uint8(18), Fbits: uint8(7), Fval: uint16(27)}, {Fbits: uint8(8), Fval: uint16(111)}, {Fbits: uint8(8), Fval: uint16(47)}, {Fbits: uint8(9), Fval: uint16(191)}, {Fbits: uint8(8), Fval: uint16(15)}, {Fbits: uint8(8), Fval: uint16(143)}, {Fbits: uint8(8), Fval: uint16(79)},
 12834  	{Fbits: uint8(9), Fval: uint16(255)},
 12835  } /* inffixed.h:10:23 */
 12836  var distfix1 = [32]Code{
 12837  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(1)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(257)}, {Fop: uint8(19), Fbits: uint8(5), Fval: uint16(17)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(4097)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(5)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1025)},
 12838  	{Fop: uint8(21), Fbits: uint8(5), Fval: uint16(65)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(16385)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(3)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(513)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(33)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(8193)},
 12839  	{Fop: uint8(18), Fbits: uint8(5), Fval: uint16(9)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(2049)}, {Fop: uint8(22), Fbits: uint8(5), Fval: uint16(129)}, {Fop: uint8(64), Fbits: uint8(5)}, {Fop: uint8(16), Fbits: uint8(5), Fval: uint16(2)}, {Fop: uint8(23), Fbits: uint8(5), Fval: uint16(385)},
 12840  	{Fop: uint8(19), Fbits: uint8(5), Fval: uint16(25)}, {Fop: uint8(27), Fbits: uint8(5), Fval: uint16(6145)}, {Fop: uint8(17), Fbits: uint8(5), Fval: uint16(7)}, {Fop: uint8(25), Fbits: uint8(5), Fval: uint16(1537)}, {Fop: uint8(21), Fbits: uint8(5), Fval: uint16(97)}, {Fop: uint8(29), Fbits: uint8(5), Fval: uint16(24577)},
 12841  	{Fop: uint8(16), Fbits: uint8(5), Fval: uint16(4)}, {Fop: uint8(24), Fbits: uint8(5), Fval: uint16(769)}, {Fop: uint8(20), Fbits: uint8(5), Fval: uint16(49)}, {Fop: uint8(28), Fbits: uint8(5), Fval: uint16(12289)}, {Fop: uint8(18), Fbits: uint8(5), Fval: uint16(13)}, {Fop: uint8(26), Fbits: uint8(5), Fval: uint16(3073)},
 12842  	{Fop: uint8(22), Fbits: uint8(5), Fval: uint16(193)}, {Fop: uint8(64), Fbits: uint8(5)},
 12843  } /* inffixed.h:87:23 */
 12844  
 12845  //
 12846  //    Update the window with the last wsize (normally 32K) bytes written before
 12847  //    returning.  If window does not exist yet, create it.  This is only called
 12848  //    when a window is already in use, or when output has been written during this
 12849  //    inflate call, but the end of the deflate stream has not been reached yet.
 12850  //    It is also called to create a window for dictionary data when a dictionary
 12851  //    is loaded.
 12852  //
 12853  //    Providing output buffers larger than 32K to inflate() should provide a speed
 12854  //    advantage, since only the last 32K of output is copied to the sliding window
 12855  //    upon return from inflate(), and since all distances after the first 32K of
 12856  //    output will fall in the output data, making match copies simpler and faster.
 12857  //    The advantage may be dependent on the size of the processor's data caches.
 12858  //
 12859  func updatewindow(tls *libc.TLS, strm Z_streamp, end uintptr, copy uint32) int32 { /* inflate.c:396:11: */
 12860  	var state uintptr
 12861  	var dist uint32
 12862  
 12863  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 12864  
 12865  	// if it hasn't been done already, allocate space for the window
 12866  	if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) {
 12867  		(*Inflate_state)(unsafe.Pointer(state)).Fwindow = (*struct {
 12868  			f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 12869  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits), uint32(unsafe.Sizeof(uint8(0))))
 12870  		if (*Inflate_state)(unsafe.Pointer(state)).Fwindow == uintptr(Z_NULL) {
 12871  			return 1
 12872  		}
 12873  	}
 12874  
 12875  	// if window not in use yet, initialize
 12876  	if (*Inflate_state)(unsafe.Pointer(state)).Fwsize == uint32(0) {
 12877  		(*Inflate_state)(unsafe.Pointer(state)).Fwsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits)
 12878  		(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 12879  		(*Inflate_state)(unsafe.Pointer(state)).Fwhave = uint32(0)
 12880  	}
 12881  
 12882  	// copy state->wsize or less output bytes into the circular window
 12883  	if copy >= (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 12884  		libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwsize)), (*Inflate_state)(unsafe.Pointer(state)).Fwsize)
 12885  		(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 12886  		(*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 12887  	} else {
 12888  		dist = ((*Inflate_state)(unsafe.Pointer(state)).Fwsize - (*Inflate_state)(unsafe.Pointer(state)).Fwnext)
 12889  		if dist > copy {
 12890  			dist = copy
 12891  		}
 12892  		libc.Xmemcpy(tls, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)), (end - uintptr(copy)), dist)
 12893  		copy = copy - (dist)
 12894  		if copy != 0 {
 12895  			libc.Xmemcpy(tls, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, (end - uintptr(copy)), copy)
 12896  			(*Inflate_state)(unsafe.Pointer(state)).Fwnext = copy
 12897  			(*Inflate_state)(unsafe.Pointer(state)).Fwhave = (*Inflate_state)(unsafe.Pointer(state)).Fwsize
 12898  		} else {
 12899  			*(*uint32)(unsafe.Pointer(state + 52 /* &.wnext */)) += (dist)
 12900  			if (*Inflate_state)(unsafe.Pointer(state)).Fwnext == (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 12901  				(*Inflate_state)(unsafe.Pointer(state)).Fwnext = uint32(0)
 12902  			}
 12903  			if (*Inflate_state)(unsafe.Pointer(state)).Fwhave < (*Inflate_state)(unsafe.Pointer(state)).Fwsize {
 12904  				*(*uint32)(unsafe.Pointer(state + 48 /* &.whave */)) += (dist)
 12905  			}
 12906  		}
 12907  	}
 12908  	return 0
 12909  }
 12910  
 12911  // Macros for inflate():
 12912  
 12913  // check function to use adler32() for zlib or crc32() for gzip
 12914  
 12915  // check macros for header crc
 12916  
 12917  // Load registers with state in inflate() for speed
 12918  
 12919  // Restore state from registers in inflate()
 12920  
 12921  // Clear the input bit accumulator
 12922  
 12923  // Get a byte of input into the bit accumulator, or return from inflate()
 12924  //    if there is no input available.
 12925  
 12926  // Assure that there are at least n bits in the bit accumulator.  If there is
 12927  //    not enough available input to do that, then return from inflate().
 12928  
 12929  // Return the low n bits of the bit accumulator (n < 16)
 12930  
 12931  // Remove n bits from the bit accumulator
 12932  
 12933  // Remove zero to seven bits as needed to go to a byte boundary
 12934  
 12935  //
 12936  //    inflate() uses a state machine to process as much input data and generate as
 12937  //    much output data as possible before returning.  The state machine is
 12938  //    structured roughly as follows:
 12939  //
 12940  //     for (;;) switch (state) {
 12941  //     ...
 12942  //     case STATEn:
 12943  //         if (not enough input data or output space to make progress)
 12944  //             return;
 12945  //         ... make progress ...
 12946  //         state = STATEm;
 12947  //         break;
 12948  //     ...
 12949  //     }
 12950  //
 12951  //    so when inflate() is called again, the same case is attempted again, and
 12952  //    if the appropriate resources are provided, the machine proceeds to the
 12953  //    next state.  The NEEDBITS() macro is usually the way the state evaluates
 12954  //    whether it can proceed or should return.  NEEDBITS() does the return if
 12955  //    the requested bits are not available.  The typical use of the BITS macros
 12956  //    is:
 12957  //
 12958  //         NEEDBITS(n);
 12959  //         ... do something with BITS(n) ...
 12960  //         DROPBITS(n);
 12961  //
 12962  //    where NEEDBITS(n) either returns from inflate() if there isn't enough
 12963  //    input left to load n bits into the accumulator, or it continues.  BITS(n)
 12964  //    gives the low n bits in the accumulator.  When done, DROPBITS(n) drops
 12965  //    the low n bits off the accumulator.  INITBITS() clears the accumulator
 12966  //    and sets the number of available bits to zero.  BYTEBITS() discards just
 12967  //    enough bits to put the accumulator on a byte boundary.  After BYTEBITS()
 12968  //    and a NEEDBITS(8), then BITS(8) would return the next byte in the stream.
 12969  //
 12970  //    NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return
 12971  //    if there is no input available.  The decoding of variable length codes uses
 12972  //    PULLBYTE() directly in order to pull just enough bytes to decode the next
 12973  //    code, and no more.
 12974  //
 12975  //    Some states loop until they get enough input, making sure that enough
 12976  //    state information is maintained to continue the loop where it left off
 12977  //    if NEEDBITS() returns in the loop.  For example, want, need, and keep
 12978  //    would all have to actually be part of the saved state in case NEEDBITS()
 12979  //    returns:
 12980  //
 12981  //     case STATEw:
 12982  //         while (want < need) {
 12983  //             NEEDBITS(n);
 12984  //             keep[want++] = BITS(n);
 12985  //             DROPBITS(n);
 12986  //         }
 12987  //         state = STATEx;
 12988  //     case STATEx:
 12989  //
 12990  //    As shown above, if the next state is also the next case, then the break
 12991  //    is omitted.
 12992  //
 12993  //    A state may also return if there is not enough output space available to
 12994  //    complete that state.  Those states are copying stored data, writing a
 12995  //    literal byte, and copying a matching string.
 12996  //
 12997  //    When returning, a "goto inf_leave" is used to update the total counters,
 12998  //    update the check value, and determine whether any progress has been made
 12999  //    during that inflate() call in order to return the proper return code.
 13000  //    Progress is defined as a change in either strm->avail_in or strm->avail_out.
 13001  //    When there is a window, goto inf_leave will update the window with the last
 13002  //    output written.  If a goto inf_leave occurs in the middle of decompression
 13003  //    and there is no window currently, goto inf_leave will create one and copy
 13004  //    output to the window for the next call of inflate().
 13005  //
 13006  //    In this implementation, the flush parameter of inflate() only affects the
 13007  //    return code (per zlib.h).  inflate() always writes as much as possible to
 13008  //    strm->next_out, given the space available and the provided input--the effect
 13009  //    documented in zlib.h of Z_SYNC_FLUSH.  Furthermore, inflate() always defers
 13010  //    the allocation of and copying into a sliding window until necessary, which
 13011  //    provides the effect documented in zlib.h for Z_FINISH when the entire input
 13012  //    stream available.  So the only thing the flush parameter actually does is:
 13013  //    when flush is set to Z_FINISH, inflate() cannot return Z_OK.  Instead it
 13014  //    will return Z_BUF_ERROR if it has not reached the end of the stream.
 13015  //
 13016  
 13017  func Xinflate(tls *libc.TLS, strm Z_streamp, flush int32) int32 { /* inflate.c:622:13: */
 13018  	bp := tls.Alloc(4)
 13019  	defer tls.Free(4)
 13020  
 13021  	var state uintptr
 13022  	var next uintptr // next input
 13023  	var put uintptr  // next output
 13024  	var have uint32
 13025  	var left uint32 // available input and output
 13026  	var hold uint32 // bit buffer
 13027  	var bits uint32 // bits in bit buffer
 13028  	var in uint32
 13029  	var out uint32   // save starting available input and output
 13030  	var copy uint32  // number of stored or match bytes to copy
 13031  	var from uintptr // where to copy match bytes from
 13032  	var here Code    // current decoding table entry
 13033  	var last Code    // parent table entry
 13034  	var len uint32   // length to copy for repeats, bits to drop
 13035  	var ret int32    // return code
 13036  	// var hbuf [4]uint8 at bp, 4
 13037  
 13038  	if !(((inflateStateCheck(tls, strm) != 0) || ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out == uintptr(Z_NULL))) || (((*Z_stream)(unsafe.Pointer(strm)).Fnext_in == uintptr(Z_NULL)) && ((*Z_stream)(unsafe.Pointer(strm)).Favail_in != UInt(0)))) {
 13039  		goto __1
 13040  	}
 13041  	return -2
 13042  __1:
 13043  	;
 13044  
 13045  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 13046  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) {
 13047  		goto __2
 13048  	}
 13049  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO
 13050  __2:
 13051  	; // skip check
 13052  __3:
 13053  	put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 13054  	left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
 13055  	next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 13056  	have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
 13057  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 13058  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 13059  	goto __4
 13060  __4:
 13061  	if 0 != 0 {
 13062  		goto __3
 13063  	}
 13064  	goto __5
 13065  __5:
 13066  	;
 13067  	in = have
 13068  	out = left
 13069  	ret = Z_OK
 13070  __6:
 13071  	switch (*Inflate_state)(unsafe.Pointer(state)).Fmode {
 13072  	case HEAD:
 13073  		goto __10
 13074  	case FLAGS:
 13075  		goto __11
 13076  	case TIME:
 13077  		goto __12
 13078  	case OS:
 13079  		goto __13
 13080  	case EXLEN:
 13081  		goto __14
 13082  	case EXTRA:
 13083  		goto __15
 13084  	case NAME:
 13085  		goto __16
 13086  	case COMMENT:
 13087  		goto __17
 13088  	case HCRC:
 13089  		goto __18
 13090  	case DICTID:
 13091  		goto __19
 13092  	case DICT:
 13093  		goto __20
 13094  	case TYPE:
 13095  		goto __21
 13096  	case TYPEDO:
 13097  		goto __22
 13098  	case STORED:
 13099  		goto __23
 13100  	case COPY_:
 13101  		goto __24
 13102  	case COPY:
 13103  		goto __25
 13104  	case TABLE:
 13105  		goto __26
 13106  	case LENLENS:
 13107  		goto __27
 13108  	case CODELENS:
 13109  		goto __28
 13110  	case LEN_:
 13111  		goto __29
 13112  	case LEN:
 13113  		goto __30
 13114  	case LENEXT:
 13115  		goto __31
 13116  	case DIST:
 13117  		goto __32
 13118  	case DISTEXT:
 13119  		goto __33
 13120  	case MATCH:
 13121  		goto __34
 13122  	case LIT:
 13123  		goto __35
 13124  	case CHECK:
 13125  		goto __36
 13126  	case LENGTH:
 13127  		goto __37
 13128  	case DONE:
 13129  		goto __38
 13130  	case BAD:
 13131  		goto __39
 13132  	case MEM:
 13133  		goto __40
 13134  	case SYNC:
 13135  		goto __41
 13136  	default:
 13137  		goto __42
 13138  	}
 13139  	goto __9
 13140  __10:
 13141  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap == 0) {
 13142  		goto __43
 13143  	}
 13144  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPEDO
 13145  	goto __9
 13146  __43:
 13147  	;
 13148  __44:
 13149  __47:
 13150  	if !(bits < (uint32(16))) {
 13151  		goto __48
 13152  	}
 13153  __49:
 13154  	if !(have == uint32(0)) {
 13155  		goto __52
 13156  	}
 13157  	goto inf_leave
 13158  __52:
 13159  	;
 13160  	have--
 13161  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13162  	bits = bits + (uint32(8))
 13163  	goto __50
 13164  __50:
 13165  	if 0 != 0 {
 13166  		goto __49
 13167  	}
 13168  	goto __51
 13169  __51:
 13170  	;
 13171  	goto __47
 13172  __48:
 13173  	;
 13174  	goto __45
 13175  __45:
 13176  	if 0 != 0 {
 13177  		goto __44
 13178  	}
 13179  	goto __46
 13180  __46:
 13181  	;
 13182  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) != 0) && (hold == uint32(0x8b1f))) {
 13183  		goto __53
 13184  	} // gzip header
 13185  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) {
 13186  		goto __54
 13187  	}
 13188  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = uint32(15)
 13189  __54:
 13190  	;
 13191  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0))
 13192  __55:
 13193  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 13194  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 13195  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 13196  	goto __56
 13197  __56:
 13198  	if 0 != 0 {
 13199  		goto __55
 13200  	}
 13201  	goto __57
 13202  __57:
 13203  	;
 13204  __58:
 13205  	hold = uint32(0)
 13206  	bits = uint32(0)
 13207  	goto __59
 13208  __59:
 13209  	if 0 != 0 {
 13210  		goto __58
 13211  	}
 13212  	goto __60
 13213  __60:
 13214  	;
 13215  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = FLAGS
 13216  	goto __9
 13217  __53:
 13218  	;
 13219  	(*Inflate_state)(unsafe.Pointer(state)).Fflags = 0 // expect zlib header
 13220  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13221  		goto __61
 13222  	}
 13223  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = -1
 13224  __61:
 13225  	;
 13226  	if !(!(((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 1) != 0) || ((((uint32((uint32(hold) & ((uint32(1) << (8)) - uint32(1))) << 8)) + (hold >> 8)) % uint32(31)) != 0)) {
 13227  		goto __62
 13228  	}
 13229  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 669 /* "incorrect header..." */
 13230  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13231  	goto __9
 13232  __62:
 13233  	;
 13234  	if !((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) != uint32(Z_DEFLATED)) {
 13235  		goto __63
 13236  	}
 13237  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */
 13238  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13239  	goto __9
 13240  __63:
 13241  	;
 13242  __64:
 13243  	hold >>= 4
 13244  	bits = bits - (uint32(4))
 13245  	goto __65
 13246  __65:
 13247  	if 0 != 0 {
 13248  		goto __64
 13249  	}
 13250  	goto __66
 13251  __66:
 13252  	;
 13253  	len = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(8))
 13254  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwbits == uint32(0)) {
 13255  		goto __67
 13256  	}
 13257  	(*Inflate_state)(unsafe.Pointer(state)).Fwbits = len
 13258  __67:
 13259  	;
 13260  	if !((len > uint32(15)) || (len > (*Inflate_state)(unsafe.Pointer(state)).Fwbits)) {
 13261  		goto __68
 13262  	}
 13263  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 719 /* "invalid window s..." */
 13264  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13265  	goto __9
 13266  __68:
 13267  	;
 13268  	(*Inflate_state)(unsafe.Pointer(state)).Fdmax = (uint32(1) << len)
 13269  
 13270  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0)))
 13271  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = func() uint32 {
 13272  		if (hold & uint32(0x200)) != 0 {
 13273  			return DICTID
 13274  		}
 13275  		return TYPE
 13276  	}()
 13277  __69:
 13278  	hold = uint32(0)
 13279  	bits = uint32(0)
 13280  	goto __70
 13281  __70:
 13282  	if 0 != 0 {
 13283  		goto __69
 13284  	}
 13285  	goto __71
 13286  __71:
 13287  	;
 13288  	goto __9
 13289  __11:
 13290  __72:
 13291  __75:
 13292  	if !(bits < (uint32(16))) {
 13293  		goto __76
 13294  	}
 13295  __77:
 13296  	if !(have == uint32(0)) {
 13297  		goto __80
 13298  	}
 13299  	goto inf_leave
 13300  __80:
 13301  	;
 13302  	have--
 13303  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13304  	bits = bits + (uint32(8))
 13305  	goto __78
 13306  __78:
 13307  	if 0 != 0 {
 13308  		goto __77
 13309  	}
 13310  	goto __79
 13311  __79:
 13312  	;
 13313  	goto __75
 13314  __76:
 13315  	;
 13316  	goto __73
 13317  __73:
 13318  	if 0 != 0 {
 13319  		goto __72
 13320  	}
 13321  	goto __74
 13322  __74:
 13323  	;
 13324  	(*Inflate_state)(unsafe.Pointer(state)).Fflags = int32(hold)
 13325  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xff) != Z_DEFLATED) {
 13326  		goto __81
 13327  	}
 13328  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 692 /* "unknown compress..." */
 13329  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13330  	goto __9
 13331  __81:
 13332  	;
 13333  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0xe000) != 0) {
 13334  		goto __82
 13335  	}
 13336  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 739 /* "unknown header f..." */
 13337  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13338  	goto __9
 13339  __82:
 13340  	;
 13341  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13342  		goto __83
 13343  	}
 13344  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftext = (int32((hold >> 8) & uint32(1)))
 13345  __83:
 13346  	;
 13347  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 13348  		goto __84
 13349  	}
 13350  __85:
 13351  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 13352  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 13353  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 13354  	goto __86
 13355  __86:
 13356  	if 0 != 0 {
 13357  		goto __85
 13358  	}
 13359  	goto __87
 13360  __87:
 13361  	;
 13362  __84:
 13363  	;
 13364  __88:
 13365  	hold = uint32(0)
 13366  	bits = uint32(0)
 13367  	goto __89
 13368  __89:
 13369  	if 0 != 0 {
 13370  		goto __88
 13371  	}
 13372  	goto __90
 13373  __90:
 13374  	;
 13375  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TIME
 13376  __12:
 13377  __91:
 13378  __94:
 13379  	if !(bits < (uint32(32))) {
 13380  		goto __95
 13381  	}
 13382  __96:
 13383  	if !(have == uint32(0)) {
 13384  		goto __99
 13385  	}
 13386  	goto inf_leave
 13387  __99:
 13388  	;
 13389  	have--
 13390  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13391  	bits = bits + (uint32(8))
 13392  	goto __97
 13393  __97:
 13394  	if 0 != 0 {
 13395  		goto __96
 13396  	}
 13397  	goto __98
 13398  __98:
 13399  	;
 13400  	goto __94
 13401  __95:
 13402  	;
 13403  	goto __92
 13404  __92:
 13405  	if 0 != 0 {
 13406  		goto __91
 13407  	}
 13408  	goto __93
 13409  __93:
 13410  	;
 13411  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13412  		goto __100
 13413  	}
 13414  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Ftime = hold
 13415  __100:
 13416  	;
 13417  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 13418  		goto __101
 13419  	}
 13420  __102:
 13421  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 13422  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 13423  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 2)) = (uint8((hold) >> 16))
 13424  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 3)) = (uint8((hold) >> 24))
 13425  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(4))
 13426  	goto __103
 13427  __103:
 13428  	if 0 != 0 {
 13429  		goto __102
 13430  	}
 13431  	goto __104
 13432  __104:
 13433  	;
 13434  __101:
 13435  	;
 13436  __105:
 13437  	hold = uint32(0)
 13438  	bits = uint32(0)
 13439  	goto __106
 13440  __106:
 13441  	if 0 != 0 {
 13442  		goto __105
 13443  	}
 13444  	goto __107
 13445  __107:
 13446  	;
 13447  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = OS
 13448  __13:
 13449  __108:
 13450  __111:
 13451  	if !(bits < (uint32(16))) {
 13452  		goto __112
 13453  	}
 13454  __113:
 13455  	if !(have == uint32(0)) {
 13456  		goto __116
 13457  	}
 13458  	goto inf_leave
 13459  __116:
 13460  	;
 13461  	have--
 13462  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13463  	bits = bits + (uint32(8))
 13464  	goto __114
 13465  __114:
 13466  	if 0 != 0 {
 13467  		goto __113
 13468  	}
 13469  	goto __115
 13470  __115:
 13471  	;
 13472  	goto __111
 13473  __112:
 13474  	;
 13475  	goto __109
 13476  __109:
 13477  	if 0 != 0 {
 13478  		goto __108
 13479  	}
 13480  	goto __110
 13481  __110:
 13482  	;
 13483  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13484  		goto __117
 13485  	}
 13486  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fxflags = (int32(hold & uint32(0xff)))
 13487  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fos = (int32(hold >> 8))
 13488  __117:
 13489  	;
 13490  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 13491  		goto __118
 13492  	}
 13493  __119:
 13494  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 13495  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 13496  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 13497  	goto __120
 13498  __120:
 13499  	if 0 != 0 {
 13500  		goto __119
 13501  	}
 13502  	goto __121
 13503  __121:
 13504  	;
 13505  __118:
 13506  	;
 13507  __122:
 13508  	hold = uint32(0)
 13509  	bits = uint32(0)
 13510  	goto __123
 13511  __123:
 13512  	if 0 != 0 {
 13513  		goto __122
 13514  	}
 13515  	goto __124
 13516  __124:
 13517  	;
 13518  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = EXLEN
 13519  __14:
 13520  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) {
 13521  		goto __125
 13522  	}
 13523  __127:
 13524  __130:
 13525  	if !(bits < (uint32(16))) {
 13526  		goto __131
 13527  	}
 13528  __132:
 13529  	if !(have == uint32(0)) {
 13530  		goto __135
 13531  	}
 13532  	goto inf_leave
 13533  __135:
 13534  	;
 13535  	have--
 13536  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13537  	bits = bits + (uint32(8))
 13538  	goto __133
 13539  __133:
 13540  	if 0 != 0 {
 13541  		goto __132
 13542  	}
 13543  	goto __134
 13544  __134:
 13545  	;
 13546  	goto __130
 13547  __131:
 13548  	;
 13549  	goto __128
 13550  __128:
 13551  	if 0 != 0 {
 13552  		goto __127
 13553  	}
 13554  	goto __129
 13555  __129:
 13556  	;
 13557  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(hold)
 13558  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13559  		goto __136
 13560  	}
 13561  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len = uint32(hold)
 13562  __136:
 13563  	;
 13564  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 13565  		goto __137
 13566  	}
 13567  __138:
 13568  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */)) = uint8(hold)
 13569  	*(*uint8)(unsafe.Pointer(bp /* &hbuf[0] */ + 1)) = (uint8((hold) >> 8))
 13570  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, bp /* &hbuf[0] */, uint32(2))
 13571  	goto __139
 13572  __139:
 13573  	if 0 != 0 {
 13574  		goto __138
 13575  	}
 13576  	goto __140
 13577  __140:
 13578  	;
 13579  __137:
 13580  	;
 13581  __141:
 13582  	hold = uint32(0)
 13583  	bits = uint32(0)
 13584  	goto __142
 13585  __142:
 13586  	if 0 != 0 {
 13587  		goto __141
 13588  	}
 13589  	goto __143
 13590  __143:
 13591  	;
 13592  	goto __126
 13593  __125:
 13594  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13595  		goto __144
 13596  	}
 13597  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra = uintptr(Z_NULL)
 13598  __144:
 13599  	;
 13600  __126:
 13601  	;
 13602  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = EXTRA
 13603  __15:
 13604  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0400) != 0) {
 13605  		goto __145
 13606  	}
 13607  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 13608  	if !(copy > have) {
 13609  		goto __146
 13610  	}
 13611  	copy = have
 13612  __146:
 13613  	;
 13614  	if !(copy != 0) {
 13615  		goto __147
 13616  	}
 13617  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra != uintptr(Z_NULL))) {
 13618  		goto __148
 13619  	}
 13620  	len = ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_len - (*Inflate_state)(unsafe.Pointer(state)).Flength)
 13621  	libc.Xmemcpy(tls, ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra + uintptr(len)), next,
 13622  		func() uint32 {
 13623  			if (len + copy) > (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max {
 13624  				return ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fextra_max - len)
 13625  			}
 13626  			return copy
 13627  		}())
 13628  __148:
 13629  	;
 13630  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 13631  		goto __149
 13632  	}
 13633  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy)
 13634  __149:
 13635  	;
 13636  	have = have - (copy)
 13637  	next += uintptr(copy)
 13638  	*(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy)
 13639  __147:
 13640  	;
 13641  	if !((*Inflate_state)(unsafe.Pointer(state)).Flength != 0) {
 13642  		goto __150
 13643  	}
 13644  	goto inf_leave
 13645  __150:
 13646  	;
 13647  __145:
 13648  	;
 13649  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0)
 13650  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = NAME
 13651  __16:
 13652  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0800) != 0) {
 13653  		goto __151
 13654  	}
 13655  	if !(have == uint32(0)) {
 13656  		goto __153
 13657  	}
 13658  	goto inf_leave
 13659  __153:
 13660  	;
 13661  	copy = uint32(0)
 13662  __154:
 13663  	len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(&copy, 1)))))
 13664  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname != uintptr(Z_NULL))) && ((*Inflate_state)(unsafe.Pointer(state)).Flength < (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname_max)) {
 13665  		goto __157
 13666  	}
 13667  	*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Flength, 1)))) = Bytef(len)
 13668  __157:
 13669  	;
 13670  	goto __155
 13671  __155:
 13672  	if (len != 0) && (copy < have) {
 13673  		goto __154
 13674  	}
 13675  	goto __156
 13676  __156:
 13677  	;
 13678  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 13679  		goto __158
 13680  	}
 13681  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy)
 13682  __158:
 13683  	;
 13684  	have = have - (copy)
 13685  	next += uintptr(copy)
 13686  	if !(len != 0) {
 13687  		goto __159
 13688  	}
 13689  	goto inf_leave
 13690  __159:
 13691  	;
 13692  	goto __152
 13693  __151:
 13694  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13695  		goto __160
 13696  	}
 13697  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fname = uintptr(Z_NULL)
 13698  __160:
 13699  	;
 13700  __152:
 13701  	;
 13702  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(0)
 13703  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = COMMENT
 13704  __17:
 13705  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x1000) != 0) {
 13706  		goto __161
 13707  	}
 13708  	if !(have == uint32(0)) {
 13709  		goto __163
 13710  	}
 13711  	goto inf_leave
 13712  __163:
 13713  	;
 13714  	copy = uint32(0)
 13715  __164:
 13716  	len = uint32(*(*uint8)(unsafe.Pointer(next + uintptr(libc.PostIncUint32(&copy, 1)))))
 13717  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) && ((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment != uintptr(Z_NULL))) && ((*Inflate_state)(unsafe.Pointer(state)).Flength < (*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomm_max)) {
 13718  		goto __167
 13719  	}
 13720  	*(*Bytef)(unsafe.Pointer((*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Flength, 1)))) = Bytef(len)
 13721  __167:
 13722  	;
 13723  	goto __165
 13724  __165:
 13725  	if (len != 0) && (copy < have) {
 13726  		goto __164
 13727  	}
 13728  	goto __166
 13729  __166:
 13730  	;
 13731  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) && (((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0)) {
 13732  		goto __168
 13733  	}
 13734  	(*Inflate_state)(unsafe.Pointer(state)).Fcheck = Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, next, copy)
 13735  __168:
 13736  	;
 13737  	have = have - (copy)
 13738  	next += uintptr(copy)
 13739  	if !(len != 0) {
 13740  		goto __169
 13741  	}
 13742  	goto inf_leave
 13743  __169:
 13744  	;
 13745  	goto __162
 13746  __161:
 13747  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13748  		goto __170
 13749  	}
 13750  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fcomment = uintptr(Z_NULL)
 13751  __170:
 13752  	;
 13753  __162:
 13754  	;
 13755  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = HCRC
 13756  __18:
 13757  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fflags & 0x0200) != 0) {
 13758  		goto __171
 13759  	}
 13760  __172:
 13761  __175:
 13762  	if !(bits < (uint32(16))) {
 13763  		goto __176
 13764  	}
 13765  __177:
 13766  	if !(have == uint32(0)) {
 13767  		goto __180
 13768  	}
 13769  	goto inf_leave
 13770  __180:
 13771  	;
 13772  	have--
 13773  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13774  	bits = bits + (uint32(8))
 13775  	goto __178
 13776  __178:
 13777  	if 0 != 0 {
 13778  		goto __177
 13779  	}
 13780  	goto __179
 13781  __179:
 13782  	;
 13783  	goto __175
 13784  __176:
 13785  	;
 13786  	goto __173
 13787  __173:
 13788  	if 0 != 0 {
 13789  		goto __172
 13790  	}
 13791  	goto __174
 13792  __174:
 13793  	;
 13794  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (hold != ((*Inflate_state)(unsafe.Pointer(state)).Fcheck & uint32(0xffff)))) {
 13795  		goto __181
 13796  	}
 13797  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 764 /* "header crc misma..." */
 13798  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 13799  	goto __9
 13800  __181:
 13801  	;
 13802  __182:
 13803  	hold = uint32(0)
 13804  	bits = uint32(0)
 13805  	goto __183
 13806  __183:
 13807  	if 0 != 0 {
 13808  		goto __182
 13809  	}
 13810  	goto __184
 13811  __184:
 13812  	;
 13813  __171:
 13814  	;
 13815  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhead != uintptr(Z_NULL)) {
 13816  		goto __185
 13817  	}
 13818  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fhcrc = (((*Inflate_state)(unsafe.Pointer(state)).Fflags >> 9) & 1)
 13819  	(*Gz_header)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fhead)).Fdone = 1
 13820  __185:
 13821  	;
 13822  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, Xcrc32(tls, uint32(0), uintptr(Z_NULL), uint32(0)))
 13823  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 13824  	goto __9
 13825  __19:
 13826  __186:
 13827  __189:
 13828  	if !(bits < (uint32(32))) {
 13829  		goto __190
 13830  	}
 13831  __191:
 13832  	if !(have == uint32(0)) {
 13833  		goto __194
 13834  	}
 13835  	goto inf_leave
 13836  __194:
 13837  	;
 13838  	have--
 13839  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13840  	bits = bits + (uint32(8))
 13841  	goto __192
 13842  __192:
 13843  	if 0 != 0 {
 13844  		goto __191
 13845  	}
 13846  	goto __193
 13847  __193:
 13848  	;
 13849  	goto __189
 13850  __190:
 13851  	;
 13852  	goto __187
 13853  __187:
 13854  	if 0 != 0 {
 13855  		goto __186
 13856  	}
 13857  	goto __188
 13858  __188:
 13859  	;
 13860  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, ((((((hold) >> 24) & uint32(0xff)) + (((hold) >> 8) & uint32(0xff00))) + (((hold) & uint32(0xff00)) << 8)) + (((hold) & uint32(0xff)) << 24)))
 13861  __195:
 13862  	hold = uint32(0)
 13863  	bits = uint32(0)
 13864  	goto __196
 13865  __196:
 13866  	if 0 != 0 {
 13867  		goto __195
 13868  	}
 13869  	goto __197
 13870  __197:
 13871  	;
 13872  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DICT
 13873  __20:
 13874  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhavedict == 0) {
 13875  		goto __198
 13876  	}
 13877  __199:
 13878  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 13879  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 13880  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
 13881  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 13882  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 13883  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 13884  	goto __200
 13885  __200:
 13886  	if 0 != 0 {
 13887  		goto __199
 13888  	}
 13889  	goto __201
 13890  __201:
 13891  	;
 13892  	return Z_NEED_DICT
 13893  __198:
 13894  	;
 13895  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0)))
 13896  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 13897  __21:
 13898  	if !((flush == Z_BLOCK) || (flush == Z_TREES)) {
 13899  		goto __202
 13900  	}
 13901  	goto inf_leave
 13902  __202:
 13903  	;
 13904  __22:
 13905  	if !((*Inflate_state)(unsafe.Pointer(state)).Flast != 0) {
 13906  		goto __203
 13907  	}
 13908  __204:
 13909  	hold >>= (bits & uint32(7))
 13910  	bits = bits - (bits & uint32(7))
 13911  	goto __205
 13912  __205:
 13913  	if 0 != 0 {
 13914  		goto __204
 13915  	}
 13916  	goto __206
 13917  __206:
 13918  	;
 13919  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = CHECK
 13920  	goto __9
 13921  __203:
 13922  	;
 13923  __207:
 13924  __210:
 13925  	if !(bits < (uint32(3))) {
 13926  		goto __211
 13927  	}
 13928  __212:
 13929  	if !(have == uint32(0)) {
 13930  		goto __215
 13931  	}
 13932  	goto inf_leave
 13933  __215:
 13934  	;
 13935  	have--
 13936  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 13937  	bits = bits + (uint32(8))
 13938  	goto __213
 13939  __213:
 13940  	if 0 != 0 {
 13941  		goto __212
 13942  	}
 13943  	goto __214
 13944  __214:
 13945  	;
 13946  	goto __210
 13947  __211:
 13948  	;
 13949  	goto __208
 13950  __208:
 13951  	if 0 != 0 {
 13952  		goto __207
 13953  	}
 13954  	goto __209
 13955  __209:
 13956  	;
 13957  	(*Inflate_state)(unsafe.Pointer(state)).Flast = (int32(uint32(hold) & ((uint32(1) << (1)) - uint32(1))))
 13958  __216:
 13959  	hold >>= 1
 13960  	bits = bits - (uint32(1))
 13961  	goto __217
 13962  __217:
 13963  	if 0 != 0 {
 13964  		goto __216
 13965  	}
 13966  	goto __218
 13967  __218:
 13968  	;
 13969  	switch uint32(hold) & ((uint32(1) << (2)) - uint32(1)) {
 13970  	case uint32(0):
 13971  		goto __220
 13972  	case uint32(1):
 13973  		goto __221
 13974  	case uint32(2):
 13975  		goto __222
 13976  	case uint32(3):
 13977  		goto __223
 13978  	}
 13979  	goto __219
 13980  __220: // stored block
 13981  	;
 13982  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = STORED
 13983  	goto __219
 13984  __221: // fixed block
 13985  	fixedtables1(tls, state)
 13986  
 13987  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_ // decode codes
 13988  	if !(flush == Z_TREES) {
 13989  		goto __224
 13990  	}
 13991  __225:
 13992  	hold >>= 2
 13993  	bits = bits - (uint32(2))
 13994  	goto __226
 13995  __226:
 13996  	if 0 != 0 {
 13997  		goto __225
 13998  	}
 13999  	goto __227
 14000  __227:
 14001  	;
 14002  	goto inf_leave
 14003  __224:
 14004  	;
 14005  	goto __219
 14006  __222: // dynamic block
 14007  	;
 14008  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TABLE
 14009  	goto __219
 14010  __223:
 14011  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 367 /* "invalid block ty..." */
 14012  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14013  __219:
 14014  	;
 14015  __228:
 14016  	hold >>= 2
 14017  	bits = bits - (uint32(2))
 14018  	goto __229
 14019  __229:
 14020  	if 0 != 0 {
 14021  		goto __228
 14022  	}
 14023  	goto __230
 14024  __230:
 14025  	;
 14026  	goto __9
 14027  __23:
 14028  __231:
 14029  	hold >>= (bits & uint32(7))
 14030  	bits = bits - (bits & uint32(7))
 14031  	goto __232
 14032  __232:
 14033  	if 0 != 0 {
 14034  		goto __231
 14035  	}
 14036  	goto __233
 14037  __233:
 14038  	; // go to byte boundary
 14039  __234:
 14040  __237:
 14041  	if !(bits < (uint32(32))) {
 14042  		goto __238
 14043  	}
 14044  __239:
 14045  	if !(have == uint32(0)) {
 14046  		goto __242
 14047  	}
 14048  	goto inf_leave
 14049  __242:
 14050  	;
 14051  	have--
 14052  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14053  	bits = bits + (uint32(8))
 14054  	goto __240
 14055  __240:
 14056  	if 0 != 0 {
 14057  		goto __239
 14058  	}
 14059  	goto __241
 14060  __241:
 14061  	;
 14062  	goto __237
 14063  __238:
 14064  	;
 14065  	goto __235
 14066  __235:
 14067  	if 0 != 0 {
 14068  		goto __234
 14069  	}
 14070  	goto __236
 14071  __236:
 14072  	;
 14073  	if !((hold & uint32(0xffff)) != ((hold >> 16) ^ uint32(0xffff))) {
 14074  		goto __243
 14075  	}
 14076  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 386 /* "invalid stored b..." */
 14077  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14078  	goto __9
 14079  __243:
 14080  	;
 14081  	(*Inflate_state)(unsafe.Pointer(state)).Flength = (uint32(hold) & uint32(0xffff))
 14082  
 14083  __244:
 14084  	hold = uint32(0)
 14085  	bits = uint32(0)
 14086  	goto __245
 14087  __245:
 14088  	if 0 != 0 {
 14089  		goto __244
 14090  	}
 14091  	goto __246
 14092  __246:
 14093  	;
 14094  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY_
 14095  	if !(flush == Z_TREES) {
 14096  		goto __247
 14097  	}
 14098  	goto inf_leave
 14099  __247:
 14100  	;
 14101  __24:
 14102  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = COPY
 14103  __25:
 14104  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 14105  	if !(copy != 0) {
 14106  		goto __248
 14107  	}
 14108  	if !(copy > have) {
 14109  		goto __249
 14110  	}
 14111  	copy = have
 14112  __249:
 14113  	;
 14114  	if !(copy > left) {
 14115  		goto __250
 14116  	}
 14117  	copy = left
 14118  __250:
 14119  	;
 14120  	if !(copy == uint32(0)) {
 14121  		goto __251
 14122  	}
 14123  	goto inf_leave
 14124  __251:
 14125  	;
 14126  	libc.Xmemcpy(tls, put, next, copy)
 14127  	have = have - (copy)
 14128  	next += uintptr(copy)
 14129  	left = left - (copy)
 14130  	put += uintptr(copy)
 14131  	*(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy)
 14132  	goto __9
 14133  __248:
 14134  	;
 14135  
 14136  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 14137  	goto __9
 14138  __26:
 14139  __252:
 14140  __255:
 14141  	if !(bits < (uint32(14))) {
 14142  		goto __256
 14143  	}
 14144  __257:
 14145  	if !(have == uint32(0)) {
 14146  		goto __260
 14147  	}
 14148  	goto inf_leave
 14149  __260:
 14150  	;
 14151  	have--
 14152  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14153  	bits = bits + (uint32(8))
 14154  	goto __258
 14155  __258:
 14156  	if 0 != 0 {
 14157  		goto __257
 14158  	}
 14159  	goto __259
 14160  __259:
 14161  	;
 14162  	goto __255
 14163  __256:
 14164  	;
 14165  	goto __253
 14166  __253:
 14167  	if 0 != 0 {
 14168  		goto __252
 14169  	}
 14170  	goto __254
 14171  __254:
 14172  	;
 14173  	(*Inflate_state)(unsafe.Pointer(state)).Fnlen = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(257))
 14174  __261:
 14175  	hold >>= 5
 14176  	bits = bits - (uint32(5))
 14177  	goto __262
 14178  __262:
 14179  	if 0 != 0 {
 14180  		goto __261
 14181  	}
 14182  	goto __263
 14183  __263:
 14184  	;
 14185  	(*Inflate_state)(unsafe.Pointer(state)).Fndist = ((uint32(hold) & ((uint32(1) << (5)) - uint32(1))) + uint32(1))
 14186  __264:
 14187  	hold >>= 5
 14188  	bits = bits - (uint32(5))
 14189  	goto __265
 14190  __265:
 14191  	if 0 != 0 {
 14192  		goto __264
 14193  	}
 14194  	goto __266
 14195  __266:
 14196  	;
 14197  	(*Inflate_state)(unsafe.Pointer(state)).Fncode = ((uint32(hold) & ((uint32(1) << (4)) - uint32(1))) + uint32(4))
 14198  __267:
 14199  	hold >>= 4
 14200  	bits = bits - (uint32(4))
 14201  	goto __268
 14202  __268:
 14203  	if 0 != 0 {
 14204  		goto __267
 14205  	}
 14206  	goto __269
 14207  __269:
 14208  	;
 14209  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fnlen > uint32(286)) || ((*Inflate_state)(unsafe.Pointer(state)).Fndist > uint32(30))) {
 14210  		goto __270
 14211  	}
 14212  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 415 /* "too many length ..." */
 14213  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14214  	goto __9
 14215  __270:
 14216  	;
 14217  
 14218  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 14219  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LENLENS
 14220  __27:
 14221  __271:
 14222  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < (*Inflate_state)(unsafe.Pointer(state)).Fncode) {
 14223  		goto __272
 14224  	}
 14225  __273:
 14226  __276:
 14227  	if !(bits < (uint32(3))) {
 14228  		goto __277
 14229  	}
 14230  __278:
 14231  	if !(have == uint32(0)) {
 14232  		goto __281
 14233  	}
 14234  	goto inf_leave
 14235  __281:
 14236  	;
 14237  	have--
 14238  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14239  	bits = bits + (uint32(8))
 14240  	goto __279
 14241  __279:
 14242  	if 0 != 0 {
 14243  		goto __278
 14244  	}
 14245  	goto __280
 14246  __280:
 14247  	;
 14248  	goto __276
 14249  __277:
 14250  	;
 14251  	goto __274
 14252  __274:
 14253  	if 0 != 0 {
 14254  		goto __273
 14255  	}
 14256  	goto __275
 14257  __275:
 14258  	;
 14259  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = (uint16(uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
 14260  __282:
 14261  	hold >>= 3
 14262  	bits = bits - (uint32(3))
 14263  	goto __283
 14264  __283:
 14265  	if 0 != 0 {
 14266  		goto __282
 14267  	}
 14268  	goto __284
 14269  __284:
 14270  	;
 14271  	goto __271
 14272  __272:
 14273  	;
 14274  __285:
 14275  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < uint32(19)) {
 14276  		goto __286
 14277  	}
 14278  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(order1[libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1)])*2)) = uint16(0)
 14279  	goto __285
 14280  __286:
 14281  	;
 14282  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */
 14283  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 14284  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(7)
 14285  	ret = Xinflate_table(tls, CODES, state+116 /* &.lens */, uint32(19), (state + 112 /* &.next */),
 14286  		(state + 88 /* &.lenbits */), state+756 /* &.work */)
 14287  	if !(ret != 0) {
 14288  		goto __287
 14289  	}
 14290  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 451 /* "invalid code len..." */
 14291  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14292  	goto __9
 14293  __287:
 14294  	;
 14295  
 14296  	(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 14297  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = CODELENS
 14298  __28:
 14299  __288:
 14300  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave < ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
 14301  		goto __289
 14302  	}
 14303  __290:
 14304  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
 14305  	if !((uint32(here.Fbits)) <= bits) {
 14306  		goto __293
 14307  	}
 14308  	goto __292
 14309  __293:
 14310  	;
 14311  __294:
 14312  	if !(have == uint32(0)) {
 14313  		goto __297
 14314  	}
 14315  	goto inf_leave
 14316  __297:
 14317  	;
 14318  	have--
 14319  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14320  	bits = bits + (uint32(8))
 14321  	goto __295
 14322  __295:
 14323  	if 0 != 0 {
 14324  		goto __294
 14325  	}
 14326  	goto __296
 14327  __296:
 14328  	;
 14329  	goto __291
 14330  __291:
 14331  	goto __290
 14332  	goto __292
 14333  __292:
 14334  	;
 14335  	if !(int32(here.Fval) < 16) {
 14336  		goto __298
 14337  	}
 14338  __300:
 14339  	hold >>= int32(here.Fbits)
 14340  	bits = bits - (uint32(here.Fbits))
 14341  	goto __301
 14342  __301:
 14343  	if 0 != 0 {
 14344  		goto __300
 14345  	}
 14346  	goto __302
 14347  __302:
 14348  	;
 14349  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = here.Fval
 14350  	goto __299
 14351  __298:
 14352  	if !(int32(here.Fval) == 16) {
 14353  		goto __303
 14354  	}
 14355  __305:
 14356  __308:
 14357  	if !(bits < (uint32(int32(here.Fbits) + 2))) {
 14358  		goto __309
 14359  	}
 14360  __310:
 14361  	if !(have == uint32(0)) {
 14362  		goto __313
 14363  	}
 14364  	goto inf_leave
 14365  __313:
 14366  	;
 14367  	have--
 14368  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14369  	bits = bits + (uint32(8))
 14370  	goto __311
 14371  __311:
 14372  	if 0 != 0 {
 14373  		goto __310
 14374  	}
 14375  	goto __312
 14376  __312:
 14377  	;
 14378  	goto __308
 14379  __309:
 14380  	;
 14381  	goto __306
 14382  __306:
 14383  	if 0 != 0 {
 14384  		goto __305
 14385  	}
 14386  	goto __307
 14387  __307:
 14388  	;
 14389  __314:
 14390  	hold >>= int32(here.Fbits)
 14391  	bits = bits - (uint32(here.Fbits))
 14392  	goto __315
 14393  __315:
 14394  	if 0 != 0 {
 14395  		goto __314
 14396  	}
 14397  	goto __316
 14398  __316:
 14399  	;
 14400  	if !((*Inflate_state)(unsafe.Pointer(state)).Fhave == uint32(0)) {
 14401  		goto __317
 14402  	}
 14403  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
 14404  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14405  	goto __289
 14406  __317:
 14407  	;
 14408  	len = uint32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fhave-uint32(1)))*2)))
 14409  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (2)) - uint32(1))))
 14410  __318:
 14411  	hold >>= 2
 14412  	bits = bits - (uint32(2))
 14413  	goto __319
 14414  __319:
 14415  	if 0 != 0 {
 14416  		goto __318
 14417  	}
 14418  	goto __320
 14419  __320:
 14420  	;
 14421  	goto __304
 14422  __303:
 14423  	if !(int32(here.Fval) == 17) {
 14424  		goto __321
 14425  	}
 14426  __323:
 14427  __326:
 14428  	if !(bits < (uint32(int32(here.Fbits) + 3))) {
 14429  		goto __327
 14430  	}
 14431  __328:
 14432  	if !(have == uint32(0)) {
 14433  		goto __331
 14434  	}
 14435  	goto inf_leave
 14436  __331:
 14437  	;
 14438  	have--
 14439  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14440  	bits = bits + (uint32(8))
 14441  	goto __329
 14442  __329:
 14443  	if 0 != 0 {
 14444  		goto __328
 14445  	}
 14446  	goto __330
 14447  __330:
 14448  	;
 14449  	goto __326
 14450  __327:
 14451  	;
 14452  	goto __324
 14453  __324:
 14454  	if 0 != 0 {
 14455  		goto __323
 14456  	}
 14457  	goto __325
 14458  __325:
 14459  	;
 14460  __332:
 14461  	hold >>= int32(here.Fbits)
 14462  	bits = bits - (uint32(here.Fbits))
 14463  	goto __333
 14464  __333:
 14465  	if 0 != 0 {
 14466  		goto __332
 14467  	}
 14468  	goto __334
 14469  __334:
 14470  	;
 14471  	len = uint32(0)
 14472  	copy = (uint32(3) + (uint32(hold) & ((uint32(1) << (3)) - uint32(1))))
 14473  __335:
 14474  	hold >>= 3
 14475  	bits = bits - (uint32(3))
 14476  	goto __336
 14477  __336:
 14478  	if 0 != 0 {
 14479  		goto __335
 14480  	}
 14481  	goto __337
 14482  __337:
 14483  	;
 14484  	goto __322
 14485  __321:
 14486  __338:
 14487  __341:
 14488  	if !(bits < (uint32(int32(here.Fbits) + 7))) {
 14489  		goto __342
 14490  	}
 14491  __343:
 14492  	if !(have == uint32(0)) {
 14493  		goto __346
 14494  	}
 14495  	goto inf_leave
 14496  __346:
 14497  	;
 14498  	have--
 14499  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14500  	bits = bits + (uint32(8))
 14501  	goto __344
 14502  __344:
 14503  	if 0 != 0 {
 14504  		goto __343
 14505  	}
 14506  	goto __345
 14507  __345:
 14508  	;
 14509  	goto __341
 14510  __342:
 14511  	;
 14512  	goto __339
 14513  __339:
 14514  	if 0 != 0 {
 14515  		goto __338
 14516  	}
 14517  	goto __340
 14518  __340:
 14519  	;
 14520  __347:
 14521  	hold >>= int32(here.Fbits)
 14522  	bits = bits - (uint32(here.Fbits))
 14523  	goto __348
 14524  __348:
 14525  	if 0 != 0 {
 14526  		goto __347
 14527  	}
 14528  	goto __349
 14529  __349:
 14530  	;
 14531  	len = uint32(0)
 14532  	copy = (uint32(11) + (uint32(hold) & ((uint32(1) << (7)) - uint32(1))))
 14533  __350:
 14534  	hold >>= 7
 14535  	bits = bits - (uint32(7))
 14536  	goto __351
 14537  __351:
 14538  	if 0 != 0 {
 14539  		goto __350
 14540  	}
 14541  	goto __352
 14542  __352:
 14543  	;
 14544  __322:
 14545  	;
 14546  __304:
 14547  	;
 14548  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fhave + copy) > ((*Inflate_state)(unsafe.Pointer(state)).Fnlen + (*Inflate_state)(unsafe.Pointer(state)).Fndist)) {
 14549  		goto __353
 14550  	}
 14551  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 476 /* "invalid bit leng..." */
 14552  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14553  	goto __289
 14554  __353:
 14555  	;
 14556  __354:
 14557  	if !(libc.PostDecUint32(&copy, 1) != 0) {
 14558  		goto __355
 14559  	}
 14560  	*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + uintptr(libc.PostIncUint32(&(*Inflate_state)(unsafe.Pointer(state)).Fhave, 1))*2)) = uint16(len)
 14561  	goto __354
 14562  __355:
 14563  	;
 14564  __299:
 14565  	;
 14566  	goto __288
 14567  __289:
 14568  	;
 14569  
 14570  	// handle error breaks in while
 14571  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == BAD) {
 14572  		goto __356
 14573  	}
 14574  	goto __9
 14575  __356:
 14576  	;
 14577  
 14578  	// check for end-of-block code (better have one)
 14579  	if !(int32(*(*uint16)(unsafe.Pointer((state + 116 /* &.lens */) + 256*2))) == 0) {
 14580  		goto __357
 14581  	}
 14582  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 502 /* "invalid code -- ..." */
 14583  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14584  	goto __9
 14585  __357:
 14586  	;
 14587  
 14588  	// build code tables -- note: do not change the lenbits or distbits
 14589  	//                values here (9 and 6) without reading the comments in inftrees.h
 14590  	//                concerning the ENOUGH constants, which depend on those values
 14591  	(*Inflate_state)(unsafe.Pointer(state)).Fnext = state + 1332 /* &.codes */
 14592  	(*Inflate_state)(unsafe.Pointer(state)).Flencode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 14593  	(*Inflate_state)(unsafe.Pointer(state)).Flenbits = uint32(9)
 14594  	ret = Xinflate_table(tls, LENS, state+116 /* &.lens */, (*Inflate_state)(unsafe.Pointer(state)).Fnlen, (state + 112 /* &.next */),
 14595  		(state + 88 /* &.lenbits */), state+756 /* &.work */)
 14596  	if !(ret != 0) {
 14597  		goto __358
 14598  	}
 14599  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 539 /* "invalid literal/..." */
 14600  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14601  	goto __9
 14602  __358:
 14603  	;
 14604  	(*Inflate_state)(unsafe.Pointer(state)).Fdistcode = (*Inflate_state)(unsafe.Pointer(state)).Fnext
 14605  	(*Inflate_state)(unsafe.Pointer(state)).Fdistbits = uint32(6)
 14606  	ret = Xinflate_table(tls, DISTS, ((state + 116 /* &.lens */) + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fnlen)*2), (*Inflate_state)(unsafe.Pointer(state)).Fndist,
 14607  		(state + 112 /* &.next */), (state + 92 /* &.distbits */), state+756 /* &.work */)
 14608  	if !(ret != 0) {
 14609  		goto __359
 14610  	}
 14611  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 567 /* "invalid distance..." */
 14612  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14613  	goto __9
 14614  __359:
 14615  	;
 14616  
 14617  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN_
 14618  	if !(flush == Z_TREES) {
 14619  		goto __360
 14620  	}
 14621  	goto inf_leave
 14622  __360:
 14623  	;
 14624  __29:
 14625  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 14626  __30:
 14627  	if !((have >= uint32(6)) && (left >= uint32(258))) {
 14628  		goto __361
 14629  	}
 14630  __362:
 14631  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 14632  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 14633  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
 14634  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 14635  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 14636  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 14637  	goto __363
 14638  __363:
 14639  	if 0 != 0 {
 14640  		goto __362
 14641  	}
 14642  	goto __364
 14643  __364:
 14644  	;
 14645  	Xinflate_fast(tls, strm, out)
 14646  __365:
 14647  	put = (*Z_stream)(unsafe.Pointer(strm)).Fnext_out
 14648  	left = (*Z_stream)(unsafe.Pointer(strm)).Favail_out
 14649  	next = (*Z_stream)(unsafe.Pointer(strm)).Fnext_in
 14650  	have = (*Z_stream)(unsafe.Pointer(strm)).Favail_in
 14651  	hold = (*Inflate_state)(unsafe.Pointer(state)).Fhold
 14652  	bits = (*Inflate_state)(unsafe.Pointer(state)).Fbits
 14653  	goto __366
 14654  __366:
 14655  	if 0 != 0 {
 14656  		goto __365
 14657  	}
 14658  	goto __367
 14659  __367:
 14660  	;
 14661  	if !((*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE) {
 14662  		goto __368
 14663  	}
 14664  	(*Inflate_state)(unsafe.Pointer(state)).Fback = -1
 14665  __368:
 14666  	;
 14667  	goto __9
 14668  __361:
 14669  	;
 14670  	(*Inflate_state)(unsafe.Pointer(state)).Fback = 0
 14671  __369:
 14672  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Flenbits))-uint32(1))))*4))
 14673  	if !((uint32(here.Fbits)) <= bits) {
 14674  		goto __372
 14675  	}
 14676  	goto __371
 14677  __372:
 14678  	;
 14679  __373:
 14680  	if !(have == uint32(0)) {
 14681  		goto __376
 14682  	}
 14683  	goto inf_leave
 14684  __376:
 14685  	;
 14686  	have--
 14687  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14688  	bits = bits + (uint32(8))
 14689  	goto __374
 14690  __374:
 14691  	if 0 != 0 {
 14692  		goto __373
 14693  	}
 14694  	goto __375
 14695  __375:
 14696  	;
 14697  	goto __370
 14698  __370:
 14699  	goto __369
 14700  	goto __371
 14701  __371:
 14702  	;
 14703  	if !((here.Fop != 0) && ((int32(here.Fop) & 0xf0) == 0)) {
 14704  		goto __377
 14705  	}
 14706  	last = here
 14707  __378:
 14708  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Flencode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 14709  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 14710  		goto __381
 14711  	}
 14712  	goto __380
 14713  __381:
 14714  	;
 14715  __382:
 14716  	if !(have == uint32(0)) {
 14717  		goto __385
 14718  	}
 14719  	goto inf_leave
 14720  __385:
 14721  	;
 14722  	have--
 14723  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14724  	bits = bits + (uint32(8))
 14725  	goto __383
 14726  __383:
 14727  	if 0 != 0 {
 14728  		goto __382
 14729  	}
 14730  	goto __384
 14731  __384:
 14732  	;
 14733  	goto __379
 14734  __379:
 14735  	goto __378
 14736  	goto __380
 14737  __380:
 14738  	;
 14739  __386:
 14740  	hold >>= int32(last.Fbits)
 14741  	bits = bits - (uint32(last.Fbits))
 14742  	goto __387
 14743  __387:
 14744  	if 0 != 0 {
 14745  		goto __386
 14746  	}
 14747  	goto __388
 14748  __388:
 14749  	;
 14750  	*(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(last.Fbits))
 14751  __377:
 14752  	;
 14753  __389:
 14754  	hold >>= int32(here.Fbits)
 14755  	bits = bits - (uint32(here.Fbits))
 14756  	goto __390
 14757  __390:
 14758  	if 0 != 0 {
 14759  		goto __389
 14760  	}
 14761  	goto __391
 14762  __391:
 14763  	;
 14764  	*(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(here.Fbits))
 14765  	(*Inflate_state)(unsafe.Pointer(state)).Flength = uint32(here.Fval)
 14766  	if !((int32(here.Fop)) == 0) {
 14767  		goto __392
 14768  	}
 14769  
 14770  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LIT
 14771  	goto __9
 14772  __392:
 14773  	;
 14774  	if !((int32(here.Fop) & 32) != 0) {
 14775  		goto __393
 14776  	}
 14777  
 14778  	(*Inflate_state)(unsafe.Pointer(state)).Fback = -1
 14779  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 14780  	goto __9
 14781  __393:
 14782  	;
 14783  	if !((int32(here.Fop) & 64) != 0) {
 14784  		goto __394
 14785  	}
 14786  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 589 /* "invalid literal/..." */
 14787  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14788  	goto __9
 14789  __394:
 14790  	;
 14791  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 14792  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LENEXT
 14793  __31:
 14794  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) {
 14795  		goto __395
 14796  	}
 14797  __396:
 14798  __399:
 14799  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 14800  		goto __400
 14801  	}
 14802  __401:
 14803  	if !(have == uint32(0)) {
 14804  		goto __404
 14805  	}
 14806  	goto inf_leave
 14807  __404:
 14808  	;
 14809  	have--
 14810  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14811  	bits = bits + (uint32(8))
 14812  	goto __402
 14813  __402:
 14814  	if 0 != 0 {
 14815  		goto __401
 14816  	}
 14817  	goto __403
 14818  __403:
 14819  	;
 14820  	goto __399
 14821  __400:
 14822  	;
 14823  	goto __397
 14824  __397:
 14825  	if 0 != 0 {
 14826  		goto __396
 14827  	}
 14828  	goto __398
 14829  __398:
 14830  	;
 14831  	*(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 14832  __405:
 14833  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 14834  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 14835  	goto __406
 14836  __406:
 14837  	if 0 != 0 {
 14838  		goto __405
 14839  	}
 14840  	goto __407
 14841  __407:
 14842  	;
 14843  	*(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra))
 14844  __395:
 14845  	;
 14846  
 14847  	(*Inflate_state)(unsafe.Pointer(state)).Fwas = (*Inflate_state)(unsafe.Pointer(state)).Flength
 14848  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DIST
 14849  __32:
 14850  __408:
 14851  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(hold)&((uint32(1)<<((*Inflate_state)(unsafe.Pointer(state)).Fdistbits))-uint32(1))))*4))
 14852  	if !((uint32(here.Fbits)) <= bits) {
 14853  		goto __411
 14854  	}
 14855  	goto __410
 14856  __411:
 14857  	;
 14858  __412:
 14859  	if !(have == uint32(0)) {
 14860  		goto __415
 14861  	}
 14862  	goto inf_leave
 14863  __415:
 14864  	;
 14865  	have--
 14866  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14867  	bits = bits + (uint32(8))
 14868  	goto __413
 14869  __413:
 14870  	if 0 != 0 {
 14871  		goto __412
 14872  	}
 14873  	goto __414
 14874  __414:
 14875  	;
 14876  	goto __409
 14877  __409:
 14878  	goto __408
 14879  	goto __410
 14880  __410:
 14881  	;
 14882  	if !((int32(here.Fop) & 0xf0) == 0) {
 14883  		goto __416
 14884  	}
 14885  	last = here
 14886  __417:
 14887  	here = *(*Code)(unsafe.Pointer((*Inflate_state)(unsafe.Pointer(state)).Fdistcode + uintptr((uint32(last.Fval)+((uint32(hold)&((uint32(1)<<(int32(last.Fbits)+int32(last.Fop)))-uint32(1)))>>int32(last.Fbits))))*4))
 14888  	if !((uint32(int32(last.Fbits) + int32(here.Fbits))) <= bits) {
 14889  		goto __420
 14890  	}
 14891  	goto __419
 14892  __420:
 14893  	;
 14894  __421:
 14895  	if !(have == uint32(0)) {
 14896  		goto __424
 14897  	}
 14898  	goto inf_leave
 14899  __424:
 14900  	;
 14901  	have--
 14902  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14903  	bits = bits + (uint32(8))
 14904  	goto __422
 14905  __422:
 14906  	if 0 != 0 {
 14907  		goto __421
 14908  	}
 14909  	goto __423
 14910  __423:
 14911  	;
 14912  	goto __418
 14913  __418:
 14914  	goto __417
 14915  	goto __419
 14916  __419:
 14917  	;
 14918  __425:
 14919  	hold >>= int32(last.Fbits)
 14920  	bits = bits - (uint32(last.Fbits))
 14921  	goto __426
 14922  __426:
 14923  	if 0 != 0 {
 14924  		goto __425
 14925  	}
 14926  	goto __427
 14927  __427:
 14928  	;
 14929  	*(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(last.Fbits))
 14930  __416:
 14931  	;
 14932  __428:
 14933  	hold >>= int32(here.Fbits)
 14934  	bits = bits - (uint32(here.Fbits))
 14935  	goto __429
 14936  __429:
 14937  	if 0 != 0 {
 14938  		goto __428
 14939  	}
 14940  	goto __430
 14941  __430:
 14942  	;
 14943  	*(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += (int32(here.Fbits))
 14944  	if !((int32(here.Fop) & 64) != 0) {
 14945  		goto __431
 14946  	}
 14947  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 617 /* "invalid distance..." */
 14948  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 14949  	goto __9
 14950  __431:
 14951  	;
 14952  	(*Inflate_state)(unsafe.Pointer(state)).Foffset = uint32(here.Fval)
 14953  	(*Inflate_state)(unsafe.Pointer(state)).Fextra = ((uint32(here.Fop)) & uint32(15))
 14954  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DISTEXT
 14955  __33:
 14956  	if !((*Inflate_state)(unsafe.Pointer(state)).Fextra != 0) {
 14957  		goto __432
 14958  	}
 14959  __433:
 14960  __436:
 14961  	if !(bits < ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) {
 14962  		goto __437
 14963  	}
 14964  __438:
 14965  	if !(have == uint32(0)) {
 14966  		goto __441
 14967  	}
 14968  	goto inf_leave
 14969  __441:
 14970  	;
 14971  	have--
 14972  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 14973  	bits = bits + (uint32(8))
 14974  	goto __439
 14975  __439:
 14976  	if 0 != 0 {
 14977  		goto __438
 14978  	}
 14979  	goto __440
 14980  __440:
 14981  	;
 14982  	goto __436
 14983  __437:
 14984  	;
 14985  	goto __434
 14986  __434:
 14987  	if 0 != 0 {
 14988  		goto __433
 14989  	}
 14990  	goto __435
 14991  __435:
 14992  	;
 14993  	*(*uint32)(unsafe.Pointer(state + 72 /* &.offset */)) += (uint32(hold) & ((uint32(1) << ((*Inflate_state)(unsafe.Pointer(state)).Fextra)) - uint32(1)))
 14994  __442:
 14995  	hold >>= (*Inflate_state)(unsafe.Pointer(state)).Fextra
 14996  	bits = bits - ((*Inflate_state)(unsafe.Pointer(state)).Fextra)
 14997  	goto __443
 14998  __443:
 14999  	if 0 != 0 {
 15000  		goto __442
 15001  	}
 15002  	goto __444
 15003  __444:
 15004  	;
 15005  	*(*int32)(unsafe.Pointer(state + 7112 /* &.back */)) += int32(((*Inflate_state)(unsafe.Pointer(state)).Fextra))
 15006  __432:
 15007  	;
 15008  
 15009  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = MATCH
 15010  __34:
 15011  	if !(left == uint32(0)) {
 15012  		goto __445
 15013  	}
 15014  	goto inf_leave
 15015  __445:
 15016  	;
 15017  	copy = (out - left)
 15018  	if !((*Inflate_state)(unsafe.Pointer(state)).Foffset > copy) {
 15019  		goto __446
 15020  	} // copy from window
 15021  	copy = ((*Inflate_state)(unsafe.Pointer(state)).Foffset - copy)
 15022  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwhave) {
 15023  		goto __448
 15024  	}
 15025  	if !((*Inflate_state)(unsafe.Pointer(state)).Fsane != 0) {
 15026  		goto __449
 15027  	}
 15028  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 639 /* "invalid distance..." */
 15029  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 15030  	goto __9
 15031  __449:
 15032  	;
 15033  __448:
 15034  	;
 15035  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Fwnext) {
 15036  		goto __450
 15037  	}
 15038  	copy = copy - ((*Inflate_state)(unsafe.Pointer(state)).Fwnext)
 15039  	from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwsize - copy)))
 15040  	goto __451
 15041  __450:
 15042  	from = ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr(((*Inflate_state)(unsafe.Pointer(state)).Fwnext - copy)))
 15043  __451:
 15044  	;
 15045  	if !(copy > (*Inflate_state)(unsafe.Pointer(state)).Flength) {
 15046  		goto __452
 15047  	}
 15048  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 15049  __452:
 15050  	;
 15051  	goto __447
 15052  __446: // copy from output
 15053  	from = (put - uintptr((*Inflate_state)(unsafe.Pointer(state)).Foffset))
 15054  	copy = (*Inflate_state)(unsafe.Pointer(state)).Flength
 15055  __447:
 15056  	;
 15057  	if !(copy > left) {
 15058  		goto __453
 15059  	}
 15060  	copy = left
 15061  __453:
 15062  	;
 15063  	left = left - (copy)
 15064  	*(*uint32)(unsafe.Pointer(state + 68 /* &.length */)) -= (copy)
 15065  __454:
 15066  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = *(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&from, 1)))
 15067  	goto __455
 15068  __455:
 15069  	if libc.PreDecUint32(&copy, 1) != 0 {
 15070  		goto __454
 15071  	}
 15072  	goto __456
 15073  __456:
 15074  	;
 15075  	if !((*Inflate_state)(unsafe.Pointer(state)).Flength == uint32(0)) {
 15076  		goto __457
 15077  	}
 15078  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 15079  __457:
 15080  	;
 15081  	goto __9
 15082  __35:
 15083  	if !(left == uint32(0)) {
 15084  		goto __458
 15085  	}
 15086  	goto inf_leave
 15087  __458:
 15088  	;
 15089  	*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&put, 1))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Flength)
 15090  	left--
 15091  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LEN
 15092  	goto __9
 15093  __36:
 15094  	if !((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) {
 15095  		goto __459
 15096  	}
 15097  __460:
 15098  __463:
 15099  	if !(bits < (uint32(32))) {
 15100  		goto __464
 15101  	}
 15102  __465:
 15103  	if !(have == uint32(0)) {
 15104  		goto __468
 15105  	}
 15106  	goto inf_leave
 15107  __468:
 15108  	;
 15109  	have--
 15110  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 15111  	bits = bits + (uint32(8))
 15112  	goto __466
 15113  __466:
 15114  	if 0 != 0 {
 15115  		goto __465
 15116  	}
 15117  	goto __467
 15118  __467:
 15119  	;
 15120  	goto __463
 15121  __464:
 15122  	;
 15123  	goto __461
 15124  __461:
 15125  	if 0 != 0 {
 15126  		goto __460
 15127  	}
 15128  	goto __462
 15129  __462:
 15130  	;
 15131  	out = out - (left)
 15132  	*(*ULong)(unsafe.Pointer(strm + 20 /* &.total_out */)) += (ULong(out))
 15133  	*(*uint32)(unsafe.Pointer(state + 32 /* &.total */)) += (uint32(out))
 15134  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) {
 15135  		goto __469
 15136  	}
 15137  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, func() uint32 {
 15138  		if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 {
 15139  			return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out)
 15140  		}
 15141  		return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, (put - uintptr(out)), out)
 15142  	}())
 15143  __469:
 15144  	;
 15145  	out = left
 15146  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && ((func() uint32 {
 15147  		if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 {
 15148  			return hold
 15149  		}
 15150  		return ((((((hold) >> 24) & uint32(0xff)) + (((hold) >> 8) & uint32(0xff00))) + (((hold) & uint32(0xff00)) << 8)) + (((hold) & uint32(0xff)) << 24))
 15151  	}()) != (*Inflate_state)(unsafe.Pointer(state)).Fcheck)) {
 15152  		goto __470
 15153  	}
 15154  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 784 /* "incorrect data c..." */
 15155  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 15156  	goto __9
 15157  __470:
 15158  	;
 15159  __471:
 15160  	hold = uint32(0)
 15161  	bits = uint32(0)
 15162  	goto __472
 15163  __472:
 15164  	if 0 != 0 {
 15165  		goto __471
 15166  	}
 15167  	goto __473
 15168  __473:
 15169  	;
 15170  
 15171  __459:
 15172  	;
 15173  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = LENGTH
 15174  __37:
 15175  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fflags != 0)) {
 15176  		goto __474
 15177  	}
 15178  __475:
 15179  __478:
 15180  	if !(bits < (uint32(32))) {
 15181  		goto __479
 15182  	}
 15183  __480:
 15184  	if !(have == uint32(0)) {
 15185  		goto __483
 15186  	}
 15187  	goto inf_leave
 15188  __483:
 15189  	;
 15190  	have--
 15191  	hold = hold + ((uint32(*(*uint8)(unsafe.Pointer(libc.PostIncUintptr(&next, 1))))) << bits)
 15192  	bits = bits + (uint32(8))
 15193  	goto __481
 15194  __481:
 15195  	if 0 != 0 {
 15196  		goto __480
 15197  	}
 15198  	goto __482
 15199  __482:
 15200  	;
 15201  	goto __478
 15202  __479:
 15203  	;
 15204  	goto __476
 15205  __476:
 15206  	if 0 != 0 {
 15207  		goto __475
 15208  	}
 15209  	goto __477
 15210  __477:
 15211  	;
 15212  	if !(hold != ((*Inflate_state)(unsafe.Pointer(state)).Ftotal & 0xffffffff)) {
 15213  		goto __484
 15214  	}
 15215  	(*Z_stream)(unsafe.Pointer(strm)).Fmsg = ts + 805 /* "incorrect length..." */
 15216  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = BAD
 15217  	goto __9
 15218  __484:
 15219  	;
 15220  __485:
 15221  	hold = uint32(0)
 15222  	bits = uint32(0)
 15223  	goto __486
 15224  __486:
 15225  	if 0 != 0 {
 15226  		goto __485
 15227  	}
 15228  	goto __487
 15229  __487:
 15230  	;
 15231  
 15232  __474:
 15233  	;
 15234  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = DONE
 15235  __38:
 15236  	ret = Z_STREAM_END
 15237  	goto inf_leave
 15238  __39:
 15239  	ret = -3
 15240  	goto inf_leave
 15241  __40:
 15242  	return -4
 15243  __41:
 15244  __42:
 15245  	return -2
 15246  __9:
 15247  	;
 15248  	goto __7
 15249  __7:
 15250  	goto __6
 15251  	goto __8
 15252  __8:
 15253  	;
 15254  
 15255  	//
 15256  	//        Return from inflate(), updating the total counts and the check value.
 15257  	//        If there was no progress during the inflate() call, return a buffer
 15258  	//        error.  Call updatewindow() to create and/or update the window state.
 15259  	//        Note: a memory error from inflate() is non-recoverable.
 15260  	//
 15261  inf_leave:
 15262  __488:
 15263  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_out = put
 15264  	(*Z_stream)(unsafe.Pointer(strm)).Favail_out = left
 15265  	(*Z_stream)(unsafe.Pointer(strm)).Fnext_in = next
 15266  	(*Z_stream)(unsafe.Pointer(strm)).Favail_in = have
 15267  	(*Inflate_state)(unsafe.Pointer(state)).Fhold = hold
 15268  	(*Inflate_state)(unsafe.Pointer(state)).Fbits = bits
 15269  	goto __489
 15270  __489:
 15271  	if 0 != 0 {
 15272  		goto __488
 15273  	}
 15274  	goto __490
 15275  __490:
 15276  	;
 15277  	if !(((*Inflate_state)(unsafe.Pointer(state)).Fwsize != 0) || (((out != (*Z_stream)(unsafe.Pointer(strm)).Favail_out) && ((*Inflate_state)(unsafe.Pointer(state)).Fmode < BAD)) && (((*Inflate_state)(unsafe.Pointer(state)).Fmode < CHECK) || (flush != Z_FINISH)))) {
 15278  		goto __491
 15279  	}
 15280  	if !(updatewindow(tls, strm, (*Z_stream)(unsafe.Pointer(strm)).Fnext_out, (out-(*Z_stream)(unsafe.Pointer(strm)).Favail_out)) != 0) {
 15281  		goto __492
 15282  	}
 15283  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM
 15284  	return -4
 15285  __492:
 15286  	;
 15287  __491:
 15288  	;
 15289  	in = in - ((*Z_stream)(unsafe.Pointer(strm)).Favail_in)
 15290  	out = out - ((*Z_stream)(unsafe.Pointer(strm)).Favail_out)
 15291  	*(*ULong)(unsafe.Pointer(strm + 8 /* &.total_in */)) += (ULong(in))
 15292  	*(*ULong)(unsafe.Pointer(strm + 20 /* &.total_out */)) += (ULong(out))
 15293  	*(*uint32)(unsafe.Pointer(state + 32 /* &.total */)) += (uint32(out))
 15294  	if !((((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 4) != 0) && (out != 0)) {
 15295  		goto __493
 15296  	}
 15297  	(*Z_stream)(unsafe.Pointer(strm)).Fadler = libc.AssignPtrUint32(state+28 /* &.check */, func() uint32 {
 15298  		if (*Inflate_state)(unsafe.Pointer(state)).Fflags != 0 {
 15299  			return Xcrc32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out)
 15300  		}
 15301  		return Xadler32(tls, (*Inflate_state)(unsafe.Pointer(state)).Fcheck, ((*Z_stream)(unsafe.Pointer(strm)).Fnext_out - uintptr(out)), out)
 15302  	}())
 15303  __493:
 15304  	;
 15305  	(*Z_stream)(unsafe.Pointer(strm)).Fdata_type = (((int32((*Inflate_state)(unsafe.Pointer(state)).Fbits) + (func() int32 {
 15306  		if (*Inflate_state)(unsafe.Pointer(state)).Flast != 0 {
 15307  			return 64
 15308  		}
 15309  		return 0
 15310  	}())) + (func() int32 {
 15311  		if (*Inflate_state)(unsafe.Pointer(state)).Fmode == TYPE {
 15312  			return 128
 15313  		}
 15314  		return 0
 15315  	}())) + (func() int32 {
 15316  		if ((*Inflate_state)(unsafe.Pointer(state)).Fmode == LEN_) || ((*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY_) {
 15317  			return 256
 15318  		}
 15319  		return 0
 15320  	}()))
 15321  	if !((((in == uint32(0)) && (out == uint32(0))) || (flush == Z_FINISH)) && (ret == Z_OK)) {
 15322  		goto __494
 15323  	}
 15324  	ret = -5
 15325  __494:
 15326  	;
 15327  	return ret
 15328  }
 15329  
 15330  var order1 =                                                                                                                                                                                                                         // permutation of code lengths
 15331  [19]uint16{uint16(16), uint16(17), uint16(18), uint16(0), uint16(8), uint16(7), uint16(9), uint16(6), uint16(10), uint16(5), uint16(11), uint16(4), uint16(12), uint16(3), uint16(13), uint16(2), uint16(14), uint16(1), uint16(15)} /* inflate.c:642:33 */
 15332  
 15333  func XinflateEnd(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1277:13: */
 15334  	var state uintptr
 15335  	if inflateStateCheck(tls, strm) != 0 {
 15336  		return -2
 15337  	}
 15338  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15339  	if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) {
 15340  		(*struct {
 15341  			f func(*libc.TLS, Voidpf, Voidpf)
 15342  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Inflate_state)(unsafe.Pointer(state)).Fwindow)
 15343  	}
 15344  	(*struct {
 15345  		f func(*libc.TLS, Voidpf, Voidpf)
 15346  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((strm))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(strm)).Fopaque, (*Z_stream)(unsafe.Pointer(strm)).Fstate)
 15347  	(*Z_stream)(unsafe.Pointer(strm)).Fstate = uintptr(Z_NULL)
 15348  
 15349  	return Z_OK
 15350  }
 15351  
 15352  func XinflateGetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength uintptr) int32 { /* inflate.c:1291:13: */
 15353  	var state uintptr
 15354  
 15355  	// check state
 15356  	if inflateStateCheck(tls, strm) != 0 {
 15357  		return -2
 15358  	}
 15359  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15360  
 15361  	// copy dictionary
 15362  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwhave != 0) && (dictionary != uintptr(Z_NULL)) {
 15363  		libc.Xmemcpy(tls, dictionary, ((*Inflate_state)(unsafe.Pointer(state)).Fwindow + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)),
 15364  			((*Inflate_state)(unsafe.Pointer(state)).Fwhave - (*Inflate_state)(unsafe.Pointer(state)).Fwnext))
 15365  		libc.Xmemcpy(tls, ((dictionary + uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwhave)) - uintptr((*Inflate_state)(unsafe.Pointer(state)).Fwnext)),
 15366  			(*Inflate_state)(unsafe.Pointer(state)).Fwindow, (*Inflate_state)(unsafe.Pointer(state)).Fwnext)
 15367  	}
 15368  	if dictLength != uintptr(Z_NULL) {
 15369  		*(*UInt)(unsafe.Pointer(dictLength)) = (*Inflate_state)(unsafe.Pointer(state)).Fwhave
 15370  	}
 15371  	return Z_OK
 15372  }
 15373  
 15374  func XinflateSetDictionary(tls *libc.TLS, strm Z_streamp, dictionary uintptr, dictLength UInt) int32 { /* inflate.c:1314:13: */
 15375  	var state uintptr
 15376  	var dictid uint32
 15377  	var ret int32
 15378  
 15379  	// check state
 15380  	if inflateStateCheck(tls, strm) != 0 {
 15381  		return -2
 15382  	}
 15383  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15384  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap != 0) && ((*Inflate_state)(unsafe.Pointer(state)).Fmode != DICT) {
 15385  		return -2
 15386  	}
 15387  
 15388  	// check for correct dictionary identifier
 15389  	if (*Inflate_state)(unsafe.Pointer(state)).Fmode == DICT {
 15390  		dictid = Xadler32(tls, uint32(0), uintptr(Z_NULL), uint32(0))
 15391  		dictid = Xadler32(tls, dictid, dictionary, dictLength)
 15392  		if dictid != (*Inflate_state)(unsafe.Pointer(state)).Fcheck {
 15393  			return -3
 15394  		}
 15395  	}
 15396  
 15397  	// copy dictionary to window using updatewindow(), which will amend the
 15398  	//        existing dictionary if appropriate
 15399  	ret = updatewindow(tls, strm, (dictionary + uintptr(dictLength)), dictLength)
 15400  	if ret != 0 {
 15401  		(*Inflate_state)(unsafe.Pointer(state)).Fmode = MEM
 15402  		return -4
 15403  	}
 15404  	(*Inflate_state)(unsafe.Pointer(state)).Fhavedict = 1
 15405  
 15406  	return Z_OK
 15407  }
 15408  
 15409  func XinflateGetHeader(tls *libc.TLS, strm Z_streamp, head Gz_headerp) int32 { /* inflate.c:1349:13: */
 15410  	var state uintptr
 15411  
 15412  	// check state
 15413  	if inflateStateCheck(tls, strm) != 0 {
 15414  		return -2
 15415  	}
 15416  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15417  	if ((*Inflate_state)(unsafe.Pointer(state)).Fwrap & 2) == 0 {
 15418  		return -2
 15419  	}
 15420  
 15421  	// save header structure
 15422  	(*Inflate_state)(unsafe.Pointer(state)).Fhead = head
 15423  	(*Gz_header)(unsafe.Pointer(head)).Fdone = 0
 15424  	return Z_OK
 15425  }
 15426  
 15427  //
 15428  //    Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff.  Return when found
 15429  //    or when out of input.  When called, *have is the number of pattern bytes
 15430  //    found in order so far, in 0..3.  On return *have is updated to the new
 15431  //    state.  If on return *have equals four, then the pattern was found and the
 15432  //    return value is how many bytes were read including the last byte of the
 15433  //    pattern.  If *have is less than four, then the pattern has not been found
 15434  //    yet and the return value is len.  In the latter case, syncsearch() can be
 15435  //    called again with more data and the *have state.  *have is initialized to
 15436  //    zero for the first call.
 15437  //
 15438  func syncsearch(tls *libc.TLS, have uintptr, buf uintptr, len uint32) uint32 { /* inflate.c:1377:16: */
 15439  	var got uint32
 15440  	var next uint32
 15441  
 15442  	got = *(*uint32)(unsafe.Pointer(have))
 15443  	next = uint32(0)
 15444  	for (next < len) && (got < uint32(4)) {
 15445  		if (int32(*(*uint8)(unsafe.Pointer(buf + uintptr(next))))) == (func() int32 {
 15446  			if got < uint32(2) {
 15447  				return 0
 15448  			}
 15449  			return 0xff
 15450  		}()) {
 15451  			got++
 15452  		} else if *(*uint8)(unsafe.Pointer(buf + uintptr(next))) != 0 {
 15453  			got = uint32(0)
 15454  		} else {
 15455  			got = (uint32(4) - got)
 15456  		}
 15457  		next++
 15458  	}
 15459  	*(*uint32)(unsafe.Pointer(have)) = got
 15460  	return next
 15461  }
 15462  
 15463  func XinflateSync(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1400:13: */
 15464  	bp := tls.Alloc(4)
 15465  	defer tls.Free(4)
 15466  
 15467  	var len uint32 // number of bytes to look at or looked at
 15468  	var in uint32
 15469  	var out uint32 // temporary to save total_in and total_out
 15470  	// var buf [4]uint8 at bp, 4
 15471  	// to restore bit buffer to byte string
 15472  	var state uintptr
 15473  
 15474  	// check parameters
 15475  	if inflateStateCheck(tls, strm) != 0 {
 15476  		return -2
 15477  	}
 15478  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15479  	if ((*Z_stream)(unsafe.Pointer(strm)).Favail_in == UInt(0)) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits < uint32(8)) {
 15480  		return -5
 15481  	}
 15482  
 15483  	// if first time, start search in bit buffer
 15484  	if (*Inflate_state)(unsafe.Pointer(state)).Fmode != SYNC {
 15485  		(*Inflate_state)(unsafe.Pointer(state)).Fmode = SYNC
 15486  		libc.AssignShlPtrUint32(state+60 /* &.hold */, int(((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7))))
 15487  		*(*uint32)(unsafe.Pointer(state + 64 /* &.bits */)) -= ((*Inflate_state)(unsafe.Pointer(state)).Fbits & uint32(7))
 15488  		len = uint32(0)
 15489  		for (*Inflate_state)(unsafe.Pointer(state)).Fbits >= uint32(8) {
 15490  			*(*uint8)(unsafe.Pointer(bp /* &buf[0] */ + uintptr(libc.PostIncUint32(&len, 1)))) = uint8((*Inflate_state)(unsafe.Pointer(state)).Fhold)
 15491  			libc.AssignShrPtrUint32(state+60 /* &.hold */, int(8))
 15492  			*(*uint32)(unsafe.Pointer(state + 64 /* &.bits */)) -= (uint32(8))
 15493  		}
 15494  		(*Inflate_state)(unsafe.Pointer(state)).Fhave = uint32(0)
 15495  		syncsearch(tls, (state + 108 /* &.have */), bp /* &buf[0] */, len)
 15496  	}
 15497  
 15498  	// search available input
 15499  	len = syncsearch(tls, (state + 108 /* &.have */), (*Z_stream)(unsafe.Pointer(strm)).Fnext_in, (*Z_stream)(unsafe.Pointer(strm)).Favail_in)
 15500  	*(*UInt)(unsafe.Pointer(strm + 4 /* &.avail_in */)) -= (len)
 15501  	*(*uintptr)(unsafe.Pointer(strm /* &.next_in */)) += (uintptr(len))
 15502  	*(*ULong)(unsafe.Pointer(strm + 8 /* &.total_in */)) += (ULong(len))
 15503  
 15504  	// return no joy or set up to restart inflate() on a new block
 15505  	if (*Inflate_state)(unsafe.Pointer(state)).Fhave != uint32(4) {
 15506  		return -3
 15507  	}
 15508  	in = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_in
 15509  	out = (*Z_stream)(unsafe.Pointer(strm)).Ftotal_out
 15510  	XinflateReset(tls, strm)
 15511  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_in = in
 15512  	(*Z_stream)(unsafe.Pointer(strm)).Ftotal_out = out
 15513  	(*Inflate_state)(unsafe.Pointer(state)).Fmode = TYPE
 15514  	return Z_OK
 15515  }
 15516  
 15517  //
 15518  //    Returns true if inflate is currently at the end of a block generated by
 15519  //    Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
 15520  //    implementation to provide an additional safety check. PPP uses
 15521  //    Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored
 15522  //    block. When decompressing, PPP checks that at the end of input packet,
 15523  //    inflate is waiting for these length bytes.
 15524  //
 15525  func XinflateSyncPoint(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1451:13: */
 15526  	var state uintptr
 15527  
 15528  	if inflateStateCheck(tls, strm) != 0 {
 15529  		return -2
 15530  	}
 15531  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15532  	return (libc.Bool32(((*Inflate_state)(unsafe.Pointer(state)).Fmode == STORED) && ((*Inflate_state)(unsafe.Pointer(state)).Fbits == uint32(0))))
 15533  }
 15534  
 15535  func XinflateCopy(tls *libc.TLS, dest Z_streamp, source Z_streamp) int32 { /* inflate.c:1461:13: */
 15536  	var state uintptr
 15537  	var copy uintptr
 15538  	var window uintptr
 15539  	var wsize uint32
 15540  
 15541  	// check input
 15542  	if (inflateStateCheck(tls, source) != 0) || (dest == uintptr(Z_NULL)) {
 15543  		return -2
 15544  	}
 15545  	state = (*Z_stream)(unsafe.Pointer(source)).Fstate
 15546  
 15547  	// allocate space
 15548  	copy = (*struct {
 15549  		f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 15550  	})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, uint32(1), uint32(unsafe.Sizeof(Inflate_state{})))
 15551  	if copy == uintptr(Z_NULL) {
 15552  		return -4
 15553  	}
 15554  	window = uintptr(Z_NULL)
 15555  	if (*Inflate_state)(unsafe.Pointer(state)).Fwindow != uintptr(Z_NULL) {
 15556  		window = (*struct {
 15557  			f func(*libc.TLS, Voidpf, UInt, UInt) Voidpf
 15558  		})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzalloc})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits), uint32(unsafe.Sizeof(uint8(0))))
 15559  		if window == uintptr(Z_NULL) {
 15560  			(*struct {
 15561  				f func(*libc.TLS, Voidpf, Voidpf)
 15562  			})(unsafe.Pointer(&struct{ uintptr }{(*Z_stream)(unsafe.Pointer((source))).Fzfree})).f(tls, (*Z_stream)(unsafe.Pointer(source)).Fopaque, copy)
 15563  			return -4
 15564  		}
 15565  	}
 15566  
 15567  	// copy state
 15568  	libc.Xmemcpy(tls, dest, source, uint32(unsafe.Sizeof(Z_stream{})))
 15569  	libc.Xmemcpy(tls, copy, state, uint32(unsafe.Sizeof(Inflate_state{})))
 15570  	(*Inflate_state)(unsafe.Pointer(copy)).Fstrm = dest
 15571  	if ((*Inflate_state)(unsafe.Pointer(state)).Flencode >= state+1332 /* &.codes */) && ((*Inflate_state)(unsafe.Pointer(state)).Flencode <= (((state + 1332 /* &.codes */) + uintptr((ENOUGH_LENS+ENOUGH_DISTS))*4) - uintptr(1)*4)) {
 15572  		(*Inflate_state)(unsafe.Pointer(copy)).Flencode = ((copy + 1332 /* &.codes */) + uintptr((int32(((*Inflate_state)(unsafe.Pointer(state)).Flencode-(state+1332 /* &.codes */))/4)))*4)
 15573  		(*Inflate_state)(unsafe.Pointer(copy)).Fdistcode = ((copy + 1332 /* &.codes */) + uintptr((int32(((*Inflate_state)(unsafe.Pointer(state)).Fdistcode-(state+1332 /* &.codes */))/4)))*4)
 15574  	}
 15575  	(*Inflate_state)(unsafe.Pointer(copy)).Fnext = ((copy + 1332 /* &.codes */) + uintptr((int32(((*Inflate_state)(unsafe.Pointer(state)).Fnext-(state+1332 /* &.codes */))/4)))*4)
 15576  	if window != uintptr(Z_NULL) {
 15577  		wsize = (uint32(1) << (*Inflate_state)(unsafe.Pointer(state)).Fwbits)
 15578  		libc.Xmemcpy(tls, window, (*Inflate_state)(unsafe.Pointer(state)).Fwindow, wsize)
 15579  	}
 15580  	(*Inflate_state)(unsafe.Pointer(copy)).Fwindow = window
 15581  	(*Z_stream)(unsafe.Pointer(dest)).Fstate = copy
 15582  	return Z_OK
 15583  }
 15584  
 15585  func XinflateUndermine(tls *libc.TLS, strm Z_streamp, subvert int32) int32 { /* inflate.c:1508:13: */
 15586  	var state uintptr
 15587  
 15588  	if inflateStateCheck(tls, strm) != 0 {
 15589  		return -2
 15590  	}
 15591  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15592  	_ = subvert
 15593  	(*Inflate_state)(unsafe.Pointer(state)).Fsane = 1
 15594  	return -3
 15595  }
 15596  
 15597  func XinflateValidate(tls *libc.TLS, strm Z_streamp, check int32) int32 { /* inflate.c:1526:13: */
 15598  	var state uintptr
 15599  
 15600  	if inflateStateCheck(tls, strm) != 0 {
 15601  		return -2
 15602  	}
 15603  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15604  	if check != 0 {
 15605  		*(*int32)(unsafe.Pointer(state + 12 /* &.wrap */)) |= (4)
 15606  	} else {
 15607  		*(*int32)(unsafe.Pointer(state + 12 /* &.wrap */)) &= (libc.CplInt32(4))
 15608  	}
 15609  	return Z_OK
 15610  }
 15611  
 15612  func XinflateMark(tls *libc.TLS, strm Z_streamp) int32 { /* inflate.c:1541:14: */
 15613  	var state uintptr
 15614  
 15615  	if inflateStateCheck(tls, strm) != 0 {
 15616  		return -(int32(1) << 16)
 15617  	}
 15618  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15619  	return (int32(uint32((int32((uint32(int32((*Inflate_state)(unsafe.Pointer(state)).Fback))) << 16))) + (func() uint32 {
 15620  		if (*Inflate_state)(unsafe.Pointer(state)).Fmode == COPY {
 15621  			return uint32((*Inflate_state)(unsafe.Pointer(state)).Flength)
 15622  		}
 15623  		return func() uint32 {
 15624  			if (*Inflate_state)(unsafe.Pointer(state)).Fmode == MATCH {
 15625  				return (uint32((*Inflate_state)(unsafe.Pointer(state)).Fwas - (*Inflate_state)(unsafe.Pointer(state)).Flength))
 15626  			}
 15627  			return uint32(0)
 15628  		}()
 15629  	}())))
 15630  }
 15631  
 15632  func XinflateCodesUsed(tls *libc.TLS, strm Z_streamp) uint32 { /* inflate.c:1554:23: */
 15633  	var state uintptr
 15634  	if inflateStateCheck(tls, strm) != 0 {
 15635  		return libc.Uint32(libc.Uint32FromInt32(-1))
 15636  	}
 15637  	state = (*Z_stream)(unsafe.Pointer(strm)).Fstate
 15638  	return (uint32(int32(((*Inflate_state)(unsafe.Pointer(state)).Fnext - (state + 1332 /* &.codes */)) / 4)))
 15639  }
 15640  
 15641  var Xinflate_copyright = *(*[48]uint8)(unsafe.Pointer(ts + 828 /* " inflate 1.2.11 ..." */)) /* inftrees.c:11:12 */
 15642  
 15643  //
 15644  //   If you use the zlib library in a product, an acknowledgment is welcome
 15645  //   in the documentation of your product. If for some reason you cannot
 15646  //   include such an acknowledgment, I would appreciate that you keep this
 15647  //   copyright string in the executable of your product.
 15648  //
 15649  
 15650  //
 15651  //    Build a set of tables to decode the provided canonical Huffman code.
 15652  //    The code lengths are lens[0..codes-1].  The result starts at *table,
 15653  //    whose indices are 0..2^bits-1.  work is a writable array of at least
 15654  //    lens shorts, which is used as a work area.  type is the type of code
 15655  //    to be generated, CODES, LENS, or DISTS.  On return, zero is success,
 15656  //    -1 is an invalid code, and +1 means that ENOUGH isn't enough.  table
 15657  //    on return points to the next available entry's address.  bits is the
 15658  //    requested root table index bits, and on return it is the actual root
 15659  //    table index bits.  It will differ if the request is greater than the
 15660  //    longest code or if it is less than the shortest code.
 15661  //
 15662  func Xinflate_table(tls *libc.TLS, type1 Codetype, lens uintptr, codes uint32, table uintptr, bits uintptr, work uintptr) int32 { /* inftrees.c:32:19: */
 15663  	bp := tls.Alloc(64)
 15664  	defer tls.Free(64)
 15665  
 15666  	var len uint32 // a code's length in bits
 15667  	var sym uint32 // index of code symbols
 15668  	var min uint32
 15669  	var max uint32    // minimum and maximum code lengths
 15670  	var root uint32   // number of index bits for root table
 15671  	var curr uint32   // number of index bits for current table
 15672  	var drop uint32   // code bits to drop for sub-table
 15673  	var left int32    // number of prefix codes available
 15674  	var used uint32   // code entries in table used
 15675  	var huff uint32   // Huffman code
 15676  	var incr uint32   // for incrementing code, index
 15677  	var fill uint32   // index for replicating entries
 15678  	var low uint32    // low bits for current root entry
 15679  	var mask uint32   // mask for low root bits
 15680  	var here Code     // table entry for duplication
 15681  	var next uintptr  // next available space in table
 15682  	var base uintptr  // base value table to use
 15683  	var extra uintptr // extra bits table to use
 15684  	var match uint32  // use base and extra for symbol >= match
 15685  	// var count [16]uint16 at bp, 32
 15686  	// number of codes of each length
 15687  	// var offs [16]uint16 at bp+32, 32
 15688  
 15689  	//
 15690  	//        Process a set of code lengths to create a canonical Huffman code.  The
 15691  	//        code lengths are lens[0..codes-1].  Each length corresponds to the
 15692  	//        symbols 0..codes-1.  The Huffman code is generated by first sorting the
 15693  	//        symbols by length from short to long, and retaining the symbol order
 15694  	//        for codes with equal lengths.  Then the code starts with all zero bits
 15695  	//        for the first code of the shortest length, and the codes are integer
 15696  	//        increments for the same length, and zeros are appended as the length
 15697  	//        increases.  For the deflate format, these bits are stored backwards
 15698  	//        from their more natural integer increment ordering, and so when the
 15699  	//        decoding tables are built in the large loop below, the integer codes
 15700  	//        are incremented backwards.
 15701  	//
 15702  	//        This routine assumes, but does not check, that all of the entries in
 15703  	//        lens[] are in the range 0..MAXBITS.  The caller must assure this.
 15704  	//        1..MAXBITS is interpreted as that code length.  zero means that that
 15705  	//        symbol does not occur in this code.
 15706  	//
 15707  	//        The codes are sorted by computing a count of codes for each length,
 15708  	//        creating from that a table of starting indices for each length in the
 15709  	//        sorted table, and then entering the symbols in order in the sorted
 15710  	//        table.  The sorted table is work[], with that space being provided by
 15711  	//        the caller.
 15712  	//
 15713  	//        The length counts are used for other purposes as well, i.e. finding
 15714  	//        the minimum and maximum length codes, determining if there are any
 15715  	//        codes at all, checking for a valid set of lengths, and looking ahead
 15716  	//        at length counts to determine sub-table sizes when building the
 15717  	//        decoding tables.
 15718  	//
 15719  
 15720  	// accumulate lengths for codes (assumes lens[] all in 0..MAXBITS)
 15721  	for len = uint32(0); len <= uint32(MAXBITS); len++ {
 15722  		*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)) = uint16(0)
 15723  	}
 15724  	for sym = uint32(0); sym < codes; sym++ {
 15725  		*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2))++
 15726  	}
 15727  
 15728  	// bound code lengths, force root to be within code lengths
 15729  	root = *(*uint32)(unsafe.Pointer(bits))
 15730  	for max = uint32(MAXBITS); max >= uint32(1); max-- {
 15731  		if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(max)*2))) != 0 {
 15732  			break
 15733  		}
 15734  	}
 15735  	if root > max {
 15736  		root = max
 15737  	}
 15738  	if max == uint32(0) { // no symbols to code at all
 15739  		here.Fop = uint8(64) // invalid code marker
 15740  		here.Fbits = uint8(1)
 15741  		here.Fval = uint16(0)
 15742  		*(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here // make a table to force an error
 15743  		*(*Code)(unsafe.Pointer(libc.PostIncUintptr(&(*(*uintptr)(unsafe.Pointer(table))), 4))) = here
 15744  		*(*uint32)(unsafe.Pointer(bits)) = uint32(1)
 15745  		return 0 // no symbols, but wait for decoding to report error
 15746  	}
 15747  	for min = uint32(1); min < max; min++ {
 15748  		if int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(min)*2))) != 0 {
 15749  			break
 15750  		}
 15751  	}
 15752  	if root < min {
 15753  		root = min
 15754  	}
 15755  
 15756  	// check for an over-subscribed or incomplete set of lengths
 15757  	left = 1
 15758  	for len = uint32(1); len <= uint32(MAXBITS); len++ {
 15759  		left <<= 1
 15760  		left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2))))
 15761  		if left < 0 {
 15762  			return -1
 15763  		} // over-subscribed
 15764  	}
 15765  	if (left > 0) && ((type1 == CODES) || (max != uint32(1))) {
 15766  		return -1
 15767  	} // incomplete set
 15768  
 15769  	// generate offsets into symbol table for each length for sorting
 15770  	*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + 1*2)) = uint16(0)
 15771  	for len = uint32(1); len < uint32(MAXBITS); len++ {
 15772  		*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr((len+uint32(1)))*2)) = (uint16(int32(*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr(len)*2))) + int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2)))))
 15773  	}
 15774  
 15775  	// sort symbols by length, by symbol order within each length
 15776  	for sym = uint32(0); sym < codes; sym++ {
 15777  		if int32(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2))) != 0 {
 15778  			*(*uint16)(unsafe.Pointer(work + uintptr(libc.PostIncUint16(&*(*uint16)(unsafe.Pointer(bp + 32 /* &offs[0] */ + uintptr(*(*uint16)(unsafe.Pointer(lens + uintptr(sym)*2)))*2)), 1))*2)) = uint16(sym)
 15779  		}
 15780  	}
 15781  
 15782  	//
 15783  	//        Create and fill in decoding tables.  In this loop, the table being
 15784  	//        filled is at next and has curr index bits.  The code being used is huff
 15785  	//        with length len.  That code is converted to an index by dropping drop
 15786  	//        bits off of the bottom.  For codes where len is less than drop + curr,
 15787  	//        those top drop + curr - len bits are incremented through all values to
 15788  	//        fill the table with replicated entries.
 15789  	//
 15790  	//        root is the number of index bits for the root table.  When len exceeds
 15791  	//        root, sub-tables are created pointed to by the root entry with an index
 15792  	//        of the low root bits of huff.  This is saved in low to check for when a
 15793  	//        new sub-table should be started.  drop is zero when the root table is
 15794  	//        being filled, and drop is root when sub-tables are being filled.
 15795  	//
 15796  	//        When a new sub-table is needed, it is necessary to look ahead in the
 15797  	//        code lengths to determine what size sub-table is needed.  The length
 15798  	//        counts are used for this, and so count[] is decremented as codes are
 15799  	//        entered in the tables.
 15800  	//
 15801  	//        used keeps track of how many table entries have been allocated from the
 15802  	//        provided *table space.  It is checked for LENS and DIST tables against
 15803  	//        the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in
 15804  	//        the initial root table size constants.  See the comments in inftrees.h
 15805  	//        for more information.
 15806  	//
 15807  	//        sym increments through all symbols, and the loop terminates when
 15808  	//        all codes of length max, i.e. all codes, have been processed.  This
 15809  	//        routine permits incomplete codes, so another loop after this one fills
 15810  	//        in the rest of the decoding tables with invalid code markers.
 15811  	//
 15812  
 15813  	// set up for code type
 15814  	switch type1 {
 15815  	case CODES:
 15816  		base = libc.AssignUintptr(&extra, work) // dummy value--not used
 15817  		match = uint32(20)
 15818  		break
 15819  	case LENS:
 15820  		base = uintptr(unsafe.Pointer(&lbase))
 15821  		extra = uintptr(unsafe.Pointer(&lext))
 15822  		match = uint32(257)
 15823  		break
 15824  	default: // DISTS
 15825  		base = uintptr(unsafe.Pointer(&dbase))
 15826  		extra = uintptr(unsafe.Pointer(&dext))
 15827  		match = uint32(0)
 15828  	}
 15829  
 15830  	// initialize state for loop
 15831  	huff = uint32(0)                            // starting code
 15832  	sym = uint32(0)                             // starting code symbol
 15833  	len = min                                   // starting code length
 15834  	next = *(*uintptr)(unsafe.Pointer(table))   // current table to fill in
 15835  	curr = root                                 // current table index bits
 15836  	drop = uint32(0)                            // current bits to drop from code for index
 15837  	low = libc.Uint32(libc.Uint32FromInt32(-1)) // trigger new sub-table when len > root
 15838  	used = (uint32(1) << root)                  // use root table entries
 15839  	mask = (used - uint32(1))                   // mask for comparing low
 15840  
 15841  	// check available table space
 15842  	if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) {
 15843  		return 1
 15844  	}
 15845  
 15846  	// process all codes and make table entries
 15847  	for {
 15848  		// create table entry
 15849  		here.Fbits = (uint8(len - drop))
 15850  		if (uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) + 1) < match {
 15851  			here.Fop = uint8(0)
 15852  			here.Fval = *(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))
 15853  		} else if uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2))) >= match {
 15854  			here.Fop = uint8(*(*uint16)(unsafe.Pointer(extra + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2)))
 15855  			here.Fval = *(*uint16)(unsafe.Pointer(base + uintptr((uint32(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))-match))*2))
 15856  		} else {
 15857  			here.Fop = (uint8(32 + 64)) // end of block
 15858  			here.Fval = uint16(0)
 15859  		}
 15860  
 15861  		// replicate for those indices with low len bits equal to huff
 15862  		incr = (uint32(1) << (len - drop))
 15863  		fill = (uint32(1) << curr)
 15864  		min = fill // save offset to next table
 15865  		for ok := true; ok; ok = (fill != uint32(0)) {
 15866  			fill = fill - (incr)
 15867  			*(*Code)(unsafe.Pointer(next + uintptr(((huff>>drop)+fill))*4)) = here
 15868  		}
 15869  
 15870  		// backwards increment the len-bit code huff
 15871  		incr = (uint32(1) << (len - uint32(1)))
 15872  		for (huff & incr) != 0 {
 15873  			incr >>= 1
 15874  		}
 15875  		if incr != uint32(0) {
 15876  			huff = huff & (incr - uint32(1))
 15877  			huff = huff + (incr)
 15878  		} else {
 15879  			huff = uint32(0)
 15880  		}
 15881  
 15882  		// go to next symbol, update count, len
 15883  		sym++
 15884  		if int32(libc.PreDecUint16(&(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr(len)*2))), 1)) == 0 {
 15885  			if len == max {
 15886  				break
 15887  			}
 15888  			len = uint32(*(*uint16)(unsafe.Pointer(lens + uintptr(*(*uint16)(unsafe.Pointer(work + uintptr(sym)*2)))*2)))
 15889  		}
 15890  
 15891  		// create new sub-table if needed
 15892  		if (len > root) && ((huff & mask) != low) {
 15893  			// if first time, transition to sub-tables
 15894  			if drop == uint32(0) {
 15895  				drop = root
 15896  			}
 15897  
 15898  			// increment past last table
 15899  			next += 4 * (uintptr(min)) // here min is 1 << curr
 15900  
 15901  			// determine length of next table
 15902  			curr = (len - drop)
 15903  			left = (int32(1) << curr)
 15904  			for (curr + drop) < max {
 15905  				left = left - (int32(*(*uint16)(unsafe.Pointer(bp /* &count[0] */ + uintptr((curr+drop))*2))))
 15906  				if left <= 0 {
 15907  					break
 15908  				}
 15909  				curr++
 15910  				left <<= 1
 15911  			}
 15912  
 15913  			// check for enough space
 15914  			used = used + (uint32(1) << curr)
 15915  			if ((type1 == LENS) && (used > uint32(ENOUGH_LENS))) || ((type1 == DISTS) && (used > uint32(ENOUGH_DISTS))) {
 15916  				return 1
 15917  			}
 15918  
 15919  			// point entry in root table to sub-table
 15920  			low = (huff & mask)
 15921  			(*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fop = uint8(curr)
 15922  			(*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fbits = uint8(root)
 15923  			(*Code)(unsafe.Pointer((*(*uintptr)(unsafe.Pointer(table))) + uintptr(low)*4)).Fval = (uint16((int32(next) - int32(*(*uintptr)(unsafe.Pointer(table)))) / 4))
 15924  		}
 15925  	}
 15926  
 15927  	// fill in remaining table entry if code is incomplete (guaranteed to have
 15928  	//        at most one remaining entry, since if the code is incomplete, the
 15929  	//        maximum code length that was allowed to get this far is one bit)
 15930  	if huff != uint32(0) {
 15931  		here.Fop = uint8(64) // invalid code marker
 15932  		here.Fbits = (uint8(len - drop))
 15933  		here.Fval = uint16(0)
 15934  		*(*Code)(unsafe.Pointer(next + uintptr(huff)*4)) = here
 15935  	}
 15936  
 15937  	// set return parameters
 15938  	*(*uintptr)(unsafe.Pointer(table)) += (uintptr(used)) * 4
 15939  	*(*uint32)(unsafe.Pointer(bits)) = root
 15940  	return 0
 15941  }
 15942  
 15943  var lbase = [31]uint16{ // Length codes 257..285 base
 15944  	uint16(3), uint16(4), uint16(5), uint16(6), uint16(7), uint16(8), uint16(9), uint16(10), uint16(11), uint16(13), uint16(15), uint16(17), uint16(19), uint16(23), uint16(27), uint16(31),
 15945  			uint16(35), uint16(43), uint16(51), uint16(59), uint16(67), uint16(83), uint16(99), uint16(115), uint16(131), uint16(163), uint16(195), uint16(227), uint16(258), uint16(0), uint16(0)} /* inftrees.c:60:33 */
 15946  var lext = [31]uint16{ // Length codes 257..285 extra
 15947  	uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(16), uint16(17), uint16(17), uint16(17), uint16(17), uint16(18), uint16(18), uint16(18), uint16(18),
 15948  			uint16(19), uint16(19), uint16(19), uint16(19), uint16(20), uint16(20), uint16(20), uint16(20), uint16(21), uint16(21), uint16(21), uint16(21), uint16(16), uint16(77), uint16(202)} /* inftrees.c:63:33 */
 15949  var dbase = [32]uint16{ // Distance codes 0..29 base
 15950  	uint16(1), uint16(2), uint16(3), uint16(4), uint16(5), uint16(7), uint16(9), uint16(13), uint16(17), uint16(25), uint16(33), uint16(49), uint16(65), uint16(97), uint16(129), uint16(193),
 15951  	uint16(257), uint16(385), uint16(513), uint16(769), uint16(1025), uint16(1537), uint16(2049), uint16(3073), uint16(4097), uint16(6145),
 15952  			uint16(8193), uint16(12289), uint16(16385), uint16(24577), uint16(0), uint16(0)} /* inftrees.c:66:33 */
 15953  var dext = [32]uint16{ // Distance codes 0..29 extra
 15954  	uint16(16), uint16(16), uint16(16), uint16(16), uint16(17), uint16(17), uint16(18), uint16(18), uint16(19), uint16(19), uint16(20), uint16(20), uint16(21), uint16(21), uint16(22), uint16(22),
 15955  	uint16(23), uint16(23), uint16(24), uint16(24), uint16(25), uint16(25), uint16(26), uint16(26), uint16(27), uint16(27),
 15956  	uint16(28), uint16(28), uint16(29), uint16(29), uint16(64), uint16(64)} /* inftrees.c:70:33 */
 15957  
 15958  type Static_tree_desc = Static_tree_desc_s /* deflate.h:84:36 */
 15959  
 15960  // ===========================================================================
 15961  // Constants
 15962  
 15963  // Bit length codes must not exceed MAX_BL_BITS bits
 15964  
 15965  // end of block literal code
 15966  
 15967  // repeat previous bit length 3-6 times (2 bits of repeat count)
 15968  
 15969  // repeat a zero length 3-10 times  (3 bits of repeat count)
 15970  
 15971  // repeat a zero length 11-138 times  (7 bits of repeat count)
 15972  
 15973  var extra_lbits = [29]int32{0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0} /* trees.c:62:17 */
 15974  
 15975  var extra_dbits = [30]int32{0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13} /* trees.c:65:17 */
 15976  
 15977  var extra_blbits = [19]int32{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7} /* trees.c:68:17 */
 15978  
 15979  var bl_order = [19]Uch{Uch(16), Uch(17), Uch(18), Uch(0), Uch(8), Uch(7), Uch(9), Uch(6), Uch(10), Uch(5), Uch(11), Uch(4), Uch(12), Uch(3), Uch(13), Uch(2), Uch(14), Uch(1), Uch(15)} /* trees.c:71:17 */
 15980  // The lengths of the bit length codes are sent in order of decreasing
 15981  // probability, to avoid transmitting the lengths for unused bit length codes.
 15982  
 15983  // ===========================================================================
 15984  // Local data. These are initialized only once.
 15985  
 15986  // header created automatically with -DGEN_TREES_H
 15987  
 15988  var static_ltree = [288]Ct_data{{Ffc: func() (r struct{ Ffreq Ush }) {
 15989  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12)
 15990  	return r
 15991  }(), Fdl: func() (r struct{ Fdad Ush }) {
 15992  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15993  	return r
 15994  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 15995  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(140)
 15996  	return r
 15997  }(), Fdl: func() (r struct{ Fdad Ush }) {
 15998  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 15999  	return r
 16000  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16001  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(76)
 16002  	return r
 16003  }(), Fdl: func() (r struct{ Fdad Ush }) {
 16004  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16005  	return r
 16006  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16007  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(204)
 16008  	return r
 16009  }(), Fdl: func() (r struct{ Fdad Ush }) {
 16010  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16011  	return r
 16012  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16013  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(44)
 16014  	return r
 16015  }(), Fdl: func() (r struct{ Fdad Ush }) {
 16016  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16017  	return r
 16018  }()},
 16019  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16020  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(172)
 16021  		return r
 16022  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16023  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16024  		return r
 16025  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16026  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(108)
 16027  		return r
 16028  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16029  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16030  		return r
 16031  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16032  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(236)
 16033  		return r
 16034  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16035  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16036  		return r
 16037  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16038  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28)
 16039  		return r
 16040  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16041  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16042  		return r
 16043  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16044  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(156)
 16045  		return r
 16046  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16047  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16048  		return r
 16049  	}()},
 16050  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16051  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(92)
 16052  		return r
 16053  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16054  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16055  		return r
 16056  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16057  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(220)
 16058  		return r
 16059  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16060  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16061  		return r
 16062  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16063  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(60)
 16064  		return r
 16065  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16066  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16067  		return r
 16068  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16069  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(188)
 16070  		return r
 16071  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16072  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16073  		return r
 16074  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16075  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(124)
 16076  		return r
 16077  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16078  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16079  		return r
 16080  	}()},
 16081  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16082  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(252)
 16083  		return r
 16084  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16085  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16086  		return r
 16087  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16088  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2)
 16089  		return r
 16090  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16091  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16092  		return r
 16093  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16094  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(130)
 16095  		return r
 16096  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16097  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16098  		return r
 16099  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16100  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(66)
 16101  		return r
 16102  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16103  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16104  		return r
 16105  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16106  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(194)
 16107  		return r
 16108  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16109  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16110  		return r
 16111  	}()},
 16112  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16113  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(34)
 16114  		return r
 16115  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16116  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16117  		return r
 16118  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16119  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(162)
 16120  		return r
 16121  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16122  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16123  		return r
 16124  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16125  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(98)
 16126  		return r
 16127  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16128  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16129  		return r
 16130  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16131  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(226)
 16132  		return r
 16133  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16134  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16135  		return r
 16136  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16137  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18)
 16138  		return r
 16139  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16140  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16141  		return r
 16142  	}()},
 16143  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16144  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(146)
 16145  		return r
 16146  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16147  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16148  		return r
 16149  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16150  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(82)
 16151  		return r
 16152  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16153  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16154  		return r
 16155  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16156  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(210)
 16157  		return r
 16158  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16159  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16160  		return r
 16161  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16162  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(50)
 16163  		return r
 16164  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16165  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16166  		return r
 16167  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16168  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(178)
 16169  		return r
 16170  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16171  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16172  		return r
 16173  	}()},
 16174  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16175  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(114)
 16176  		return r
 16177  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16178  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16179  		return r
 16180  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16181  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(242)
 16182  		return r
 16183  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16184  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16185  		return r
 16186  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16187  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10)
 16188  		return r
 16189  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16190  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16191  		return r
 16192  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16193  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(138)
 16194  		return r
 16195  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16196  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16197  		return r
 16198  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16199  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(74)
 16200  		return r
 16201  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16202  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16203  		return r
 16204  	}()},
 16205  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16206  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(202)
 16207  		return r
 16208  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16209  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16210  		return r
 16211  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16212  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(42)
 16213  		return r
 16214  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16215  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16216  		return r
 16217  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16218  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(170)
 16219  		return r
 16220  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16221  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16222  		return r
 16223  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16224  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(106)
 16225  		return r
 16226  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16227  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16228  		return r
 16229  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16230  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(234)
 16231  		return r
 16232  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16233  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16234  		return r
 16235  	}()},
 16236  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16237  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26)
 16238  		return r
 16239  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16240  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16241  		return r
 16242  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16243  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(154)
 16244  		return r
 16245  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16246  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16247  		return r
 16248  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16249  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(90)
 16250  		return r
 16251  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16252  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16253  		return r
 16254  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16255  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(218)
 16256  		return r
 16257  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16258  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16259  		return r
 16260  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16261  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(58)
 16262  		return r
 16263  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16264  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16265  		return r
 16266  	}()},
 16267  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16268  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(186)
 16269  		return r
 16270  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16271  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16272  		return r
 16273  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16274  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(122)
 16275  		return r
 16276  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16277  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16278  		return r
 16279  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16280  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(250)
 16281  		return r
 16282  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16283  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16284  		return r
 16285  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16286  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6)
 16287  		return r
 16288  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16289  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16290  		return r
 16291  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16292  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(134)
 16293  		return r
 16294  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16295  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16296  		return r
 16297  	}()},
 16298  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16299  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(70)
 16300  		return r
 16301  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16302  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16303  		return r
 16304  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16305  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(198)
 16306  		return r
 16307  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16308  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16309  		return r
 16310  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16311  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(38)
 16312  		return r
 16313  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16314  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16315  		return r
 16316  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16317  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(166)
 16318  		return r
 16319  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16320  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16321  		return r
 16322  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16323  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(102)
 16324  		return r
 16325  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16326  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16327  		return r
 16328  	}()},
 16329  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16330  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(230)
 16331  		return r
 16332  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16333  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16334  		return r
 16335  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16336  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22)
 16337  		return r
 16338  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16339  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16340  		return r
 16341  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16342  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(150)
 16343  		return r
 16344  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16345  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16346  		return r
 16347  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16348  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(86)
 16349  		return r
 16350  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16351  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16352  		return r
 16353  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16354  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(214)
 16355  		return r
 16356  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16357  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16358  		return r
 16359  	}()},
 16360  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16361  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(54)
 16362  		return r
 16363  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16364  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16365  		return r
 16366  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16367  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(182)
 16368  		return r
 16369  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16370  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16371  		return r
 16372  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16373  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(118)
 16374  		return r
 16375  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16376  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16377  		return r
 16378  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16379  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(246)
 16380  		return r
 16381  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16382  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16383  		return r
 16384  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16385  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14)
 16386  		return r
 16387  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16388  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16389  		return r
 16390  	}()},
 16391  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16392  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(142)
 16393  		return r
 16394  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16395  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16396  		return r
 16397  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16398  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(78)
 16399  		return r
 16400  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16401  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16402  		return r
 16403  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16404  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(206)
 16405  		return r
 16406  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16407  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16408  		return r
 16409  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16410  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(46)
 16411  		return r
 16412  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16413  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16414  		return r
 16415  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16416  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(174)
 16417  		return r
 16418  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16419  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16420  		return r
 16421  	}()},
 16422  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16423  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(110)
 16424  		return r
 16425  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16426  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16427  		return r
 16428  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16429  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(238)
 16430  		return r
 16431  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16432  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16433  		return r
 16434  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16435  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30)
 16436  		return r
 16437  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16438  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16439  		return r
 16440  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16441  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(158)
 16442  		return r
 16443  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16444  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16445  		return r
 16446  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16447  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(94)
 16448  		return r
 16449  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16450  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16451  		return r
 16452  	}()},
 16453  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16454  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(222)
 16455  		return r
 16456  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16457  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16458  		return r
 16459  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16460  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(62)
 16461  		return r
 16462  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16463  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16464  		return r
 16465  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16466  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(190)
 16467  		return r
 16468  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16469  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16470  		return r
 16471  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16472  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(126)
 16473  		return r
 16474  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16475  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16476  		return r
 16477  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16478  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(254)
 16479  		return r
 16480  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16481  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16482  		return r
 16483  	}()},
 16484  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16485  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1)
 16486  		return r
 16487  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16488  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16489  		return r
 16490  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16491  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(129)
 16492  		return r
 16493  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16494  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16495  		return r
 16496  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16497  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(65)
 16498  		return r
 16499  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16500  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16501  		return r
 16502  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16503  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(193)
 16504  		return r
 16505  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16506  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16507  		return r
 16508  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16509  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(33)
 16510  		return r
 16511  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16512  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16513  		return r
 16514  	}()},
 16515  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16516  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(161)
 16517  		return r
 16518  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16519  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16520  		return r
 16521  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16522  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(97)
 16523  		return r
 16524  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16525  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16526  		return r
 16527  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16528  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(225)
 16529  		return r
 16530  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16531  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16532  		return r
 16533  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16534  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17)
 16535  		return r
 16536  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16537  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16538  		return r
 16539  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16540  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(145)
 16541  		return r
 16542  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16543  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16544  		return r
 16545  	}()},
 16546  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16547  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(81)
 16548  		return r
 16549  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16550  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16551  		return r
 16552  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16553  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(209)
 16554  		return r
 16555  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16556  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16557  		return r
 16558  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16559  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(49)
 16560  		return r
 16561  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16562  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16563  		return r
 16564  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16565  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(177)
 16566  		return r
 16567  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16568  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16569  		return r
 16570  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16571  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(113)
 16572  		return r
 16573  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16574  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16575  		return r
 16576  	}()},
 16577  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16578  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(241)
 16579  		return r
 16580  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16581  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16582  		return r
 16583  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16584  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16585  		return r
 16586  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16587  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16588  		return r
 16589  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16590  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(137)
 16591  		return r
 16592  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16593  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16594  		return r
 16595  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16596  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(73)
 16597  		return r
 16598  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16599  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16600  		return r
 16601  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16602  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(201)
 16603  		return r
 16604  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16605  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16606  		return r
 16607  	}()},
 16608  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16609  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(41)
 16610  		return r
 16611  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16612  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16613  		return r
 16614  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16615  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(169)
 16616  		return r
 16617  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16618  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16619  		return r
 16620  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16621  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(105)
 16622  		return r
 16623  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16624  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16625  		return r
 16626  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16627  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(233)
 16628  		return r
 16629  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16630  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16631  		return r
 16632  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16633  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25)
 16634  		return r
 16635  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16636  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16637  		return r
 16638  	}()},
 16639  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16640  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(153)
 16641  		return r
 16642  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16643  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16644  		return r
 16645  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16646  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(89)
 16647  		return r
 16648  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16649  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16650  		return r
 16651  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16652  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(217)
 16653  		return r
 16654  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16655  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16656  		return r
 16657  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16658  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(57)
 16659  		return r
 16660  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16661  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16662  		return r
 16663  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16664  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(185)
 16665  		return r
 16666  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16667  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16668  		return r
 16669  	}()},
 16670  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16671  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(121)
 16672  		return r
 16673  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16674  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16675  		return r
 16676  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16677  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(249)
 16678  		return r
 16679  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16680  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16681  		return r
 16682  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16683  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 16684  		return r
 16685  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16686  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16687  		return r
 16688  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16689  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(133)
 16690  		return r
 16691  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16692  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16693  		return r
 16694  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16695  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(69)
 16696  		return r
 16697  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16698  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16699  		return r
 16700  	}()},
 16701  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16702  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(197)
 16703  		return r
 16704  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16705  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16706  		return r
 16707  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16708  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(37)
 16709  		return r
 16710  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16711  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16712  		return r
 16713  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16714  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(165)
 16715  		return r
 16716  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16717  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16718  		return r
 16719  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16720  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(101)
 16721  		return r
 16722  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16723  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16724  		return r
 16725  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16726  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(229)
 16727  		return r
 16728  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16729  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16730  		return r
 16731  	}()},
 16732  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16733  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21)
 16734  		return r
 16735  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16736  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16737  		return r
 16738  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16739  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(149)
 16740  		return r
 16741  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16742  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16743  		return r
 16744  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16745  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(85)
 16746  		return r
 16747  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16748  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16749  		return r
 16750  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16751  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(213)
 16752  		return r
 16753  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16754  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16755  		return r
 16756  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16757  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(53)
 16758  		return r
 16759  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16760  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16761  		return r
 16762  	}()},
 16763  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16764  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(181)
 16765  		return r
 16766  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16767  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16768  		return r
 16769  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16770  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(117)
 16771  		return r
 16772  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16773  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16774  		return r
 16775  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16776  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(245)
 16777  		return r
 16778  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16779  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16780  		return r
 16781  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16782  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13)
 16783  		return r
 16784  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16785  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16786  		return r
 16787  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16788  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(141)
 16789  		return r
 16790  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16791  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16792  		return r
 16793  	}()},
 16794  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16795  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(77)
 16796  		return r
 16797  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16798  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16799  		return r
 16800  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16801  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(205)
 16802  		return r
 16803  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16804  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16805  		return r
 16806  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16807  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(45)
 16808  		return r
 16809  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16810  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16811  		return r
 16812  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16813  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(173)
 16814  		return r
 16815  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16816  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16817  		return r
 16818  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16819  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(109)
 16820  		return r
 16821  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16822  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16823  		return r
 16824  	}()},
 16825  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16826  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(237)
 16827  		return r
 16828  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16829  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16830  		return r
 16831  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16832  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29)
 16833  		return r
 16834  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16835  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16836  		return r
 16837  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16838  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(157)
 16839  		return r
 16840  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16841  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16842  		return r
 16843  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16844  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(93)
 16845  		return r
 16846  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16847  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16848  		return r
 16849  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16850  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(221)
 16851  		return r
 16852  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16853  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16854  		return r
 16855  	}()},
 16856  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16857  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(61)
 16858  		return r
 16859  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16860  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16861  		return r
 16862  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16863  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(189)
 16864  		return r
 16865  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16866  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16867  		return r
 16868  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16869  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(125)
 16870  		return r
 16871  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16872  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16873  		return r
 16874  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16875  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(253)
 16876  		return r
 16877  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16878  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 16879  		return r
 16880  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16881  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19)
 16882  		return r
 16883  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16884  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16885  		return r
 16886  	}()},
 16887  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16888  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(275)
 16889  		return r
 16890  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16891  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16892  		return r
 16893  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16894  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(147)
 16895  		return r
 16896  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16897  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16898  		return r
 16899  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16900  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(403)
 16901  		return r
 16902  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16903  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16904  		return r
 16905  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16906  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(83)
 16907  		return r
 16908  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16909  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16910  		return r
 16911  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16912  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(339)
 16913  		return r
 16914  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16915  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16916  		return r
 16917  	}()},
 16918  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16919  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(211)
 16920  		return r
 16921  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16922  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16923  		return r
 16924  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16925  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(467)
 16926  		return r
 16927  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16928  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16929  		return r
 16930  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16931  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(51)
 16932  		return r
 16933  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16934  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16935  		return r
 16936  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16937  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(307)
 16938  		return r
 16939  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16940  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16941  		return r
 16942  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16943  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(179)
 16944  		return r
 16945  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16946  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16947  		return r
 16948  	}()},
 16949  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16950  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(435)
 16951  		return r
 16952  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16953  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16954  		return r
 16955  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16956  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(115)
 16957  		return r
 16958  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16959  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16960  		return r
 16961  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16962  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(371)
 16963  		return r
 16964  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16965  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16966  		return r
 16967  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16968  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(243)
 16969  		return r
 16970  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16971  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16972  		return r
 16973  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16974  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(499)
 16975  		return r
 16976  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16977  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16978  		return r
 16979  	}()},
 16980  	{Ffc: func() (r struct{ Ffreq Ush }) {
 16981  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11)
 16982  		return r
 16983  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16984  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16985  		return r
 16986  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16987  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(267)
 16988  		return r
 16989  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16990  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16991  		return r
 16992  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16993  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(139)
 16994  		return r
 16995  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 16996  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 16997  		return r
 16998  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 16999  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(395)
 17000  		return r
 17001  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17002  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17003  		return r
 17004  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17005  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(75)
 17006  		return r
 17007  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17008  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17009  		return r
 17010  	}()},
 17011  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17012  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(331)
 17013  		return r
 17014  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17015  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17016  		return r
 17017  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17018  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(203)
 17019  		return r
 17020  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17021  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17022  		return r
 17023  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17024  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(459)
 17025  		return r
 17026  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17027  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17028  		return r
 17029  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17030  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(43)
 17031  		return r
 17032  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17033  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17034  		return r
 17035  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17036  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(299)
 17037  		return r
 17038  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17039  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17040  		return r
 17041  	}()},
 17042  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17043  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(171)
 17044  		return r
 17045  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17046  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17047  		return r
 17048  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17049  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(427)
 17050  		return r
 17051  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17052  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17053  		return r
 17054  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17055  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(107)
 17056  		return r
 17057  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17058  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17059  		return r
 17060  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17061  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(363)
 17062  		return r
 17063  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17064  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17065  		return r
 17066  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17067  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(235)
 17068  		return r
 17069  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17070  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17071  		return r
 17072  	}()},
 17073  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17074  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(491)
 17075  		return r
 17076  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17077  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17078  		return r
 17079  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17080  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27)
 17081  		return r
 17082  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17083  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17084  		return r
 17085  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17086  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(283)
 17087  		return r
 17088  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17089  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17090  		return r
 17091  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17092  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(155)
 17093  		return r
 17094  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17095  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17096  		return r
 17097  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17098  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(411)
 17099  		return r
 17100  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17101  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17102  		return r
 17103  	}()},
 17104  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17105  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(91)
 17106  		return r
 17107  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17108  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17109  		return r
 17110  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17111  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(347)
 17112  		return r
 17113  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17114  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17115  		return r
 17116  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17117  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(219)
 17118  		return r
 17119  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17120  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17121  		return r
 17122  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17123  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(475)
 17124  		return r
 17125  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17126  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17127  		return r
 17128  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17129  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(59)
 17130  		return r
 17131  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17132  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17133  		return r
 17134  	}()},
 17135  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17136  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(315)
 17137  		return r
 17138  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17139  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17140  		return r
 17141  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17142  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(187)
 17143  		return r
 17144  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17145  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17146  		return r
 17147  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17148  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(443)
 17149  		return r
 17150  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17151  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17152  		return r
 17153  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17154  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(123)
 17155  		return r
 17156  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17157  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17158  		return r
 17159  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17160  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(379)
 17161  		return r
 17162  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17163  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17164  		return r
 17165  	}()},
 17166  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17167  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(251)
 17168  		return r
 17169  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17170  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17171  		return r
 17172  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17173  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(507)
 17174  		return r
 17175  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17176  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17177  		return r
 17178  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17179  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17180  		return r
 17181  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17182  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17183  		return r
 17184  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17185  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(263)
 17186  		return r
 17187  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17188  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17189  		return r
 17190  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17191  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(135)
 17192  		return r
 17193  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17194  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17195  		return r
 17196  	}()},
 17197  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17198  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(391)
 17199  		return r
 17200  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17201  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17202  		return r
 17203  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17204  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(71)
 17205  		return r
 17206  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17207  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17208  		return r
 17209  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17210  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(327)
 17211  		return r
 17212  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17213  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17214  		return r
 17215  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17216  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(199)
 17217  		return r
 17218  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17219  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17220  		return r
 17221  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17222  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(455)
 17223  		return r
 17224  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17225  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17226  		return r
 17227  	}()},
 17228  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17229  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(39)
 17230  		return r
 17231  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17232  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17233  		return r
 17234  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17235  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(295)
 17236  		return r
 17237  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17238  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17239  		return r
 17240  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17241  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(167)
 17242  		return r
 17243  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17244  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17245  		return r
 17246  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17247  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(423)
 17248  		return r
 17249  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17250  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17251  		return r
 17252  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17253  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(103)
 17254  		return r
 17255  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17256  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17257  		return r
 17258  	}()},
 17259  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17260  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(359)
 17261  		return r
 17262  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17263  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17264  		return r
 17265  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17266  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(231)
 17267  		return r
 17268  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17269  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17270  		return r
 17271  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17272  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(487)
 17273  		return r
 17274  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17275  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17276  		return r
 17277  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17278  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23)
 17279  		return r
 17280  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17281  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17282  		return r
 17283  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17284  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(279)
 17285  		return r
 17286  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17287  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17288  		return r
 17289  	}()},
 17290  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17291  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(151)
 17292  		return r
 17293  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17294  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17295  		return r
 17296  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17297  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(407)
 17298  		return r
 17299  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17300  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17301  		return r
 17302  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17303  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(87)
 17304  		return r
 17305  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17306  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17307  		return r
 17308  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17309  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(343)
 17310  		return r
 17311  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17312  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17313  		return r
 17314  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17315  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(215)
 17316  		return r
 17317  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17318  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17319  		return r
 17320  	}()},
 17321  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17322  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(471)
 17323  		return r
 17324  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17325  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17326  		return r
 17327  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17328  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(55)
 17329  		return r
 17330  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17331  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17332  		return r
 17333  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17334  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(311)
 17335  		return r
 17336  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17337  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17338  		return r
 17339  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17340  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(183)
 17341  		return r
 17342  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17343  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17344  		return r
 17345  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17346  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(439)
 17347  		return r
 17348  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17349  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17350  		return r
 17351  	}()},
 17352  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17353  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(119)
 17354  		return r
 17355  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17356  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17357  		return r
 17358  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17359  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(375)
 17360  		return r
 17361  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17362  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17363  		return r
 17364  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17365  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(247)
 17366  		return r
 17367  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17368  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17369  		return r
 17370  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17371  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(503)
 17372  		return r
 17373  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17374  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17375  		return r
 17376  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17377  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(15)
 17378  		return r
 17379  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17380  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17381  		return r
 17382  	}()},
 17383  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17384  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(271)
 17385  		return r
 17386  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17387  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17388  		return r
 17389  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17390  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(143)
 17391  		return r
 17392  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17393  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17394  		return r
 17395  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17396  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(399)
 17397  		return r
 17398  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17399  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17400  		return r
 17401  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17402  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(79)
 17403  		return r
 17404  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17405  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17406  		return r
 17407  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17408  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(335)
 17409  		return r
 17410  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17411  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17412  		return r
 17413  	}()},
 17414  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17415  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(207)
 17416  		return r
 17417  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17418  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17419  		return r
 17420  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17421  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(463)
 17422  		return r
 17423  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17424  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17425  		return r
 17426  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17427  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(47)
 17428  		return r
 17429  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17430  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17431  		return r
 17432  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17433  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(303)
 17434  		return r
 17435  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17436  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17437  		return r
 17438  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17439  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(175)
 17440  		return r
 17441  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17442  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17443  		return r
 17444  	}()},
 17445  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17446  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(431)
 17447  		return r
 17448  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17449  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17450  		return r
 17451  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17452  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(111)
 17453  		return r
 17454  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17455  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17456  		return r
 17457  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17458  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(367)
 17459  		return r
 17460  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17461  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17462  		return r
 17463  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17464  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(239)
 17465  		return r
 17466  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17467  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17468  		return r
 17469  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17470  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(495)
 17471  		return r
 17472  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17473  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17474  		return r
 17475  	}()},
 17476  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17477  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(31)
 17478  		return r
 17479  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17480  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17481  		return r
 17482  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17483  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(287)
 17484  		return r
 17485  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17486  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17487  		return r
 17488  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17489  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(159)
 17490  		return r
 17491  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17492  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17493  		return r
 17494  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17495  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(415)
 17496  		return r
 17497  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17498  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17499  		return r
 17500  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17501  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(95)
 17502  		return r
 17503  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17504  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17505  		return r
 17506  	}()},
 17507  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17508  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(351)
 17509  		return r
 17510  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17511  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17512  		return r
 17513  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17514  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(223)
 17515  		return r
 17516  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17517  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17518  		return r
 17519  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17520  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(479)
 17521  		return r
 17522  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17523  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17524  		return r
 17525  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17526  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(63)
 17527  		return r
 17528  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17529  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17530  		return r
 17531  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17532  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(319)
 17533  		return r
 17534  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17535  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17536  		return r
 17537  	}()},
 17538  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17539  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(191)
 17540  		return r
 17541  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17542  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17543  		return r
 17544  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17545  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(447)
 17546  		return r
 17547  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17548  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17549  		return r
 17550  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17551  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(127)
 17552  		return r
 17553  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17554  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17555  		return r
 17556  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17557  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(383)
 17558  		return r
 17559  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17560  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17561  		return r
 17562  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17563  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(255)
 17564  		return r
 17565  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17566  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17567  		return r
 17568  	}()},
 17569  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17570  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(511)
 17571  		return r
 17572  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17573  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17574  		return r
 17575  	}()}, {Fdl: func() (r struct{ Fdad Ush }) {
 17576  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17577  		return r
 17578  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17579  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(64)
 17580  		return r
 17581  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17582  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17583  		return r
 17584  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17585  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(32)
 17586  		return r
 17587  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17588  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17589  		return r
 17590  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17591  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(96)
 17592  		return r
 17593  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17594  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17595  		return r
 17596  	}()},
 17597  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17598  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16)
 17599  		return r
 17600  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17601  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17602  		return r
 17603  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17604  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(80)
 17605  		return r
 17606  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17607  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17608  		return r
 17609  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17610  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(48)
 17611  		return r
 17612  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17613  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17614  		return r
 17615  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17616  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(112)
 17617  		return r
 17618  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17619  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17620  		return r
 17621  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17622  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17623  		return r
 17624  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17625  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17626  		return r
 17627  	}()},
 17628  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17629  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(72)
 17630  		return r
 17631  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17632  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17633  		return r
 17634  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17635  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(40)
 17636  		return r
 17637  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17638  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17639  		return r
 17640  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17641  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(104)
 17642  		return r
 17643  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17644  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17645  		return r
 17646  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17647  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24)
 17648  		return r
 17649  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17650  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17651  		return r
 17652  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17653  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(88)
 17654  		return r
 17655  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17656  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17657  		return r
 17658  	}()},
 17659  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17660  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(56)
 17661  		return r
 17662  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17663  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17664  		return r
 17665  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17666  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(120)
 17667  		return r
 17668  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17669  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17670  		return r
 17671  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17672  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4)
 17673  		return r
 17674  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17675  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17676  		return r
 17677  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17678  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(68)
 17679  		return r
 17680  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17681  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17682  		return r
 17683  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17684  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(36)
 17685  		return r
 17686  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17687  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17688  		return r
 17689  	}()},
 17690  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17691  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(100)
 17692  		return r
 17693  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17694  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17695  		return r
 17696  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17697  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20)
 17698  		return r
 17699  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17700  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17701  		return r
 17702  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17703  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(84)
 17704  		return r
 17705  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17706  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17707  		return r
 17708  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17709  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(52)
 17710  		return r
 17711  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17712  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17713  		return r
 17714  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17715  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(116)
 17716  		return r
 17717  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17718  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17719  		return r
 17720  	}()},
 17721  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17722  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3)
 17723  		return r
 17724  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17725  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17726  		return r
 17727  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17728  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(131)
 17729  		return r
 17730  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17731  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17732  		return r
 17733  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17734  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(67)
 17735  		return r
 17736  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17737  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17738  		return r
 17739  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17740  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(195)
 17741  		return r
 17742  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17743  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17744  		return r
 17745  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17746  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(35)
 17747  		return r
 17748  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17749  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17750  		return r
 17751  	}()},
 17752  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17753  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(163)
 17754  		return r
 17755  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17756  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17757  		return r
 17758  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17759  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(99)
 17760  		return r
 17761  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17762  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17763  		return r
 17764  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17765  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(227)
 17766  		return r
 17767  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17768  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17769  		return r
 17770  	}()}} /* trees.h:3:21 */
 17771  
 17772  var static_dtree = [30]Ct_data{{Fdl: func() (r struct{ Fdad Ush }) {
 17773  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17774  	return r
 17775  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17776  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(16)
 17777  	return r
 17778  }(), Fdl: func() (r struct{ Fdad Ush }) {
 17779  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17780  	return r
 17781  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17782  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(8)
 17783  	return r
 17784  }(), Fdl: func() (r struct{ Fdad Ush }) {
 17785  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17786  	return r
 17787  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17788  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(24)
 17789  	return r
 17790  }(), Fdl: func() (r struct{ Fdad Ush }) {
 17791  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17792  	return r
 17793  }()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17794  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(4)
 17795  	return r
 17796  }(), Fdl: func() (r struct{ Fdad Ush }) {
 17797  	*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17798  	return r
 17799  }()},
 17800  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17801  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(20)
 17802  		return r
 17803  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17804  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17805  		return r
 17806  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17807  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(12)
 17808  		return r
 17809  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17810  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17811  		return r
 17812  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17813  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(28)
 17814  		return r
 17815  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17816  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17817  		return r
 17818  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17819  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(2)
 17820  		return r
 17821  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17822  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17823  		return r
 17824  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17825  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(18)
 17826  		return r
 17827  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17828  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17829  		return r
 17830  	}()},
 17831  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17832  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(10)
 17833  		return r
 17834  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17835  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17836  		return r
 17837  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17838  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(26)
 17839  		return r
 17840  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17841  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17842  		return r
 17843  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17844  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(6)
 17845  		return r
 17846  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17847  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17848  		return r
 17849  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17850  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(22)
 17851  		return r
 17852  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17853  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17854  		return r
 17855  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17856  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(14)
 17857  		return r
 17858  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17859  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17860  		return r
 17861  	}()},
 17862  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17863  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(30)
 17864  		return r
 17865  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17866  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17867  		return r
 17868  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17869  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(1)
 17870  		return r
 17871  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17872  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17873  		return r
 17874  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17875  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(17)
 17876  		return r
 17877  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17878  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17879  		return r
 17880  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17881  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(9)
 17882  		return r
 17883  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17884  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17885  		return r
 17886  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17887  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(25)
 17888  		return r
 17889  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17890  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17891  		return r
 17892  	}()},
 17893  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17894  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17895  		return r
 17896  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17897  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17898  		return r
 17899  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17900  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(21)
 17901  		return r
 17902  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17903  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17904  		return r
 17905  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17906  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(13)
 17907  		return r
 17908  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17909  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17910  		return r
 17911  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17912  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(29)
 17913  		return r
 17914  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17915  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17916  		return r
 17917  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17918  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(3)
 17919  		return r
 17920  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17921  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17922  		return r
 17923  	}()},
 17924  	{Ffc: func() (r struct{ Ffreq Ush }) {
 17925  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(19)
 17926  		return r
 17927  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17928  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17929  		return r
 17930  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17931  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(11)
 17932  		return r
 17933  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17934  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17935  		return r
 17936  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17937  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(27)
 17938  		return r
 17939  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17940  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17941  		return r
 17942  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17943  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(7)
 17944  		return r
 17945  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17946  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17947  		return r
 17948  	}()}, {Ffc: func() (r struct{ Ffreq Ush }) {
 17949  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(23)
 17950  		return r
 17951  	}(), Fdl: func() (r struct{ Fdad Ush }) {
 17952  		*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&r)) + 0)) = Ush(5)
 17953  		return r
 17954  	}()}} /* trees.h:64:21 */
 17955  
 17956  var X_dist_code = [512]Uch{
 17957  	Uch(0), Uch(1), Uch(2), Uch(3), Uch(4), Uch(4), Uch(5), Uch(5), Uch(6), Uch(6), Uch(6), Uch(6), Uch(7), Uch(7), Uch(7), Uch(7), Uch(8), Uch(8), Uch(8), Uch(8),
 17958  	Uch(8), Uch(8), Uch(8), Uch(8), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(9), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10),
 17959  	Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(10), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11), Uch(11),
 17960  	Uch(11), Uch(11), Uch(11), Uch(11), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12),
 17961  	Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(12), Uch(13), Uch(13), Uch(13), Uch(13),
 17962  	Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13),
 17963  	Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(13), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14),
 17964  	Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14),
 17965  	Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14),
 17966  	Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(14), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15),
 17967  	Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15),
 17968  	Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15),
 17969  	Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(15), Uch(0), Uch(0), Uch(16), Uch(17),
 17970  	Uch(18), Uch(18), Uch(19), Uch(19), Uch(20), Uch(20), Uch(20), Uch(20), Uch(21), Uch(21), Uch(21), Uch(21), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22),
 17971  	Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24),
 17972  	Uch(24), Uch(24), Uch(24), Uch(24), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25),
 17973  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26),
 17974  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27),
 17975  	Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27),
 17976  	Uch(27), Uch(27), Uch(27), Uch(27), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28),
 17977  	Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28),
 17978  	Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28),
 17979  	Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(28), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 17980  	Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 17981  	Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 17982  	Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29), Uch(29),
 17983  } /* trees.h:73:25 */
 17984  
 17985  var X_length_code = [256]Uch{
 17986  	Uch(0), Uch(1), Uch(2), Uch(3), Uch(4), Uch(5), Uch(6), Uch(7), Uch(8), Uch(8), Uch(9), Uch(9), Uch(10), Uch(10), Uch(11), Uch(11), Uch(12), Uch(12), Uch(12), Uch(12),
 17987  	Uch(13), Uch(13), Uch(13), Uch(13), Uch(14), Uch(14), Uch(14), Uch(14), Uch(15), Uch(15), Uch(15), Uch(15), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16), Uch(16),
 17988  	Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(17), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(18), Uch(19), Uch(19), Uch(19), Uch(19),
 17989  	Uch(19), Uch(19), Uch(19), Uch(19), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20), Uch(20),
 17990  	Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(21), Uch(22), Uch(22), Uch(22), Uch(22),
 17991  	Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(22), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23),
 17992  	Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(23), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24),
 17993  	Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24), Uch(24),
 17994  	Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25),
 17995  	Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(25), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26),
 17996  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26), Uch(26),
 17997  	Uch(26), Uch(26), Uch(26), Uch(26), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27),
 17998  	Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(27), Uch(28),
 17999  } /* trees.h:102:25 */
 18000  
 18001  var base_length = [29]int32{
 18002  	0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
 18003  	64, 80, 96, 112, 128, 160, 192, 224, 0,
 18004  } /* trees.h:118:17 */
 18005  
 18006  var base_dist = [30]int32{
 18007  	0, 1, 2, 3, 4, 6, 8, 12, 16, 24,
 18008  	32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
 18009  	1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576,
 18010  } /* trees.h:123:17 */
 18011  
 18012  var static_l_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Fextra_base: (LITERALS + 1), Felems: ((LITERALS + 1) + LENGTH_CODES), Fmax_length: MAX_BITS} /* trees.c:125:31 */
 18013  
 18014  var static_d_desc = Static_tree_desc{Fstatic_tree: 0, Fextra_bits: 0, Felems: D_CODES, Fmax_length: MAX_BITS} /* trees.c:128:31 */
 18015  
 18016  var static_bl_desc = Static_tree_desc{Fextra_bits: 0, Felems: BL_CODES, Fmax_length: MAX_BL_BITS} /* trees.c:131:31 */
 18017  
 18018  // Send a code of the given tree. c and tree must not have side effects
 18019  
 18020  // ===========================================================================
 18021  // Output a short LSB first on the stream.
 18022  // IN assertion: there is enough room in pendingBuf.
 18023  
 18024  // ===========================================================================
 18025  // Send a value on a given number of bits.
 18026  // IN assertion: length <= 16 and value fits in length bits.
 18027  
 18028  // the arguments must not have side effects
 18029  
 18030  // ===========================================================================
 18031  // Initialize the various 'constant' tables.
 18032  func tr_static_init(tls *libc.TLS) { /* trees.c:232:12: */
 18033  }
 18034  
 18035  // ===========================================================================
 18036  // Genererate the file trees.h describing the static trees.
 18037  
 18038  // ===========================================================================
 18039  // Initialize the tree data structures for a new zlib stream.
 18040  func X_tr_init(tls *libc.TLS, s uintptr) { /* trees.c:379:20: */
 18041  	tr_static_init(tls)
 18042  
 18043  	(*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fdyn_tree = s + 148 /* &.dyn_ltree */
 18044  	(*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_l_desc))
 18045  
 18046  	(*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fdyn_tree = s + 2440 /* &.dyn_dtree */
 18047  	(*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_d_desc))
 18048  
 18049  	(*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fdyn_tree = s + 2684 /* &.bl_tree */
 18050  	(*Deflate_state)(unsafe.Pointer(s)).Fbl_desc.Fstat_desc = uintptr(unsafe.Pointer(&static_bl_desc))
 18051  
 18052  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0)
 18053  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0
 18054  
 18055  	// Initialize the first block of the first file:
 18056  	init_block(tls, s)
 18057  }
 18058  
 18059  // ===========================================================================
 18060  // Initialize a new block.
 18061  func init_block(tls *libc.TLS, s uintptr) { /* trees.c:407:12: */
 18062  	var n int32 // iterates over tree elements
 18063  
 18064  	// Initialize the trees.
 18065  	for n = 0; n < ((LITERALS + 1) + LENGTH_CODES); n++ {
 18066  		*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */)) = Ush(0)
 18067  	}
 18068  	for n = 0; n < D_CODES; n++ {
 18069  		*(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr(n)*4 /* &.fc */)) = Ush(0)
 18070  	}
 18071  	for n = 0; n < BL_CODES; n++ {
 18072  		*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(n)*4 /* &.fc */)) = Ush(0)
 18073  	}
 18074  
 18075  	*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 256*4 /* &.fc */)) = Ush(1)
 18076  	(*Deflate_state)(unsafe.Pointer(s)).Fopt_len = libc.AssignPtrUint32(s+5804 /* &.static_len */, Ulg(0))
 18077  	(*Deflate_state)(unsafe.Pointer(s)).Flast_lit = libc.AssignPtrUint32(s+5808 /* &.matches */, UInt(0))
 18078  }
 18079  
 18080  // Index within the heap array of least frequent node in the Huffman tree
 18081  
 18082  // ===========================================================================
 18083  // Remove the smallest element from the heap and recreate the heap with
 18084  // one less element. Updates heap and heap_len.
 18085  
 18086  // ===========================================================================
 18087  // Compares to subtrees, using the tree depth as tie breaker when
 18088  // the subtrees have equal frequency. This minimizes the worst case length.
 18089  
 18090  // ===========================================================================
 18091  // Restore the heap property by moving down the tree starting at node k,
 18092  // exchanging a node with the smallest of its two sons if necessary, stopping
 18093  // when the heap property is re-established (each father smaller than its
 18094  // two sons).
 18095  func pqdownheap(tls *libc.TLS, s uintptr, tree uintptr, k int32) { /* trees.c:451:12: */
 18096  	var v int32 = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(k)*4))
 18097  	var j int32 = (k << 1) // left son of k
 18098  	for j <= (*Deflate_state)(unsafe.Pointer(s)).Fheap_len {
 18099  		// Set j to the smallest of the two sons:
 18100  		if (j < (*Deflate_state)(unsafe.Pointer(s)).Fheap_len) && ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) || ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((j+1))*4)))*4 /* &.fc */))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((j+1))*4)))))) <= int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4))))))))) {
 18101  			j++
 18102  		}
 18103  		// Exit if v is smaller than both sons
 18104  		if (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4 /* &.fc */))) < int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) || ((int32(*(*Ush)(unsafe.Pointer(tree + uintptr(v)*4 /* &.fc */))) == int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))*4 /* &.fc */)))) && (int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(v)))) <= int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4)))))))) {
 18105  			break
 18106  		}
 18107  
 18108  		// Exchange v with the smallest son
 18109  		*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(k)*4)) = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(j)*4))
 18110  		k = j
 18111  
 18112  		// And continue down the tree, setting j to the left son of k
 18113  		j <<= 1
 18114  	}
 18115  	*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(k)*4)) = v
 18116  }
 18117  
 18118  // ===========================================================================
 18119  // Compute the optimal bit lengths for a tree and update the total bit length
 18120  // for the current block.
 18121  // IN assertion: the fields freq and dad are set, heap[heap_max] and
 18122  //    above are the tree nodes sorted by increasing frequency.
 18123  // OUT assertions: the field len is set to the optimal bit length, the
 18124  //     array bl_count contains the frequencies for each bit length.
 18125  //     The length opt_len is updated; static_len is also updated if stree is
 18126  //     not null.
 18127  func gen_bitlen(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:486:12: */
 18128  	var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree
 18129  	var max_code int32 = (*Tree_desc)(unsafe.Pointer(desc)).Fmax_code
 18130  	var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree
 18131  	var extra uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_bits
 18132  	var base int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fextra_base
 18133  	var max_length int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fmax_length
 18134  	var h int32 // heap index
 18135  	var n int32
 18136  	var m int32            // iterate over the tree elements
 18137  	var bits int32         // bit length
 18138  	var xbits int32        // extra bits
 18139  	var f Ush              // frequency
 18140  	var overflow int32 = 0 // number of elements with bit length too large
 18141  
 18142  	for bits = 0; bits <= MAX_BITS; bits++ {
 18143  		*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2)) = Ush(0)
 18144  	}
 18145  
 18146  	// In a first pass, compute the optimal bit lengths (which may
 18147  	// overflow in the case of the bit length tree).
 18148  	*(*Ush)(unsafe.Pointer(tree + uintptr(*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fheap_max)*4)))*4 + 2 /* &.dl */)) = Ush(0) // root of the heap
 18149  
 18150  	for h = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_max + 1); h < ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1); h++ {
 18151  		n = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(h)*4))
 18152  		bits = (int32(*(*Ush)(unsafe.Pointer(tree + uintptr(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)))*4 + 2 /* &.dl */))) + 1)
 18153  		if bits > max_length {
 18154  			bits = max_length
 18155  			overflow++
 18156  		}
 18157  		*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(bits)
 18158  		// We overwrite tree[n].Dad which is no longer needed
 18159  
 18160  		if n > max_code {
 18161  			continue
 18162  		} // not a leaf node
 18163  
 18164  		*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2))++
 18165  		xbits = 0
 18166  		if n >= base {
 18167  			xbits = *(*Intf)(unsafe.Pointer(extra + uintptr((n-base))*4))
 18168  		}
 18169  		f = *(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))
 18170  		*(*Ulg)(unsafe.Pointer(s + 5800 /* &.opt_len */)) += (Ulg(f) * Ulg((uint32(bits + xbits))))
 18171  		if stree != 0 {
 18172  			*(*Ulg)(unsafe.Pointer(s + 5804 /* &.static_len */)) += (Ulg(f) * Ulg((uint32(int32(*(*Ush)(unsafe.Pointer(stree + uintptr(n)*4 + 2 /* &.dl */))) + xbits))))
 18173  		}
 18174  	}
 18175  	if overflow == 0 {
 18176  		return
 18177  	}
 18178  
 18179  	// This happens for example on obj2 and pic of the Calgary corpus
 18180  
 18181  	// Find the first bit length which could increase:
 18182  	for ok := true; ok; ok = (overflow > 0) {
 18183  		bits = (max_length - 1)
 18184  		for int32(*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2))) == 0 {
 18185  			bits--
 18186  		}
 18187  		*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2))--               // move one leaf down the tree
 18188  		*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr((bits+1))*2)) += Ush((2)) // move one overflow item as its brother
 18189  		*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(max_length)*2))--
 18190  		// The brother of the overflow item also moves one step up,
 18191  		// but this does not affect bl_count[max_length]
 18192  		overflow = overflow - (2)
 18193  	}
 18194  
 18195  	// Now recompute all bit lengths, scanning in increasing frequency.
 18196  	// h is still equal to HEAP_SIZE. (It is simpler to reconstruct all
 18197  	// lengths instead of fixing only the wrong ones. This idea is taken
 18198  	// from 'ar' written by Haruhiko Okumura.)
 18199  	for bits = max_length; bits != 0; bits-- {
 18200  		n = int32(*(*Ush)(unsafe.Pointer((s + 2876 /* &.bl_count */) + uintptr(bits)*2)))
 18201  		for n != 0 {
 18202  			m = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&h, 1))*4))
 18203  			if m > max_code {
 18204  				continue
 18205  			}
 18206  			if uint32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */))) != uint32(bits) {
 18207  
 18208  				*(*Ulg)(unsafe.Pointer(s + 5800 /* &.opt_len */)) += ((Ulg(bits) - Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)))) * Ulg(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 /* &.fc */))))
 18209  				*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 + 2 /* &.dl */)) = Ush(bits)
 18210  			}
 18211  			n--
 18212  		}
 18213  	}
 18214  }
 18215  
 18216  // ===========================================================================
 18217  // Generate the codes for a given tree and bit counts (which need not be
 18218  // optimal).
 18219  // IN assertion: the array bl_count contains the bit length statistics for
 18220  // the given tree and the field len is set for all tree elements.
 18221  // OUT assertion: the field code is set for all tree elements of non
 18222  //     zero code length.
 18223  func gen_codes(tls *libc.TLS, tree uintptr, max_code int32, bl_count uintptr) { /* trees.c:572:12: */
 18224  	bp := tls.Alloc(32)
 18225  	defer tls.Free(32)
 18226  
 18227  	// var next_code [16]Ush at bp, 32
 18228  	// next code value for each bit length
 18229  	var code uint32 = uint32(0) // running code value
 18230  	var bits int32              // bit index
 18231  	var n int32                 // code index
 18232  
 18233  	// The distribution counts are first used to generate the code values
 18234  	// without bit reversal.
 18235  	for bits = 1; bits <= MAX_BITS; bits++ {
 18236  		code = ((code + uint32(*(*Ushf)(unsafe.Pointer(bl_count + uintptr((bits-1))*2)))) << 1)
 18237  		*(*Ush)(unsafe.Pointer(bp /* &next_code[0] */ + uintptr(bits)*2)) = Ush(code)
 18238  	}
 18239  	// Check that the bit counts in bl_count are consistent. The last code
 18240  	// must be all ones.
 18241  
 18242  	for n = 0; n <= max_code; n++ {
 18243  		var len int32 = int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)))
 18244  		if len == 0 {
 18245  			continue
 18246  		}
 18247  		// Now reverse the bits
 18248  		*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */)) = Ush(bi_reverse(tls, uint32(libc.PostIncUint16(&*(*Ush)(unsafe.Pointer(bp /* &next_code[0] */ + uintptr(len)*2)), 1)), len))
 18249  
 18250  	}
 18251  }
 18252  
 18253  // ===========================================================================
 18254  // Construct one Huffman tree and assigns the code bit strings and lengths.
 18255  // Update the total bit length for the current block.
 18256  // IN assertion: the field freq is set for all tree elements.
 18257  // OUT assertions: the fields len and code are set to the optimal bit length
 18258  //     and corresponding code. The length opt_len is updated; static_len is
 18259  //     also updated if stree is not null. The field max_code is set.
 18260  func build_tree(tls *libc.TLS, s uintptr, desc uintptr) { /* trees.c:615:12: */
 18261  	var tree uintptr = (*Tree_desc)(unsafe.Pointer(desc)).Fdyn_tree
 18262  	var stree uintptr = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Fstatic_tree
 18263  	var elems int32 = (*Static_tree_desc)(unsafe.Pointer((*Tree_desc)(unsafe.Pointer(desc)).Fstat_desc)).Felems
 18264  	var n int32
 18265  	var m int32             // iterate over heap elements
 18266  	var max_code int32 = -1 // largest code with non zero frequency
 18267  	var node int32          // new node being created
 18268  
 18269  	// Construct the initial heap, with least frequent element in
 18270  	// heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
 18271  	// heap[0] is not used.
 18272  	(*Deflate_state)(unsafe.Pointer(s)).Fheap_len = 0
 18273  	(*Deflate_state)(unsafe.Pointer(s)).Fheap_max = ((2 * ((LITERALS + 1) + LENGTH_CODES)) + 1)
 18274  
 18275  	for n = 0; n < elems; n++ {
 18276  		if int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))) != 0 {
 18277  			*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4)) = libc.AssignInt32(&max_code, n)
 18278  			*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(n))) = Uch(0)
 18279  		} else {
 18280  			*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = Ush(0)
 18281  		}
 18282  	}
 18283  
 18284  	// The pkzip format requires that at least one distance code exists,
 18285  	// and that at least one bit should be sent even if there is only one
 18286  	// possible code. So to avoid special checks later on we force at least
 18287  	// two codes of non zero frequency.
 18288  	for (*Deflate_state)(unsafe.Pointer(s)).Fheap_len < 2 {
 18289  		node = libc.AssignPtrInt32((s+2908 /* &.heap */)+uintptr(libc.PreIncInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_len), 1))*4, func() int32 {
 18290  			if max_code < 2 {
 18291  				return libc.PreIncInt32(&max_code, 1)
 18292  			}
 18293  			return 0
 18294  		}())
 18295  		*(*Ush)(unsafe.Pointer(tree + uintptr(node)*4 /* &.fc */)) = Ush(1)
 18296  		*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(node))) = Uch(0)
 18297  		(*Deflate_state)(unsafe.Pointer(s)).Fopt_len--
 18298  		if stree != 0 {
 18299  			*(*Ulg)(unsafe.Pointer(s + 5804 /* &.static_len */)) -= (Ulg(*(*Ush)(unsafe.Pointer(stree + uintptr(node)*4 + 2 /* &.dl */))))
 18300  		}
 18301  		// node is 0 or 1 so it does not have extra bits
 18302  	}
 18303  	(*Tree_desc)(unsafe.Pointer(desc)).Fmax_code = max_code
 18304  
 18305  	// The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
 18306  	// establish sub-heaps of increasing lengths:
 18307  	for n = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len / 2); n >= 1; n-- {
 18308  		pqdownheap(tls, s, tree, n)
 18309  	}
 18310  
 18311  	// Construct the Huffman tree by repeatedly combining the least two
 18312  	// frequent nodes.
 18313  	node = elems // next internal node of the tree
 18314  	for ok := true; ok; ok = ((*Deflate_state)(unsafe.Pointer(s)).Fheap_len >= 2) {
 18315  		{
 18316  			n = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4))
 18317  			*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PostDecInt32(&(*Deflate_state)(unsafe.Pointer(s)).Fheap_len, 1))*4))
 18318  			pqdownheap(tls, s, tree, SMALLEST)
 18319  		}
 18320  		// n = node of least frequency
 18321  		m = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) // m = node of next least frequency
 18322  
 18323  		*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = n // keep the nodes sorted by frequency
 18324  		*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = m
 18325  
 18326  		// Create a new node father of n and m
 18327  		*(*Ush)(unsafe.Pointer(tree + uintptr(node)*4 /* &.fc */)) = (Ush(int32(*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 /* &.fc */))) + int32(*(*Ush)(unsafe.Pointer(tree + uintptr(m)*4 /* &.fc */)))))
 18328  		*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(node))) = (Uch((func() int32 {
 18329  			if int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(n)))) >= int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(m)))) {
 18330  				return int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(n))))
 18331  			}
 18332  			return int32(*(*Uch)(unsafe.Pointer((s + 5208 /* &.depth */) + uintptr(m))))
 18333  		}()) + 1))
 18334  		*(*Ush)(unsafe.Pointer(tree + uintptr(n)*4 + 2 /* &.dl */)) = libc.AssignPtrUint16(tree+uintptr(m)*4+2 /* &.dl */ /* &.dad */, Ush(node))
 18335  		// and insert the new node in the heap
 18336  		*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4)) = libc.PostIncInt32(&node, 1)
 18337  		pqdownheap(tls, s, tree, SMALLEST)
 18338  
 18339  	}
 18340  
 18341  	*(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + uintptr(libc.PreDecInt32(&((*Deflate_state)(unsafe.Pointer(s)).Fheap_max), 1))*4)) = *(*int32)(unsafe.Pointer((s + 2908 /* &.heap */) + 1*4))
 18342  
 18343  	// At this point, the fields freq and dad are set. We can now
 18344  	// generate the bit lengths.
 18345  	gen_bitlen(tls, s, desc)
 18346  
 18347  	// The field len is now set, we can generate the bit codes
 18348  	gen_codes(tls, tree, max_code, s+2876 /* &.bl_count */)
 18349  }
 18350  
 18351  // ===========================================================================
 18352  // Scan a literal or distance tree to determine the frequencies of the codes
 18353  // in the bit length tree.
 18354  func scan_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:703:12: */
 18355  	var n int32                                                             // iterates over all tree elements
 18356  	var prevlen int32 = -1                                                  // last emitted length
 18357  	var curlen int32                                                        // length of current code
 18358  	var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code
 18359  	var count int32 = 0                                                     // repeat count of the current code
 18360  	var max_count int32 = 7                                                 // max repeat count
 18361  	var min_count int32 = 4                                                 // min repeat count
 18362  
 18363  	if nextlen == 0 {
 18364  		max_count = 138
 18365  		min_count = 3
 18366  	}
 18367  	*(*Ush)(unsafe.Pointer(tree + uintptr((max_code+1))*4 + 2 /* &.dl */)) = Ush(0xffff) // guard
 18368  
 18369  	for n = 0; n <= max_code; n++ {
 18370  		curlen = nextlen
 18371  		nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */)))
 18372  		if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) {
 18373  			continue
 18374  		} else if count < min_count {
 18375  			*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */ /* &.freq */)) += Ush((count))
 18376  		} else if curlen != 0 {
 18377  			if curlen != prevlen {
 18378  				*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */))++
 18379  			}
 18380  			*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 /* &.fc */))++
 18381  		} else if count <= 10 {
 18382  			*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 /* &.fc */))++
 18383  		} else {
 18384  			*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 /* &.fc */))++
 18385  		}
 18386  		count = 0
 18387  		prevlen = curlen
 18388  		if nextlen == 0 {
 18389  			max_count = 138
 18390  			min_count = 3
 18391  		} else if curlen == nextlen {
 18392  			max_count = 6
 18393  			min_count = 3
 18394  		} else {
 18395  			max_count = 7
 18396  			min_count = 4
 18397  		}
 18398  	}
 18399  }
 18400  
 18401  // ===========================================================================
 18402  // Send a literal or distance tree in compressed form, using the codes in
 18403  // bl_tree.
 18404  func send_tree(tls *libc.TLS, s uintptr, tree uintptr, max_code int32) { /* trees.c:748:12: */
 18405  	var n int32                                                             // iterates over all tree elements
 18406  	var prevlen int32 = -1                                                  // last emitted length
 18407  	var curlen int32                                                        // length of current code
 18408  	var nextlen int32 = int32(*(*Ush)(unsafe.Pointer(tree + 2 /* &.dl */))) // length of next code
 18409  	var count int32 = 0                                                     // repeat count of the current code
 18410  	var max_count int32 = 7                                                 // max repeat count
 18411  	var min_count int32 = 4                                                 // min repeat count
 18412  
 18413  	/* tree[max_code+1].Len = -1; */ // guard already set
 18414  	if nextlen == 0 {
 18415  		max_count = 138
 18416  		min_count = 3
 18417  	}
 18418  
 18419  	for n = 0; n <= max_code; n++ {
 18420  		curlen = nextlen
 18421  		nextlen = int32(*(*Ush)(unsafe.Pointer(tree + uintptr((n+1))*4 + 2 /* &.dl */)))
 18422  		if (libc.PreIncInt32(&count, 1) < max_count) && (curlen == nextlen) {
 18423  			continue
 18424  		} else if count < min_count {
 18425  			for ok := true; ok; ok = (libc.PreDecInt32(&count, 1) != 0) {
 18426  				{
 18427  					var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */)))
 18428  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18429  						var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))
 18430  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18431  						{
 18432  							{
 18433  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18434  							}
 18435  							{
 18436  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18437  							}
 18438  
 18439  						}
 18440  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18441  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18442  					} else {
 18443  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18444  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18445  					}
 18446  				}
 18447  			}
 18448  
 18449  		} else if curlen != 0 {
 18450  			if curlen != prevlen {
 18451  				{
 18452  					var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 + 2 /* &.dl */)))
 18453  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18454  						var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))
 18455  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18456  						{
 18457  							{
 18458  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18459  							}
 18460  							{
 18461  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18462  							}
 18463  
 18464  						}
 18465  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18466  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18467  					} else {
 18468  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(curlen)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18469  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18470  					}
 18471  				}
 18472  				count--
 18473  			}
 18474  
 18475  			{
 18476  				var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 + 2 /* &.dl */)))
 18477  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18478  					var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 /* &.fc */)))
 18479  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18480  					{
 18481  						{
 18482  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18483  						}
 18484  						{
 18485  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18486  						}
 18487  
 18488  					}
 18489  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18490  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18491  				} else {
 18492  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 16*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18493  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18494  				}
 18495  			}
 18496  			{
 18497  				var len int32 = 2
 18498  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18499  					var val int32 = (count - 3)
 18500  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18501  					{
 18502  						{
 18503  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18504  						}
 18505  						{
 18506  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18507  						}
 18508  
 18509  					}
 18510  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18511  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18512  				} else {
 18513  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18514  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18515  				}
 18516  			}
 18517  
 18518  		} else if count <= 10 {
 18519  			{
 18520  				var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 + 2 /* &.dl */)))
 18521  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18522  					var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 /* &.fc */)))
 18523  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18524  					{
 18525  						{
 18526  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18527  						}
 18528  						{
 18529  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18530  						}
 18531  
 18532  					}
 18533  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18534  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18535  				} else {
 18536  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 17*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18537  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18538  				}
 18539  			}
 18540  			{
 18541  				var len int32 = 3
 18542  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18543  					var val int32 = (count - 3)
 18544  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18545  					{
 18546  						{
 18547  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18548  						}
 18549  						{
 18550  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18551  						}
 18552  
 18553  					}
 18554  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18555  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18556  				} else {
 18557  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(count - 3))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18558  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18559  				}
 18560  			}
 18561  
 18562  		} else {
 18563  			{
 18564  				var len int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 + 2 /* &.dl */)))
 18565  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18566  					var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 /* &.fc */)))
 18567  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18568  					{
 18569  						{
 18570  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18571  						}
 18572  						{
 18573  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18574  						}
 18575  
 18576  					}
 18577  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18578  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18579  				} else {
 18580  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + 18*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18581  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18582  				}
 18583  			}
 18584  			{
 18585  				var len int32 = 7
 18586  				if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18587  					var val int32 = (count - 11)
 18588  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18589  					{
 18590  						{
 18591  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18592  						}
 18593  						{
 18594  							*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18595  						}
 18596  
 18597  					}
 18598  					(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18599  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18600  				} else {
 18601  					*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(count - 11))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18602  					*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18603  				}
 18604  			}
 18605  
 18606  		}
 18607  		count = 0
 18608  		prevlen = curlen
 18609  		if nextlen == 0 {
 18610  			max_count = 138
 18611  			min_count = 3
 18612  		} else if curlen == nextlen {
 18613  			max_count = 6
 18614  			min_count = 3
 18615  		} else {
 18616  			max_count = 7
 18617  			min_count = 4
 18618  		}
 18619  	}
 18620  }
 18621  
 18622  // ===========================================================================
 18623  // Construct the Huffman tree for the bit lengths and return the index in
 18624  // bl_order of the last bit length code to send.
 18625  func build_bl_tree(tls *libc.TLS, s uintptr) int32 { /* trees.c:799:11: */
 18626  	var max_blindex int32 // index of last bit length code of non zero freq
 18627  
 18628  	// Determine the bit length frequencies for literal and distance trees
 18629  	scan_tree(tls, s, s+148 /* &.dyn_ltree */, (*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code)
 18630  	scan_tree(tls, s, s+2440 /* &.dyn_dtree */, (*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code)
 18631  
 18632  	// Build the bit length tree:
 18633  	build_tree(tls, s, (s + 2864 /* &.bl_desc */))
 18634  	// opt_len now includes the length of the tree representations, except
 18635  	// the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
 18636  
 18637  	// Determine the number of bit length codes to send. The pkzip format
 18638  	// requires that at least 4 bit length codes be sent. (appnote.txt says
 18639  	// 3 but the actual value used is 4.)
 18640  	for max_blindex = (BL_CODES - 1); max_blindex >= 3; max_blindex-- {
 18641  		if int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(bl_order[max_blindex])*4 + 2 /* &.dl */))) != 0 {
 18642  			break
 18643  		}
 18644  	}
 18645  	// Update opt_len to include the bit length tree and counts
 18646  	*(*Ulg)(unsafe.Pointer(s + 5800 /* &.opt_len */)) += ((((Ulg(3) * (Ulg(max_blindex) + Ulg(1))) + Ulg(5)) + Ulg(5)) + Ulg(4))
 18647  
 18648  	return max_blindex
 18649  }
 18650  
 18651  // ===========================================================================
 18652  // Send the header for a block using dynamic Huffman trees: the counts, the
 18653  // lengths of the bit length codes, the literal tree and the distance tree.
 18654  // IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4.
 18655  func send_all_trees(tls *libc.TLS, s uintptr, lcodes int32, dcodes int32, blcodes int32) { /* trees.c:834:12: */
 18656  	var rank int32 // index in bl_order
 18657  
 18658  	{
 18659  		var len int32 = 5
 18660  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18661  			var val int32 = (lcodes - 257)
 18662  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18663  			{
 18664  				{
 18665  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18666  				}
 18667  				{
 18668  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18669  				}
 18670  
 18671  			}
 18672  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18673  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18674  		} else {
 18675  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(lcodes - 257))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18676  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18677  		}
 18678  	}
 18679  	/* not +255 as stated in appnote.txt */
 18680  	{
 18681  		var len int32 = 5
 18682  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18683  			var val int32 = (dcodes - 1)
 18684  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18685  			{
 18686  				{
 18687  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18688  				}
 18689  				{
 18690  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18691  				}
 18692  
 18693  			}
 18694  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18695  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18696  		} else {
 18697  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(dcodes - 1))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18698  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18699  		}
 18700  	}
 18701  
 18702  	{
 18703  		var len int32 = 4
 18704  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18705  			var val int32 = (blcodes - 4)
 18706  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18707  			{
 18708  				{
 18709  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18710  				}
 18711  				{
 18712  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18713  				}
 18714  
 18715  			}
 18716  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18717  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18718  		} else {
 18719  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(blcodes - 4))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18720  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18721  		}
 18722  	}
 18723  	// not -3 as stated in appnote.txt
 18724  	for rank = 0; rank < blcodes; rank++ {
 18725  
 18726  		{
 18727  			var len int32 = 3
 18728  			if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18729  				var val int32 = int32(*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */)))
 18730  				*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18731  				{
 18732  					{
 18733  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18734  					}
 18735  					{
 18736  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18737  					}
 18738  
 18739  				}
 18740  				(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18741  				*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18742  			} else {
 18743  				*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer((s + 2684 /* &.bl_tree */) + uintptr(bl_order[rank])*4 + 2 /* &.dl */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18744  				*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18745  			}
 18746  		}
 18747  
 18748  	}
 18749  
 18750  	send_tree(tls, s, s+148 /* &.dyn_ltree */, (lcodes - 1)) // literal tree
 18751  
 18752  	send_tree(tls, s, s+2440 /* &.dyn_dtree */, (dcodes - 1)) // distance tree
 18753  
 18754  }
 18755  
 18756  // ===========================================================================
 18757  // Send a stored block
 18758  func X_tr_stored_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:863:20: */
 18759  	{
 18760  		var len int32 = 3
 18761  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18762  			var val int32 = ((int32(STORED_BLOCK) << 1) + last)
 18763  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18764  			{
 18765  				{
 18766  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18767  				}
 18768  				{
 18769  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18770  				}
 18771  
 18772  			}
 18773  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18774  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18775  		} else {
 18776  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STORED_BLOCK) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18777  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18778  		}
 18779  	}
 18780  	// send block type
 18781  	bi_windup(tls, s) /* align on byte boundary */
 18782  	{
 18783  		{
 18784  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(stored_len))) & 0xff))
 18785  		}
 18786  		{
 18787  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(stored_len))) >> 8))
 18788  		}
 18789  
 18790  	}
 18791  
 18792  	{
 18793  		{
 18794  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32(Ush(^stored_len))) & 0xff))
 18795  		}
 18796  		{
 18797  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32((Ush(^stored_len))) >> 8))
 18798  		}
 18799  
 18800  	}
 18801  
 18802  	libc.Xmemcpy(tls, ((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Fpending)), buf, uint32(stored_len))
 18803  	*(*Ulg)(unsafe.Pointer(s + 20 /* &.pending */)) += (stored_len)
 18804  }
 18805  
 18806  // ===========================================================================
 18807  // Flush the bits in the bit buffer to pending output (leaves at most 7 bits)
 18808  func X_tr_flush_bits(tls *libc.TLS, s uintptr) { /* trees.c:886:20: */
 18809  	bi_flush(tls, s)
 18810  }
 18811  
 18812  // ===========================================================================
 18813  // Send one empty static block to give enough lookahead for inflate.
 18814  // This takes 10 bits, of which 7 may remain in the bit buffer.
 18815  func X_tr_align(tls *libc.TLS, s uintptr) { /* trees.c:896:20: */
 18816  	{
 18817  		var len int32 = 3
 18818  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18819  			var val int32 = (int32(STATIC_TREES) << 1)
 18820  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18821  			{
 18822  				{
 18823  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18824  				}
 18825  				{
 18826  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18827  				}
 18828  
 18829  			}
 18830  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18831  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18832  		} else {
 18833  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(int32((Ush(int32(STATIC_TREES) << 1)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18834  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18835  		}
 18836  	}
 18837  
 18838  	{
 18839  		var len int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 + 2 /* &.dl */)))
 18840  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18841  			var val int32 = int32(*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */)))
 18842  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18843  			{
 18844  				{
 18845  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18846  				}
 18847  				{
 18848  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18849  				}
 18850  
 18851  			}
 18852  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18853  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18854  		} else {
 18855  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_ltree)) + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18856  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18857  		}
 18858  	}
 18859  
 18860  	bi_flush(tls, s)
 18861  }
 18862  
 18863  // ===========================================================================
 18864  // Determine the best encoding for the current block: dynamic trees, static
 18865  // trees or store, and write out the encoded block.
 18866  func X_tr_flush_block(tls *libc.TLS, s uintptr, buf uintptr, stored_len Ulg, last int32) { /* trees.c:911:20: */
 18867  	var opt_lenb Ulg
 18868  	var static_lenb Ulg       // opt_len and static_len in bytes
 18869  	var max_blindex int32 = 0 // index of last bit length code of non zero freq
 18870  
 18871  	// Build the Huffman trees unless a stored block is forced
 18872  	if (*Deflate_state)(unsafe.Pointer(s)).Flevel > 0 {
 18873  
 18874  		// Check if the file is binary or text
 18875  		if (*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type == Z_UNKNOWN {
 18876  			(*Z_stream)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fstrm)).Fdata_type = detect_data_type(tls, s)
 18877  		}
 18878  
 18879  		// Construct the literal and distance trees
 18880  		build_tree(tls, s, (s + 2840 /* &.l_desc */))
 18881  
 18882  		build_tree(tls, s, (s + 2852 /* &.d_desc */))
 18883  
 18884  		// At this point, opt_len and static_len are the total bit lengths of
 18885  		// the compressed block data, excluding the tree representations.
 18886  
 18887  		// Build the bit length tree for the above two trees, and get the index
 18888  		// in bl_order of the last bit length code to send.
 18889  		max_blindex = build_bl_tree(tls, s)
 18890  
 18891  		// Determine the best encoding. Compute the block lengths in bytes.
 18892  		opt_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fopt_len + Ulg(3)) + Ulg(7)) >> 3)
 18893  		static_lenb = ((((*Deflate_state)(unsafe.Pointer(s)).Fstatic_len + Ulg(3)) + Ulg(7)) >> 3)
 18894  
 18895  		if static_lenb <= opt_lenb {
 18896  			opt_lenb = static_lenb
 18897  		}
 18898  
 18899  	} else {
 18900  
 18901  		opt_lenb = libc.AssignUint32(&static_lenb, (stored_len + Ulg(5))) // force a stored block
 18902  	}
 18903  
 18904  	if ((stored_len + Ulg(4)) <= opt_lenb) && (buf != uintptr(0)) {
 18905  		// 4: two words for the lengths
 18906  		// The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
 18907  		// Otherwise we can't have processed more than WSIZE input bytes since
 18908  		// the last block flush, because compression would have been
 18909  		// successful. If LIT_BUFSIZE <= WSIZE, it is never too late to
 18910  		// transform a block into a stored block.
 18911  		X_tr_stored_block(tls, s, buf, stored_len, last)
 18912  
 18913  	} else if ((*Deflate_state)(unsafe.Pointer(s)).Fstrategy == Z_FIXED) || (static_lenb == opt_lenb) {
 18914  		{
 18915  			var len int32 = 3
 18916  			if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18917  				var val int32 = ((int32(STATIC_TREES) << 1) + last)
 18918  				*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18919  				{
 18920  					{
 18921  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18922  					}
 18923  					{
 18924  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18925  					}
 18926  
 18927  				}
 18928  				(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18929  				*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18930  			} else {
 18931  				*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((int32(STATIC_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18932  				*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18933  			}
 18934  		}
 18935  
 18936  		compress_block(tls, s, uintptr(uintptr(unsafe.Pointer(&static_ltree))),
 18937  			uintptr(uintptr(unsafe.Pointer(&static_dtree))))
 18938  	} else {
 18939  		{
 18940  			var len int32 = 3
 18941  			if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 18942  				var val int32 = ((int32(DYN_TREES) << 1) + last)
 18943  				*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18944  				{
 18945  					{
 18946  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 18947  					}
 18948  					{
 18949  						*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 18950  					}
 18951  
 18952  				}
 18953  				(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 18954  				*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 18955  			} else {
 18956  				*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush((int32(DYN_TREES) << 1) + last))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 18957  				*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 18958  			}
 18959  		}
 18960  
 18961  		send_all_trees(tls, s, ((*Deflate_state)(unsafe.Pointer(s)).Fl_desc.Fmax_code + 1), ((*Deflate_state)(unsafe.Pointer(s)).Fd_desc.Fmax_code + 1),
 18962  			(max_blindex + 1))
 18963  		compress_block(tls, s, s+148, /* &.dyn_ltree */
 18964  			s+2440 /* &.dyn_dtree */)
 18965  	}
 18966  
 18967  	// The above check is made mod 2^32, for files larger than 512 MB
 18968  	// and uLong implemented on 32 bits.
 18969  	init_block(tls, s)
 18970  
 18971  	if last != 0 {
 18972  		bi_windup(tls, s)
 18973  	}
 18974  
 18975  }
 18976  
 18977  // ===========================================================================
 18978  // Save the match info and tally the frequency counts. Return true if
 18979  // the current block must be flushed.
 18980  func X_tr_tally(tls *libc.TLS, s uintptr, dist uint32, lc uint32) int32 { /* trees.c:1014:19: */
 18981  	*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr((*Deflate_state)(unsafe.Pointer(s)).Flast_lit)*2)) = Ush(dist)
 18982  	*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Flast_lit, 1)))) = Uch(lc)
 18983  	if dist == uint32(0) {
 18984  		// lc is the unmatched char
 18985  		*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(lc)*4 /* &.fc */))++
 18986  	} else {
 18987  		(*Deflate_state)(unsafe.Pointer(s)).Fmatches++
 18988  		// Here, lc is the match length - MIN_MATCH
 18989  		dist-- // dist = match distance - 1
 18990  
 18991  		*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(((int32(X_length_code[lc])+LITERALS)+1))*4 /* &.fc */))++
 18992  		*(*Ush)(unsafe.Pointer((s + 2440 /* &.dyn_dtree */) + uintptr((func() int32 {
 18993  			if (dist) < uint32(256) {
 18994  				return int32(X_dist_code[dist])
 18995  			}
 18996  			return int32(X_dist_code[(uint32(256) + ((dist) >> 7))])
 18997  		}()))*4 /* &.fc */))++
 18998  	}
 18999  
 19000  	return (libc.Bool32((*Deflate_state)(unsafe.Pointer(s)).Flast_lit == ((*Deflate_state)(unsafe.Pointer(s)).Flit_bufsize - UInt(1))))
 19001  	// We avoid equality with lit_bufsize because of wraparound at 64K
 19002  	// on 16 bit machines and because stored blocks are restricted to
 19003  	// 64K-1 bytes.
 19004  }
 19005  
 19006  // ===========================================================================
 19007  // Send the block data compressed using the given Huffman trees
 19008  func compress_block(tls *libc.TLS, s uintptr, ltree uintptr, dtree uintptr) { /* trees.c:1064:12: */
 19009  	var dist uint32           // distance of matched string
 19010  	var lc int32              // match length or unmatched char (if dist == 0)
 19011  	var lx uint32 = uint32(0) // running index in l_buf
 19012  	var code uint32           // the code to send
 19013  	var extra int32           // number of extra bits to send
 19014  
 19015  	if (*Deflate_state)(unsafe.Pointer(s)).Flast_lit != UInt(0) {
 19016  		for ok := true; ok; ok = (lx < (*Deflate_state)(unsafe.Pointer(s)).Flast_lit) {
 19017  			dist = uint32(*(*Ushf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fd_buf + uintptr(lx)*2)))
 19018  			lc = int32(*(*Uchf)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fl_buf + uintptr(libc.PostIncUint32(&lx, 1)))))
 19019  			if dist == uint32(0) {
 19020  				{
 19021  					var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 + 2 /* &.dl */)))
 19022  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 19023  						var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */)))
 19024  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19025  						{
 19026  							{
 19027  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19028  							}
 19029  							{
 19030  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19031  							}
 19032  
 19033  						}
 19034  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 19035  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 19036  					} else {
 19037  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(lc)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19038  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 19039  					}
 19040  				}
 19041  				// send a literal byte
 19042  
 19043  			} else {
 19044  				// Here, lc is the match length - MIN_MATCH
 19045  				code = uint32(X_length_code[lc])
 19046  				{
 19047  					var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 + 2 /* &.dl */)))
 19048  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 19049  						var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */)))
 19050  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19051  						{
 19052  							{
 19053  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19054  							}
 19055  							{
 19056  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19057  							}
 19058  
 19059  						}
 19060  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 19061  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 19062  					} else {
 19063  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + uintptr(((code+uint32(LITERALS))+uint32(1)))*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19064  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 19065  					}
 19066  				}
 19067  				// send the length code
 19068  				extra = extra_lbits[code]
 19069  				if extra != 0 {
 19070  					lc = lc - (base_length[code])
 19071  					{
 19072  						var len int32 = extra
 19073  						if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 19074  							var val int32 = lc
 19075  							*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19076  							{
 19077  								{
 19078  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19079  								}
 19080  								{
 19081  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19082  								}
 19083  
 19084  							}
 19085  							(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 19086  							*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 19087  						} else {
 19088  							*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(lc))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19089  							*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 19090  						}
 19091  					}
 19092  					// send the extra length bits
 19093  				}
 19094  				dist-- // dist is now the match distance - 1
 19095  				code = func() uint32 {
 19096  					if (dist) < uint32(256) {
 19097  						return uint32(X_dist_code[dist])
 19098  					}
 19099  					return uint32(X_dist_code[(uint32(256) + ((dist) >> 7))])
 19100  				}()
 19101  
 19102  				{
 19103  					var len int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 + 2 /* &.dl */)))
 19104  					if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 19105  						var val int32 = int32(*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */)))
 19106  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19107  						{
 19108  							{
 19109  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19110  							}
 19111  							{
 19112  								*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19113  							}
 19114  
 19115  						}
 19116  						(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 19117  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 19118  					} else {
 19119  						*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(dtree + uintptr(code)*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19120  						*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 19121  					}
 19122  				}
 19123  				// send the distance code
 19124  				extra = extra_dbits[code]
 19125  				if extra != 0 {
 19126  					dist = dist - (uint32(base_dist[code]))
 19127  					{
 19128  						var len int32 = extra
 19129  						if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 19130  							var val int32 = int32(dist)
 19131  							*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19132  							{
 19133  								{
 19134  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19135  								}
 19136  								{
 19137  									*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19138  								}
 19139  
 19140  							}
 19141  							(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 19142  							*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 19143  						} else {
 19144  							*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((Ush(dist))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19145  							*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 19146  						}
 19147  					}
 19148  					// send the extra distance bits
 19149  				}
 19150  			} // literal or match pair ?
 19151  
 19152  			// Check that the overlay between pending_buf and d_buf+l_buf is ok:
 19153  
 19154  		}
 19155  	}
 19156  
 19157  	{
 19158  		var len int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 + 2 /* &.dl */)))
 19159  		if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > (Buf_size - len) {
 19160  			var val int32 = int32(*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */)))
 19161  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32(Ush(val)) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19162  			{
 19163  				{
 19164  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19165  				}
 19166  				{
 19167  					*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19168  				}
 19169  
 19170  			}
 19171  			(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = (Ush(int32(Ush(val)) >> (Buf_size - (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid)))
 19172  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len - Buf_size)
 19173  		} else {
 19174  			*(*Ush)(unsafe.Pointer(s + 5816 /* &.bi_buf */)) |= Ush((int32((*(*Ush)(unsafe.Pointer(ltree + 256*4 /* &.fc */)))) << (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid))
 19175  			*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) += (len)
 19176  		}
 19177  	}
 19178  
 19179  }
 19180  
 19181  // ===========================================================================
 19182  // Check if the data type is TEXT or BINARY, using the following algorithm:
 19183  // - TEXT if the two conditions below are satisfied:
 19184  //    a) There are no non-portable control characters belonging to the
 19185  //       "black list" (0..6, 14..25, 28..31).
 19186  //    b) There is at least one printable character belonging to the
 19187  //       "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255).
 19188  // - BINARY otherwise.
 19189  // - The following partially-portable control characters form a
 19190  //   "gray list" that is ignored in this detection algorithm:
 19191  //   (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}).
 19192  // IN assertion: the fields Freq of dyn_ltree are set.
 19193  func detect_data_type(tls *libc.TLS, s uintptr) int32 { /* trees.c:1124:11: */
 19194  	// black_mask is the bit mask of black-listed bytes
 19195  	// set bits 0..6, 14..25, and 28..31
 19196  	// 0xf3ffc07f = binary 11110011111111111100000001111111
 19197  	var black_mask uint32 = 0xf3ffc07f
 19198  	var n int32
 19199  
 19200  	// Check for non-textual ("black-listed") bytes.
 19201  	n = 0
 19202  __1:
 19203  	if !(n <= 31) {
 19204  		goto __3
 19205  	}
 19206  	if ((black_mask & uint32(1)) != 0) && (int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0) {
 19207  		return Z_BINARY
 19208  	}
 19209  	goto __2
 19210  __2:
 19211  	n++
 19212  	black_mask >>= 1
 19213  	goto __1
 19214  	goto __3
 19215  __3:
 19216  	;
 19217  
 19218  	// Check for textual ("white-listed") bytes.
 19219  	if ((int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 9*4 /* &.fc */))) != 0) || (int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 10*4 /* &.fc */))) != 0)) ||
 19220  		(int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + 13*4 /* &.fc */))) != 0) {
 19221  		return Z_TEXT
 19222  	}
 19223  	for n = 32; n < LITERALS; n++ {
 19224  		if int32(*(*Ush)(unsafe.Pointer((s + 148 /* &.dyn_ltree */) + uintptr(n)*4 /* &.fc */))) != 0 {
 19225  			return Z_TEXT
 19226  		}
 19227  	}
 19228  
 19229  	// There are no "black-listed" or "white-listed" bytes:
 19230  	// this stream either is empty or has tolerated ("gray-listed") bytes only.
 19231  	return Z_BINARY
 19232  }
 19233  
 19234  // ===========================================================================
 19235  // Reverse the first len bits of a code, using straightforward code (a faster
 19236  // method would use a table)
 19237  // IN assertion: 1 <= len <= 15
 19238  func bi_reverse(tls *libc.TLS, code uint32, len int32) uint32 { /* trees.c:1158:16: */
 19239  	var res uint32 = uint32(0)
 19240  	for ok := true; ok; ok = (libc.PreDecInt32(&len, 1) > 0) {
 19241  		res = res | (code & uint32(1))
 19242  		code >>= 1
 19243  		res <<= 1
 19244  	}
 19245  	return (res >> 1)
 19246  }
 19247  
 19248  // ===========================================================================
 19249  // Flush the bit buffer, keeping at most 7 bits in it.
 19250  func bi_flush(tls *libc.TLS, s uintptr) { /* trees.c:1173:12: */
 19251  	if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid == 16 {
 19252  		{
 19253  			{
 19254  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19255  			}
 19256  			{
 19257  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19258  			}
 19259  
 19260  		}
 19261  
 19262  		(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0)
 19263  		(*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0
 19264  	} else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid >= 8 {
 19265  		{
 19266  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)
 19267  		}
 19268  
 19269  		libc.AssignShrPtrUint16(s+5816 /* &.bi_buf */, int(8))
 19270  		*(*int32)(unsafe.Pointer(s + 5820 /* &.bi_valid */)) -= (8)
 19271  	}
 19272  }
 19273  
 19274  // ===========================================================================
 19275  // Flush the bit buffer and align the output on a byte boundary
 19276  func bi_windup(tls *libc.TLS, s uintptr) { /* trees.c:1190:12: */
 19277  	if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 8 {
 19278  		{
 19279  			{
 19280  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch((int32((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) & 0xff))
 19281  			}
 19282  			{
 19283  				*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = (Uch(int32(((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)) >> 8))
 19284  			}
 19285  
 19286  		}
 19287  
 19288  	} else if (*Deflate_state)(unsafe.Pointer(s)).Fbi_valid > 0 {
 19289  		{
 19290  			*(*Bytef)(unsafe.Pointer((*Deflate_state)(unsafe.Pointer(s)).Fpending_buf + uintptr(libc.PostIncUint32(&(*Deflate_state)(unsafe.Pointer(s)).Fpending, 1)))) = Byte((*Deflate_state)(unsafe.Pointer(s)).Fbi_buf)
 19291  		}
 19292  
 19293  	}
 19294  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_buf = Ush(0)
 19295  	(*Deflate_state)(unsafe.Pointer(s)).Fbi_valid = 0
 19296  }
 19297  
 19298  // ===========================================================================
 19299  //      Decompresses the source buffer into the destination buffer.  *sourceLen is
 19300  //    the byte length of the source buffer. Upon entry, *destLen is the total size
 19301  //    of the destination buffer, which must be large enough to hold the entire
 19302  //    uncompressed data. (The size of the uncompressed data must have been saved
 19303  //    previously by the compressor and transmitted to the decompressor by some
 19304  //    mechanism outside the scope of this compression library.) Upon exit,
 19305  //    *destLen is the size of the decompressed data and *sourceLen is the number
 19306  //    of source bytes consumed. Upon return, source + *sourceLen points to the
 19307  //    first unused input byte.
 19308  //
 19309  //      uncompress returns Z_OK if success, Z_MEM_ERROR if there was not enough
 19310  //    memory, Z_BUF_ERROR if there was not enough room in the output buffer, or
 19311  //    Z_DATA_ERROR if the input data was corrupted, including if the input data is
 19312  //    an incomplete zlib stream.
 19313  func Xuncompress2(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen uintptr) int32 { /* uncompr.c:27:13: */
 19314  	bp := tls.Alloc(60)
 19315  	defer tls.Free(60)
 19316  
 19317  	// var stream Z_stream at bp+4, 56
 19318  
 19319  	var err int32
 19320  	var max UInt = libc.Uint32(libc.Uint32FromInt32(-1))
 19321  	var len ULong
 19322  	var left ULong
 19323  	// var buf [1]Byte at bp, 1
 19324  	// for detection of incomplete stream when *destLen == 0
 19325  
 19326  	len = *(*ULong)(unsafe.Pointer(sourceLen))
 19327  	if *(*ULongf)(unsafe.Pointer(destLen)) != 0 {
 19328  		left = *(*ULongf)(unsafe.Pointer(destLen))
 19329  		*(*ULongf)(unsafe.Pointer(destLen)) = ULongf(0)
 19330  	} else {
 19331  		left = ULong(1)
 19332  		dest = bp /* &buf[0] */
 19333  	}
 19334  
 19335  	(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fnext_in = source
 19336  	(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_in = UInt(0)
 19337  	(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fzalloc = uintptr(0)
 19338  	(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fzfree = uintptr(0)
 19339  	(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fopaque = uintptr(0)
 19340  
 19341  	err = XinflateInit_(tls, bp+4 /* &stream */, ts /* "1.2.11" */, int32(unsafe.Sizeof(Z_stream{})))
 19342  	if err != Z_OK {
 19343  		return err
 19344  	}
 19345  
 19346  	(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Fnext_out = dest
 19347  	(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_out = UInt(0)
 19348  
 19349  	for ok := true; ok; ok = (err == Z_OK) {
 19350  		if (*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_out == UInt(0) {
 19351  			(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_out = func() uint32 {
 19352  				if left > ULong(max) {
 19353  					return max
 19354  				}
 19355  				return UInt(left)
 19356  			}()
 19357  			left = left - (ULong((*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_out))
 19358  		}
 19359  		if (*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_in == UInt(0) {
 19360  			(*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_in = func() uint32 {
 19361  				if len > ULong(max) {
 19362  					return max
 19363  				}
 19364  				return UInt(len)
 19365  			}()
 19366  			len = len - (ULong((*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Favail_in))
 19367  		}
 19368  		err = Xinflate(tls, bp+4 /* &stream */, Z_NO_FLUSH)
 19369  	}
 19370  
 19371  	*(*ULong)(unsafe.Pointer(sourceLen)) -= (len + ULong((*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_in))
 19372  	if dest != bp /* buf */ {
 19373  		*(*ULongf)(unsafe.Pointer(destLen)) = (*Z_stream)(unsafe.Pointer(bp + 4 /* &stream */)).Ftotal_out
 19374  	} else if ((*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Ftotal_out != 0) && (err == (-5)) {
 19375  		left = ULong(1)
 19376  	}
 19377  
 19378  	XinflateEnd(tls, bp+4 /* &stream */)
 19379  	if err == Z_STREAM_END {
 19380  		return Z_OK
 19381  	}
 19382  	if err == Z_NEED_DICT {
 19383  		return -3
 19384  	}
 19385  	if (err == (-5)) && ((left + ULong((*Z_stream)(unsafe.Pointer(bp+4 /* &stream */)).Favail_out)) != 0) {
 19386  		return -3
 19387  	}
 19388  	return err
 19389  }
 19390  
 19391  func Xuncompress(tls *libc.TLS, dest uintptr, destLen uintptr, source uintptr, sourceLen ULong) int32 { /* uncompr.c:86:13: */
 19392  	bp := tls.Alloc(4)
 19393  	defer tls.Free(4)
 19394  	*(*ULong)(unsafe.Pointer(bp)) = sourceLen
 19395  
 19396  	return Xuncompress2(tls, dest, destLen, source, bp /* &sourceLen */)
 19397  }
 19398  
 19399  // These macros are used by bits/stdio.h and internal headers.
 19400  
 19401  // Many more flag bits are defined internally.
 19402  
 19403  // The type of the second argument to `fgetpos' and `fsetpos'.
 19404  type Fpos_t1 = X__fpos64_t /* stdio.h:86:20 */
 19405  
 19406  // GT_OFF(x), where x is an unsigned value, is true if x > maximum z_off64_t
 19407  //    value -- needed when comparing unsigned to z_off64_t, which is signed
 19408  //    (possible z_off64_t types off_t, off64_t, and long are all signed)
 19409  
 19410  var Xz_errmsg = [10]uintptr{
 19411  	uintptr(ts + 876 /* "need dictionary" */),     // Z_NEED_DICT       2
 19412  	uintptr(ts + 892 /* "stream end" */),          // Z_STREAM_END      1
 19413  	uintptr(ts + 101 /* "" */),                    // Z_OK              0
 19414  	uintptr(ts + 903 /* "file error" */),          // Z_ERRNO         (-1)
 19415  	uintptr(ts + 914 /* "stream error" */),        // Z_STREAM_ERROR  (-2)
 19416  	uintptr(ts + 927 /* "data error" */),          // Z_DATA_ERROR    (-3)
 19417  	uintptr(ts + 938 /* "insufficient mem..." */), // Z_MEM_ERROR     (-4)
 19418  	uintptr(ts + 958 /* "buffer error" */),        // Z_BUF_ERROR     (-5)
 19419  	uintptr(ts + 971 /* "incompatible ver..." */), // Z_VERSION_ERROR (-6)
 19420  	uintptr(ts + 101 /* "" */),
 19421  } /* zutil.c:13:14 */
 19422  
 19423  func XzlibVersion(tls *libc.TLS) uintptr { /* zutil.c:27:12: */
 19424  	return ts /* "1.2.11" */
 19425  }
 19426  
 19427  func XzlibCompileFlags(tls *libc.TLS) ULong { /* zutil.c:32:15: */
 19428  	var flags ULong
 19429  
 19430  	flags = ULong(0)
 19431  	switch int32(unsafe.Sizeof(UInt(0))) {
 19432  	case 2:
 19433  		break
 19434  	case 4:
 19435  		flags = flags + (ULong(1))
 19436  		break
 19437  	case 8:
 19438  		flags = flags + (ULong(2))
 19439  		break
 19440  	default:
 19441  		flags = flags + (ULong(3))
 19442  	}
 19443  	switch int32(unsafe.Sizeof(ULong(0))) {
 19444  	case 2:
 19445  		break
 19446  	case 4:
 19447  		flags = flags + (ULong(int32(1) << 2))
 19448  		break
 19449  	case 8:
 19450  		flags = flags + (ULong(int32(2) << 2))
 19451  		break
 19452  	default:
 19453  		flags = flags + (ULong(int32(3) << 2))
 19454  	}
 19455  	switch int32(unsafe.Sizeof(Voidpf(0))) {
 19456  	case 2:
 19457  		break
 19458  	case 4:
 19459  		flags = flags + (ULong(int32(1) << 4))
 19460  		break
 19461  	case 8:
 19462  		flags = flags + (ULong(int32(2) << 4))
 19463  		break
 19464  	default:
 19465  		flags = flags + (ULong(int32(3) << 4))
 19466  	}
 19467  	switch int32(unsafe.Sizeof(Off_t2(0))) {
 19468  	case 2:
 19469  		break
 19470  	case 4:
 19471  		flags = flags + (ULong(int32(1) << 6))
 19472  		break
 19473  	case 8:
 19474  		flags = flags + (ULong(int32(2) << 6))
 19475  		break
 19476  	default:
 19477  		flags = flags + (ULong(int32(3) << 6))
 19478  	}
 19479  	return flags
 19480  }
 19481  
 19482  // exported to allow conversion of error code to string for compress() and
 19483  // uncompress()
 19484  func XzError(tls *libc.TLS, err int32) uintptr { /* zutil.c:133:12: */
 19485  	return Xz_errmsg[(Z_NEED_DICT - (err))]
 19486  }
 19487  
 19488  func Xzcalloc(tls *libc.TLS, opaque Voidpf, items uint32, size uint32) Voidpf { /* zutil.c:305:22: */
 19489  	_ = opaque
 19490  	if uint32(unsafe.Sizeof(UInt(0))) > uint32(2) {
 19491  		return libc.Xmalloc(tls, (items * size))
 19492  	}
 19493  	return libc.Xcalloc(tls, items, size)
 19494  }
 19495  
 19496  func Xzcfree(tls *libc.TLS, opaque Voidpf, ptr Voidpf) { /* zutil.c:315:20: */
 19497  	_ = opaque
 19498  	libc.Xfree(tls, ptr)
 19499  }
 19500  
 19501  func init() {
 19502  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 8 /* .func */)) = deflate_stored // deflate.c:136:29:
 19503  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 20 /* .func */)) = deflate_fast  // deflate.c:137:29:
 19504  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 32 /* .func */)) = deflate_fast  // deflate.c:138:29:
 19505  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 44 /* .func */)) = deflate_fast  // deflate.c:139:29:
 19506  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 56 /* .func */)) = deflate_slow  // deflate.c:141:29:
 19507  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 68 /* .func */)) = deflate_slow  // deflate.c:142:29:
 19508  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 80 /* .func */)) = deflate_slow  // deflate.c:143:29:
 19509  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 92 /* .func */)) = deflate_slow  // deflate.c:144:29:
 19510  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 104 /* .func */)) = deflate_slow // deflate.c:145:30:
 19511  	*(*func(*libc.TLS, uintptr, int32) Block_state)(unsafe.Pointer(uintptr(unsafe.Pointer(&configuration_table)) + 116 /* .func */)) = deflate_slow // deflate.c:146:30:
 19512  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_bl_desc)) + 4 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_blbits))            // trees.c:132:22:
 19513  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_dtree))            // trees.c:129:2:
 19514  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_d_desc)) + 4 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_dbits))              // trees.c:129:16:
 19515  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 0 /* .static_tree */)) = uintptr(unsafe.Pointer(&static_ltree))            // trees.c:126:2:
 19516  	*(*uintptr)(unsafe.Pointer(uintptr(unsafe.Pointer(&static_l_desc)) + 4 /* .extra_bits */)) = uintptr(unsafe.Pointer(&extra_lbits))              // trees.c:126:16:
 19517  }
 19518  
 19519  var ts1 = "1.2.11\x00 deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler \x00%s\x00<fd:%d>\x00out of memory\x00\x00%s%s%s\x00: \x00unexpected end of file\x00internal error: inflate stream corrupt\x00compressed data error\x00request does not fit in an int\x00request does not fit in a size_t\x00out of room to push characters\x00internal error: deflate stream corrupt\x00requested length does not fit in int\x00invalid block type\x00invalid stored block lengths\x00too many length or distance symbols\x00invalid code lengths set\x00invalid bit length repeat\x00invalid code -- missing end-of-block\x00invalid literal/lengths set\x00invalid distances set\x00invalid literal/length code\x00invalid distance code\x00invalid distance too far back\x00incorrect header check\x00unknown compression method\x00invalid window size\x00unknown header flags set\x00header crc mismatch\x00incorrect data check\x00incorrect length check\x00 inflate 1.2.11 Copyright 1995-2017 Mark Adler \x00need dictionary\x00stream end\x00file error\x00stream error\x00data error\x00insufficient memory\x00buffer error\x00incompatible version\x00"
 19520  var ts = (*reflect.StringHeader)(unsafe.Pointer(&ts1)).Data