archiver.obj      deflate-.
	  : deflateInit, deflateInit2, deflateReset, deflate,
	deflateEnd   deflate-,    
	  zlib.

: deflate_unpack
   : void* __stdcall deflate_unpack(const void* data, unsigned* pLength);
:
	data -    
	pLength -    :
		  *pLength      data,
		  *pLength    
 :
	   , NULL   
	   ,    
		 68.13
    :
;  esi =   , ecx =   
	push	ecx	;  *pLength   
	push	esp	;       pLength
	push	esi	;   
	call	[deflate_unpack]
	pop	ecx	;     *pLength
			;     deflate_unpack
;  eax =    , ecx =  

: deflate_unpack2
   : void* __stdcall deflate_unpack2(const void* get_next_chunk, void* parameter, unsigned* pUnpackedLength);
	void* __stdcall get_next_chunk(void* parameter, unsigned* pLength);
:
	get_next_chunk -   ,    
		   ;  
		,   NULL ( 
		        ,
		      NULL, 
		   )
	parameter - ,     
		     get_next_chunk
		( callback-    ,  
		   ,  )
	pUnpackedLength -   ,   
		  
 :
	   , NULL   
	   ,    
		 68.13
    :
	push	eax	;      *pUnpackedLength
			;   ,    
			;    push <>
	push	esp	;      pUnpackedLength
	push	esi	; - 
	push	deflate_callback
	call	[deflate_unpack2]
	pop	ecx	;  UnpackedLength
;     , eax =    , ecx = 

...

;        
deflate_callback:
;   ,     :
;	mov	esi, [esp+4]	; esi = 
;  - 
;   
	mov	ecx, [esp+8]	;  [ecx]   
	mov	[ecx], length
	mov	eax, buffer
	ret	8

   :
	1)   deflateInit  deflateInit2.
	2)        64 .
		    64        deflate.
		    deflate      16 .
		. .     16 ,        deflate.
		    64 ,          deflate.
		    64 ,          deflate.
	3)   deflateEnd   .
:
	      .
	 deflate      Z_NO_FLUSH.
	(       Z_FINISH)
