<?xml version="1.0"?>
<def format="2">
  <!-- Reference to zlib documention https://www.zlib.net/manual.html -->
  <!-- Data structures and types -->
  <podtype name="alloc_func"/>
  <podtype name="Byte" sign="u" size="1"/>
  <podtype name="Bytef" sign="u" size="1"/>
  <podtype name="charf" sign="s" size="1"/>
  <podtype name="free_func"/>
  <podtype name="gzFile"/>
  <podtype name="gzFile_s"/>
  <podtype name="gz_header"/>
  <podtype name="gz_headerp"/>
  <podtype name="gz_header_s"/>
  <podtype name="intf" sign="s"/>
  <podtype name="uInt" sign="u"/>
  <podtype name="uIntf"/>
  <podtype name="uLong" sign="u"/>
  <podtype name="uLongf" sign="u"/>
  <podtype name="voidp"/>
  <podtype name="voidpc"/>
  <podtype name="voidpf"/>
  <podtype name="z_crc_t" sign="u"/>
  <podtype name="z_off_t" sign="s"/>
  <podtype name="z_off64_t" sign="s" size="8"/>
  <podtype name="z_stream"/>
  <podtype name="z_streamp"/>
  <podtype name="z_stream_s"/>
  <!-- Defines -->
  <define name="z_const" value="const"/>
  <define name="z_longlong" value="long long"/>
  <define name="z_size_t" value="size_t"/>
  <define name="Z_NO_FLUSH" value="0"/>
  <define name="Z_PARTIAL_FLUSH" value="1"/>
  <define name="Z_SYNC_FLUSH" value="2"/>
  <define name="Z_FULL_FLUSH" value="3"/>
  <define name="Z_FINISH" value="4"/>
  <define name="Z_BLOCK" value="5"/>
  <define name="Z_TREES" value="6"/>
  <define name="Z_OK" value="0"/>
  <define name="Z_STREAM_END" value="1"/>
  <define name="Z_NEED_DICT" value="2"/>
  <define name="Z_ERRNO" value="(-1)"/>
  <define name="Z_STREAM_ERROR" value="(-2)"/>
  <define name="Z_DATA_ERROR" value="(-3)"/>
  <define name="Z_MEM_ERROR" value="(-4)"/>
  <define name="Z_BUF_ERROR" value="(-5)"/>
  <define name="Z_VERSION_ERROR" value="(-6)"/>
  <define name="Z_NO_COMPRESSION" value="0"/>
  <define name="Z_BEST_SPEED" value="1"/>
  <define name="Z_BEST_COMPRESSION" value="9"/>
  <define name="Z_DEFAULT_COMPRESSION" value="(-1)"/>
  <define name="Z_FILTERED" value="1"/>
  <define name="Z_HUFFMAN_ONLY" value="2"/>
  <define name="Z_RLE" value="3"/>
  <define name="Z_FIXED" value="4"/>
  <define name="Z_DEFAULT_STRATEGY" value="0"/>
  <define name="Z_BINARY" value="0"/>
  <define name="Z_TEXT" value="1"/>
  <define name="Z_ASCII" value="Z_TEXT"/>
  <define name="Z_UNKNOWN" value="2"/>
  <define name="Z_DEFLATED" value="8"/>
  <define name="Z_NULL" value="0"/>
  <define name="zlib_version" value="zlibVersion()"/>
  <!-- Functions -->
  <function name="zlibVersion">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="const char*"/>
    <noreturn>false</noreturn>
  </function>
  <function name="deflateInit">
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflate">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateEnd">
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateInit">
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
  </function>
  <function name="inflate">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateEnd">
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <!-- Advanced functions -->
  <function name="deflateInit2">
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="5">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="6">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateSetDictionary">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="deflateGetDictionary">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
    </arg>
    <arg nr="3">
      <not-bool/>
    </arg>
  </function>
  <function name="deflateCopy">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateReset">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateParams">
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateTune">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="5">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateBound">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="deflatePending">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
    </arg>
    <arg nr="3">
      <not-bool/>
    </arg>
  </function>
  <function name="deflatePrime">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>:16</valid>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateSetHeader">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateInit2">
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateSetDictionary">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="inflateGetDictionary">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
    </arg>
    <arg nr="3">
      <not-bool/>
    </arg>
  </function>
  <function name="inflateSync">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateCopy">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateReset">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateReset2">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflatePrime">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>:16</valid>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateMark">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="long"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateGetHeader">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
    </arg>
  </function>
  <function name="inflateBackInit">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="2"/>
    </arg>
  </function>
  <function name="inflateBack">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="5">
      <not-bool/>
    </arg>
  </function>
  <function name="inflateBackEnd">
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <!-- Utility functions -->
  <function name="compress">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="4"/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="compress2">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="4"/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="5">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="compressBound">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="uncompress">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="4"/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="uncompress2">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="4"/>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <!-- gzip file access function -->
  <memory>
    <alloc init="true">gzopen</alloc>
    <alloc init="true">gzopen64</alloc>
    <alloc init="true">gzdopen</alloc>
    <alloc init="true">gzopen_w</alloc>
    <dealloc>gzclose</dealloc>
    <dealloc>gzclose_r</dealloc>
    <dealloc>gzclose_w</dealloc>
  </memory>
  <function name="gzopen,gzopen64">
    <use-retval/>
    <returnValue type="gzFile"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <strz/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <strz/>
    </arg>
  </function>
  <function name="gzdopen">
    <use-retval/>
    <returnValue type="gzFile"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <strz/>
    </arg>
  </function>
  <function name="gzbuffer">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="gzsetparams">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzread">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="gzfread">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_size_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <minsize type="mul" arg="2" arg2="3"/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzwrite">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="gzwrite">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_size_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <minsize type="mul" arg="2" arg2="3"/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="4">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzprintf">
    <formatstr/>
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <formatstr/>
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <strz/>
    </arg>
  </function>
  <function name="gzputs">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <strz/>
    </arg>
  </function>
  <function name="gzgets">
    <leak-ignore/>
    <returnValue type="char*"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzputc">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>0:255</valid>
    </arg>
  </function>
  <function name="gzgetc">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzungetc">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:255</valid>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzflush">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <function name="gzseek">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_off_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzseek64">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_off64_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzrewind">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gztell">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_off_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gztell64">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_off64_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzoffset">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_off_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzoffset64">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_off64_t"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzeof">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzdirect">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzclose,gzclose_r,gzclose_w">
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzerror">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="const char*"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
    </arg>
  </function>
  <function name="gzclearerr">
    <leak-ignore/>
    <returnValue type="void"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <!-- Checksum functions -->
  <function name="adler32_z">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="adler32_z">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="adler32_combine,adler32_combine64">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="crc32">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="crc32_z">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <minsize type="argvalue" arg="3"/>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
  </function>
  <function name="crc32_combine,crc32_combine64">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="uLong"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-uninit/>
      <valid>0:</valid>
    </arg>
    <arg nr="3">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <!-- Undocumented functions -->
  <function name="zError">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="const char*"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateSyncPoint">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="get_crc_table">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="z_crc_t"/>
    <noreturn>false</noreturn>
  </function>
  <function name="inflateUndermine">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateValidate">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-uninit/>
    </arg>
  </function>
  <function name="inflateCodesUsed">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="unsigned long"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="deflateResetKeep,inflateResetKeep">
    <leak-ignore/>
    <use-retval/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
  </function>
  <function name="gzvprintf">
    <leak-ignore/>
    <returnValue type="int"/>
    <noreturn>false</noreturn>
    <arg nr="1">
      <not-bool/>
      <not-null/>
      <not-uninit/>
    </arg>
    <arg nr="2">
      <not-bool/>
      <not-null/>
      <not-uninit/>
      <strz/>
    </arg>
    <arg nr="3">
      <not-bool/>
    </arg>
  </function>
</def>