	cc -qlanglvl=extended -E -DBITS=16 -DFAST -DBSD  -c encode.c
# 1 "encode.c"

# 1 "./freeze.h"

# 1 "/usr/include/stdio.h"
 
 
















# 1 "/usr/include/standards.h"
 
 
















 





# 32 "/usr/include/standards.h"


# 38 "/usr/include/standards.h"


# 50 "/usr/include/standards.h"











# 19 "/usr/include/stdio.h"

 











 










typedef unsigned long	size_t;




typedef long	fpos_t;


 















 

















typedef struct {
	unsigned char	*_ptr;
	int	_cnt;
	unsigned char	*_base;
	unsigned char   *_bufendp;
	short	_flag;
	short	_file;
	int	_unused[3];
} FILE;






extern FILE	_iob[20];






# 113 "/usr/include/stdio.h"
extern size_t 	fread(void *ptr, size_t size, size_t nmemb, FILE *stream);
extern size_t	fwrite(const void *ptr, size_t size, size_t nmemb,FILE *stream);



# 159 "/usr/include/stdio.h"

extern int 	ferror(FILE *stream);
extern int 	feof(FILE *stream);
extern void 	clearerr(FILE * stream);
extern int 	putchar(int c);
extern int 	getchar(void);
extern int 	putc(int c, FILE *stream);
extern int 	getc(FILE *stream);
extern int	remove(const char *filename);
extern int	rename(const char *old, const char *new);
extern FILE 	*tmpfile(void);
extern char 	*tmpnam(char *s);
extern int 	fclose(FILE *stream);
extern int 	fflush(FILE *stream);
extern FILE	*fopen(const char *filename, const char *mode);
extern FILE 	*freopen(const char *filename, const char *mode, FILE *stream);
extern void 	setbuf(FILE *stream, char *buf);
extern int 	setvbuf(FILE *stream, char *buf, int mode, size_t size);
extern int	fprintf(FILE *stream, const char *format, ...); 
extern int	fscanf(FILE *stream, const char *format, ...);
extern int	printf(const char *format, ...); 
extern int	scanf(const char *format, ...); 
extern int	sprintf(char *s, const char *format, ...); 
extern int	sscanf(const char *s, const char *format, ...); 

# 188 "/usr/include/stdio.h"
extern int	vfprintf();
extern int	vprintf(); 
extern int	vsprintf();

extern int 	fgetc(FILE *stream);
extern char 	*fgets(char *s, int n, FILE *stream);
extern int 	fputc(int c, FILE *stream);
extern int 	fputs(const char *s, FILE *stream);
extern char 	*gets(char *s);
extern int 	puts(const char *s);
extern int	ungetc(int c, FILE *stream);
extern int	fgetpos(FILE *stream, fpos_t *pos);
extern int 	fseek(FILE *stream, long int offset, int whence);
extern int	fsetpos(FILE *stream, const fpos_t *pos);
extern long	ftell(FILE *stream);
extern void	rewind(FILE *stream);
extern void 	perror(const char *s); 

















 








# 1 "/usr/include/sys/types.h"
 
 














 









# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 27 "/usr/include/sys/types.h"
 











 





typedef char *		va_list;




typedef int		ptrdiff_t;




typedef unsigned short	wchar_t;



# 62 "/usr/include/sys/types.h"



typedef	long		time_t;




typedef int		clock_t;



# 77 "/usr/include/sys/types.h"




 


typedef	unsigned char	uchar_t;
typedef	unsigned short	ushort_t;
typedef	unsigned int	uint_t;
typedef unsigned long	ulong_t;

 


typedef	struct { int r[1]; } *	physadr_t;
typedef long		level_t;
typedef	long		daddr_t;	 
typedef	char *		caddr_t;	 
typedef	ulong_t		ino_t;		 
typedef short		cnt_t;
typedef ulong_t		dev_t;		 
typedef	long		chan_t;		 
typedef	long		off_t;		 
typedef	long		paddr_t;
typedef	long		key_t;
typedef long		timer_t;	 
typedef	short		nlink_t;
typedef	ulong_t		mode_t;		 
typedef ulong_t		uid_t;		 
typedef ulong_t		gid_t;		 
typedef	void *		mid_t;		 
typedef	int		pid_t;		 
typedef char		slab_t[12];	 
typedef long            mtyp_t;		 



# 1 "/usr/include/sys/m_types.h"
 




 












typedef struct label_t {		 
	struct label_t *prev;		 
	ulong_t           iar;		 
	ulong_t           stack;		 
	ulong_t           toc;		 
	ulong_t           cr;              
	ulong_t           intpri;		 
	ulong_t           reg[19];	 
} label_t;

typedef long		vmid_t;		 
typedef ulong_t		vmhandle_t;	 

typedef struct vmaddr_t {		 
	vmhandle_t	srval;		 
	caddr_t		offset;		 
} vmaddr_t;

typedef struct adspace_t{		 
	ulong_t		alloc;		 
	vmhandle_t	srval[16];	 
} adspace_t;



# 115 "/usr/include/sys/types.h"


 
 
typedef struct sigset_t	{
	unsigned long losigs;
	unsigned long hisigs;
} sigset_t;






# 131 "/usr/include/sys/types.h"








 


typedef	uchar_t		uchar;
typedef	ushort_t	ushort;
typedef	uint_t		uint;
typedef ulong_t		ulong;

typedef	physadr_t	physadr;

 
typedef	unsigned char	u_char;
typedef	unsigned short	u_short;
typedef	unsigned int	u_int;
typedef	unsigned long	u_long;

typedef	struct	_quad { long val[2]; } quad;
typedef	long	swblk_t;



 
struct sigset	{
	unsigned long losigs;
	unsigned long hisigs;
};

 
struct fsid {
	long	val[2];
};
typedef struct fsid fsid_t;



 



struct fid {
	uint_t	fid_len;
	char	fid_data[(32 - sizeof(fsid_t) - sizeof(uint_t))];
};
typedef struct fid fid_t;

struct fileid {			 
	uint_t	fid_len;
	ino_t	fid_ino;
	uint_t	fid_gen;
	char	fid_x[(32 - sizeof(fsid_t) - sizeof(uint_t)) - (sizeof(ino_t) + 2) - sizeof(uint_t)];
};

 
struct fhandle {
	char x[32];		 
};
struct filehandle {			 
	fsid_t		fh_fsid;		 
	struct fileid	fh_fid;			 
};
typedef struct fhandle fhandle_t;






 
struct unique_id {
       unsigned long word1;
       unsigned long word2;
       unsigned long word3;
       unsigned long word4;
};
typedef struct unique_id unique_id_t;


# 233 "/usr/include/sys/types.h"



# 231 "/usr/include/stdio.h"




# 238 "/usr/include/stdio.h"
extern int 	fileno(FILE *stream);
extern FILE 	*fdopen(int fildes, char *type);










# 256 "/usr/include/stdio.h"
extern int 	getw(FILE *stream);
extern int 	putw(int w, FILE *stream);
extern char 	*tempnam(char*,char*);
extern FILE 	*popen(char *cmd, char *mode);
extern int 	pclose(FILE *ptr);








# 1 "/usr/include/sys/limits.h"
 
 
















# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 19 "/usr/include/sys/limits.h"

 










 






















 







 













 







 












 

 









 













 



# 1 "/usr/include/float.h"
 
 















# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 18 "/usr/include/float.h"

 






















































































 






 










 










 

















 







# 1 "/usr/include/sys/limits.h"
 
 














# 176 "/usr/include/sys/limits.h"
# 161 "/usr/include/float.h"


	extern  unsigned   int SINFINITY;
	extern  unsigned   int _DBLINF[2];
	extern  unsigned   int SQNAN;
	extern  unsigned   int DQNAN[2];
	extern  unsigned   int SSNAN;
	extern  unsigned   int DSNAN[2];










 














typedef	unsigned short fprnd_t;


# 202 "/usr/include/float.h"

fprnd_t fp_read_rnd(void);
fprnd_t fp_swap_rnd(fprnd_t rnd);




 























# 127 "/usr/include/sys/limits.h"
			 

 




# 137 "/usr/include/sys/limits.h"

 





































# 269 "/usr/include/stdio.h"


# 274 "/usr/include/stdio.h"





# 281 "/usr/include/stdio.h"
			 
  			 


			 
			 
			 
			 

 
















# 310 "/usr/include/stdio.h"
extern char	*ctermid(char *);
extern char 	*cuserid(char *);








# 2 "./freeze.h"


# 6 "./freeze.h"

# 9 "./freeze.h"

# 12 "./freeze.h"



# 17 "./freeze.h"


# 22 "./freeze.h"


# 28 "./freeze.h"


# 1 "/usr/include/ctype.h"
 
 
















# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 19 "/usr/include/ctype.h"

 









# 45 "/usr/include/ctype.h"

extern int isalpha(int c);
extern int isalnum(int c);
extern int iscntrl(int c);
extern int isdigit(int c);
extern int isgraph(int c);
extern int isprint(int c);
extern int ispunct(int c);
extern int isspace(int c);
extern int isxdigit(int c);
extern int isupper(int c);
extern int islower(int c);
extern int tolower(int c);
extern int toupper(int c);



















# 1 "/usr/include/NLctype.h"
 


 






















# 1 "/usr/include/NLchar.h"
 
 














 







# 1 "/usr/include/sys/NLchar.h"
 


 
















# 23 "/usr/include/sys/NLchar.h"

# 1 "/usr/include/sys/types.h"
 
 














 







# 236 "/usr/include/sys/types.h"
# 24 "/usr/include/sys/NLchar.h"

# 1 "/usr/include/sys/localedef.h"
 


 














 


 


typedef struct  coldesc  {                      
	short     cd_stroff;                    
	short	  cd_repoff;
	short     cd_cval;
	short	  cd_cuniq;
} coldesc_t;

 


typedef struct collation_table {                 
	short    lc_version;                     
	short	 lc_length;			 
	char     *lc_locale_name;		 
	int      len_collate;
	short    *lc_collate;                    
	int      len_coluniq;
	short    *lc_coluniq;                    
	int      len_coldesc;
	coldesc_t *lc_coldesc;                   
	int	 len_strings;			
	wchar_t  *lc_strings;			 
	int	 high_cvalue;			 
} col_t;

 





typedef struct char_classification_table {       
	short      lc_version; 		 
	short	   lc_length;  		 
	short      lc_code_type; 	 
	short      mb_cur_max;   	 
	short      mb_cur_min;   	 
	short      lc_dsp_width;                  
	char       *lc_locale_name; 	 
	int        len_caseconv;   	 
	wchar_t    *lc_caseconv;   	 
	int	   len_ctype;
	unsigned short *lc_ctype;	 	
} ctype_t;

 



typedef	struct lc_monetary_table {
	short  	lc_version;
	short 	lc_length;		 
	char   	*lc_locale_name;	 
	char 	*int_curr_symbol;	 
	char 	*currency_symbol;	 
	char 	*mon_decimal_point;	 
	char 	*mon_thousands_sep;	 
	char 	*mon_grouping;		 
	char 	*positive_sign;		 
	char 	*negative_sign;		 
	char 	int_frac_digits;	 
	char 	frac_digits;		 
	char 	p_cs_precedes;		 
	char 	p_sep_by_space;		 
	char 	n_cs_precedes;		 
	char 	n_sep_by_space;		 
	char 	p_sign_posn;		 
	char 	n_sign_posn;		 
} mon_t;

 



typedef struct numeric_table {                   
	short	lc_version;
	short	lc_length;		 
	char    *lc_locale_name;	 
	char 	*decimal_point;
	char 	*thousands_sep;
	char	*grouping;
} num_t;

 



typedef struct lc_messages_table {
	short	lc_version;
	short	lc_length;		 
	char    *lc_locale_name;	 
	char 	*messages;		 
	char 	*yes_string;		 
	char 	*no_string;		 
} msg_t;

 



typedef struct lc_time_table {
	short   lc_version;
	short	lc_length;	  
	char    *lc_locale_name;  
	char    *t_fmt;          
	char    *d_fmt;          
	char    *nlldate;        
	char    *d_t_fmt;        
	char    *abday;          
	char    *day;            
	char    *abmon;          
	char    *mon;            
 



	char    *misc;           
	char    *tstrs;          
	char    *tunits;         
 


	char	*year;		 
	char    *am_pm;          
} tim_t;

 




typedef struct wchar_mapping_table {             
	short    lc_version;
	short	 lc_length;			 
	char     *lc_identifier;
} map_t;


 





typedef struct localeinfo_table {           
	char     lc_mag0, lc_mag1;       
	short    lc_version;             
	short    lc_code_type;                 
	short	 lc_length;		 
	col_t    *lc_coltbl;		 
	ctype_t  *lc_chrtbl;		 
	mon_t    *lc_montbl;		 
	num_t    *lc_numtbl;		 
	tim_t    *lc_timtbl;		 
	msg_t    *lc_msgtbl;		 
	map_t    *lc_maptbl;		 
} loc_t;

# 25 "/usr/include/sys/NLchar.h"

extern loc_t *_locp;

 


 

typedef unsigned short NLchar;

extern char
	*NLstrcpy(),
	*NLstrncpy(),
	*NLstrcat(),
	*NLstrncat(),
	*NLstrchr(),
	*NLstrrchr(),
	*NLstrpbrk(),
	*NLstrtok();
extern NLchar
	*NCstrcpy(),
	*NCstrncpy(),
	*NCstrcat(),
	*NCstrncat(),
	*NCstrchr(),
	*NCstrrchr(),
	*NCstrpbrk(),
	*NCstrtok();

 





# 62 "/usr/include/sys/NLchar.h"

 





 

 



 



 



 







 







 

 










# 115 "/usr/include/sys/NLchar.h"

 









 


 




# 137 "/usr/include/sys/NLchar.h"

 








 






extern NLchar *_NCgetbuf();


# 159 "/usr/include/sys/NLchar.h"
extern void free(void *ptr);



# 25 "/usr/include/NLchar.h"
# 27 "/usr/include/NLctype.h"

# 1 "/usr/include/ctype.h"
 
 














# 101 "/usr/include/ctype.h"
# 28 "/usr/include/NLctype.h"


# 32 "/usr/include/NLctype.h"













 






						 

						 

# 61 "/usr/include/NLctype.h"


 



 


extern char _NLflattab[];
extern unsigned _NLflattsize;










 


# 92 "/usr/include/NLctype.h"



 


extern char _NLesctab[][2];
extern unsigned _NLesctsize;
extern unsigned _NLunesctsize;


 

extern struct NLescdata {
	unsigned char *key;
	NLchar value;
} _NLunesctab[];


 


















# 142 "/usr/include/NLctype.h"


# 78 "/usr/include/ctype.h"

# 83 "/usr/include/ctype.h"

extern int isascii(int c);
extern int toascii(int c);


 










 

# 30 "./freeze.h"

# 1 "/usr/include/signal.h"
 

 












# 1 "/usr/include/sys/signal.h"
 
 












                                                                   




# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 20 "/usr/include/sys/signal.h"

 

















# 46 "/usr/include/sys/signal.h"
extern void (*signal(int sig, void (*func)(int)))(int);



# 52 "/usr/include/sys/signal.h"
extern int raise(int sig);


typedef volatile int sig_atomic_t;  
 



 










































 








 











# 130 "/usr/include/sys/signal.h"

 








 









# 1 "/usr/include/sys/types.h"
 
 














 







# 236 "/usr/include/sys/types.h"
# 150 "/usr/include/sys/signal.h"
 


struct sigaction {

# 159 "/usr/include/sys/signal.h"
	void	(*sa_handler)(int);	 

	sigset_t sa_mask;		 
	int	sa_flags;		 
};

 






# 183 "/usr/include/sys/signal.h"

 



 
extern int kill(pid_t pid, int sig); 
extern int sigaction(int sig, struct sigaction *act, struct sigaction *oact); 
extern int sigprocmask(int how, sigset_t *set, sigset_t *oset);
extern int sigsuspend(sigset_t *set);  

 
extern int sigemptyset(sigset_t *set);
extern int sigfillset(sigset_t *set);
extern int sigaddset(sigset_t *set, int signo);
extern int sigdelset(sigset_t *set, int signo);
extern int sigismember(sigset_t *set, int signo);
extern int sigpending(sigset_t *set);





# 1 "/usr/include/sys/context.h"
 

 














# 1 "/usr/include/sys/m_param.h"
 



 
























 
 









# 18 "/usr/include/sys/context.h"

# 1 "/usr/include/sys/mstsave.h"
 



 












 










# 1 "/usr/include/sys/m_param.h"
 

# 41 "/usr/include/sys/m_param.h"
# 29 "/usr/include/sys/mstsave.h"

struct mstsave	{

	struct mstsave	*prev;		 
	label_t		*kjmpbuf;	 
	char		*stackfix;	 
	char		intpri; 	 
	char		backt;		 
	char		rsvd[2];	 
	pid_t		curid;		 

	int		excp_type;	 
	ulong_t		iar;		 
	ulong_t		msr;		 
	ulong_t		cr;		 
	ulong_t		lr;		 
	ulong_t		ctr;		 
	ulong_t		xer;		 
	ulong_t		mq;		 
	ulong_t		tid;		 
	ulong_t		fpscr;		 
	char		fpeu;		 

	char            pad[3];          
	ulong_t         except[5];	 
	void		*bus;		 

	ulong_t         o_iar;           
        ulong_t         o_toc;           
	ulong_t         o_arg1;          

	ulong_t		excbranch;	 



	ulong_t		cachealign[9];	 

	adspace_t	as;		 
	ulong_t		gpr[32];	 
	double		fpr[32];	 
};


 




# 19 "/usr/include/sys/context.h"

 




 






 

struct	jmpbuf	{
	struct	mstsave	jmp_context;
};


# 206 "/usr/include/sys/signal.h"
 
 
 
 

# 213 "/usr/include/sys/signal.h"
 


extern int sigstack();
 


struct	sigstack {
	char	*ss_sp;			 
	int	ss_onstack;		 
};
 



 









 






struct	sigcontext {
	int		sc_onstack;	 
	sigset_t	sc_mask;	 
	int		u_error;	 
	struct	jmpbuf	sc_jmpbuf;	 
};
 


       


 
















































 


struct	sigvec {

# 315 "/usr/include/sys/signal.h"
	void    (*sv_handler)(int);	 

	int     sv_mask;         
	int     sv_flags;
};                           

 






















 










# 16 "/usr/include/signal.h"
# 31 "./freeze.h"



# 1 "/usr/include/sys/types.h"
 
 














 







# 236 "/usr/include/sys/types.h"
# 34 "./freeze.h"

# 1 "/usr/include/sys/stat.h"
 




 













# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 20 "/usr/include/sys/stat.h"

# 1 "/usr/include/sys/types.h"
 
 














 







# 236 "/usr/include/sys/types.h"
# 21 "/usr/include/sys/stat.h"

# 1 "/usr/include/sys/mode.h"
 
 
















 








# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 28 "/usr/include/sys/mode.h"


 













					 













 












 








 













 

















 



















 



 










# 22 "/usr/include/sys/stat.h"

 








 








struct  stat
{
	dev_t	st_dev;			 
					 
					 
					 
	ino_t	st_ino;			 

# 52 "/usr/include/sys/stat.h"
	mode_t	st_mode;		 

	short	st_nlink;		 

# 62 "/usr/include/sys/stat.h"
	uid_t	st_uid;			 
	gid_t	st_gid;			 

	dev_t	st_rdev;		 
					 
					 
	off_t	st_size;		 
	time_t	st_atime;		 
	int	st_spare1;
	time_t	st_mtime;		 
	int	st_spare2;
	time_t	st_ctime;		 
	int	st_spare3;
					 
					 
	ulong_t	st_blksize;		 
	ulong_t	st_blocks;		 

	 
	 
	 

	int	st_vfstype;		 
	ulong_t	st_vfs;			 
	ulong_t	st_type;		 
	ulong_t	st_gen;			 
	ulong_t	st_flag;		 
	uid_t	Reserved1;		 
	gid_t	Reserved2;		 

	 
	 
	 

	ushort_t st_access;		 
	ulong_t	st_spare4[5];		 
};
			 





# 107 "/usr/include/sys/stat.h"
	extern mode_t	umask(mode_t cmask); 





# 121 "/usr/include/sys/stat.h"

	extern int	mkdir(char *path, mode_t mode); 
	extern int	stat(char *path, struct stat *buf);
	extern int	fstat(int fildes, struct stat *buf);
	extern int	chmod(char *path, mode_t mode);

	extern int	mkfifo(char *path, mode_t mode);






 







 




 









 









# 35 "./freeze.h"

# 39 "./freeze.h"



# 44 "./freeze.h"

# 1 "/usr/include/utime.h"
 


 















# 1 "/usr/include/standards.h"
 
 














# 61 "/usr/include/standards.h"
# 20 "/usr/include/utime.h"

# 1 "/usr/include/sys/types.h"
 
 














 







# 236 "/usr/include/sys/types.h"
# 21 "/usr/include/utime.h"

 






struct utimbuf {
	time_t	actime;			 
	time_t	modtime;		 
	};


# 37 "/usr/include/utime.h"
extern int utime(char *fname, struct utimbuf *times); 



# 45 "./freeze.h"


# 56 "./freeze.h"

 

# 65 "./freeze.h"




# 74 "./freeze.h"


# 78 "./freeze.h"


# 82 "./freeze.h"


# 91 "./freeze.h"

typedef unsigned short us_t;
typedef unsigned char uc_t;
typedef unsigned long ul_t;


typedef ul_t hash_t;

# 101 "./freeze.h"


# 105 "./freeze.h"











extern uc_t    Table2[];

extern long     in_count, bytes_out, file_length;

extern uc_t      text_buf[];

extern long     indc_threshold, indc_count;

extern short    do_melt, topipe, greedy, quiet, force;   





extern int exit_stat;


# 138 "./freeze.h"


# 142 "./freeze.h"

extern short DecodeChar(), DecodePosition(), GetNBits();
extern void melt2(), (*meltfunc)(), writeerr(), prratio(), prbits(), freeze();


# 149 "./freeze.h"



























extern char *index(), *rindex();




# 2 "encode.c"

# 1 "./lz.h"
extern void InitTree();


# 6 "./lz.h"


# 11 "./lz.h"


# 16 "./lz.h"

 













# 33 "./lz.h"

 






extern hash_t prev[];
extern us_t      match_position, match_length, chain_length;





# 50 "./lz.h"
extern us_t next[];



# 68 "./lz.h"

 

 







 

















 



















# 129 "./lz.h"

 







 
 





# 152 "./lz.h"




 



# 162 "./lz.h"













# 179 "./lz.h"
# 3 "encode.c"

# 1 "./huf.h"

extern us_t freq[];
extern short son[], prnt[];
extern void StartHuff(), init(), write_header(), EncodeChar();
extern void EncodePosition();

# 4 "encode.c"

# 1 "./bitio.h"
 

extern ul_t getbuf;     
extern us_t putbuf;
extern uc_t bitlen;             

extern uc_t crpt_flag;    
extern uc_t __;           

extern void EncodeEnd(), Putcode(), crpt_message();















# 5 "encode.c"

 





 



void freeze ()
{
	register us_t i, len, r, s;
	register short c;
	int greedy_threshold = (256 * 3) / (3 * greedy + 3);
	(--((&_iob[1]))->_cnt < 0 ? _flsbuf((unsigned char) ((((uc_t)'\037'))), ((&_iob[1]))) : (int) (*((&_iob[1]))->_ptr++ = (unsigned char) ((((uc_t)'\037')))));
	(--((&_iob[1]))->_cnt < 0 ? _flsbuf((unsigned char) ((((uc_t)'\237'))), ((&_iob[1]))) : (int) (*((&_iob[1]))->_ptr++ = (unsigned char) ((((uc_t)'\237')))));

 
	write_header();
	StartHuff((256 - 2 + 256 + 1));
	init(Table2);
 

	InitTree();      
	{ crpt_flag = bitlen = 0; putbuf = 0; getbuf = 0; };

	s = 0;
	r = 8192 - 256;
	for (i = s; i < r; i++)
		text_buf[i] = ' ';
	for (len = 0; len < 256 && (c = (--((&_iob[0]))->_cnt < 0 ? _filbuf((&_iob[0])) : (int) *((&_iob[0]))->_ptr++)) != (-1); len++)
		text_buf[r + len] = c;

	 
	if(!topipe && !force && text_buf[r] == ((uc_t)'\037') &&
		text_buf[r + 1] >= ((uc_t)'\236')) {
		if (quiet != 1)
			fprintf((&_iob[2]), " already frozen ");
		exit_stat = 2;
		return;
	}

	in_count = len;
	for (i = 0; i <= 256; i++)
		{ register hash_t p; register us_t first_son; register uc_t *key; key = &text_buf[r + i - 256]; p = 8192 + 1 + (((hash_t)key[0] + ((hash_t)key[1] << ((16-8)/2)) + ((hash_t)key[2] << (16-8))) & ((1L << 16) - 1)); first_son = next[p]; next[r + i - 256] = first_son; next[p] = r + i - 256; prev[r + i - 256] = p; prev[first_son] = r + i - 256;};

	while (len != 0) {
		match_length = 2;
		{register us_t p=r;register int m;register uc_t *key , *pattern ;int chain_count=chain_length;key=text_buf+r;do{ do{ if((p=next[p])==8192||(greedy &&!chain_count--))goto leave1;pattern=text_buf+p;for (m = match_length; m >= 0 && key[m] == pattern[m]; m--);}while (m >= 0);for(m=match_length;++m<256&&key[m]==pattern[m];);match_length=m;match_position=((r-p)&(8192-1))-1;}while(m<256);next[prev[p]]=next[p];prev[next[p]]=prev[p];prev[p]=8192;leave1:;};
		if (match_length > len)
			match_length = len;

		if (match_length <= 2) {
			match_length = 1;
			EncodeChar(text_buf[r]);

# 68 "encode.c"
		} else if (match_length >= greedy_threshold) {
 

			EncodeChar((us_t) (match_length - 2) + 256);
			EncodePosition((us_t)match_position);

		} else {
			register us_t orig_length, orig_position, oldchar;

 


			oldchar = text_buf[r];
			orig_length = match_length;
			orig_position = match_position;

			{ next[prev[s]] = 8192; prev[s] = 8192;};
			if ((c = (--((&_iob[0]))->_cnt < 0 ? _filbuf((&_iob[0])) : (int) *((&_iob[0]))->_ptr++)) != (-1)) { text_buf[s] = c; if (s < 256 - 1) text_buf[s + 8192] = c; s = (s + 1) & (8192 - 1); r = (r + 1) & (8192 - 1); { register hash_t p; register us_t first_son; register uc_t *key; key = &text_buf[r]; p = 8192 + 1 + (((hash_t)key[0] + ((hash_t)key[1] << ((16-8)/2)) + ((hash_t)key[2] << (16-8))) & ((1L << 16) - 1)); first_son = next[p]; next[r] = first_son; next[p] = r; prev[r] = p; prev[first_son] = r;}; in_count++;} else { s = (s + 1) & (8192 - 1); r = (r + 1) & (8192 - 1); if (--len) { register hash_t p; register us_t first_son; register uc_t *key; key = &text_buf[r]; p = 8192 + 1 + (((hash_t)key[0] + ((hash_t)key[1] << ((16-8)/2)) + ((hash_t)key[2] << (16-8))) & ((1L << 16) - 1)); first_son = next[p]; next[r] = first_son; next[p] = r; prev[r] = p; prev[first_son] = r;};};
			{register us_t p=r;register int m;register uc_t *key , *pattern ;int chain_count=chain_length;key=text_buf+r;do{ do{ if((p=next[p])==8192||(greedy &&!chain_count--))goto leave2;pattern=text_buf+p;for (m = match_length; m >= 0 && key[m] == pattern[m]; m--);}while (m >= 0);for(m=match_length;++m<256&&key[m]==pattern[m];);match_length=m;match_position=((r-p)&(8192-1))-1;}while(m<256);next[prev[p]]=next[p];prev[next[p]]=prev[p];prev[p]=8192;leave2:;};

			if (match_length > len) match_length = len;

			if (orig_length >= match_length) {

				EncodeChar((us_t) (orig_length - 2) + 256);
				EncodePosition((us_t)orig_position);

# 97 "encode.c"
				match_length = orig_length - 1;
			} else {
				EncodeChar(oldchar);

# 106 "encode.c"
				EncodeChar(match_length - 2 + 256);
				EncodePosition(match_position);
			}

# 122 "encode.c"
		}

 



		for (i = 0; i < match_length &&
				(c = (--((&_iob[0]))->_cnt < 0 ? _filbuf((&_iob[0])) : (int) *((&_iob[0]))->_ptr++)) != (-1); i++) {
			{ next[prev[s]] = 8192; prev[s] = 8192;};
			text_buf[s] = c;
			if (s < 256 - 1)
				text_buf[s + 8192] = c;
			s = (s + 1) & (8192 - 1);
			r = (r + 1) & (8192 - 1);
			{ register hash_t p; register us_t first_son; register uc_t *key; key = &text_buf[r]; p = 8192 + 1 + (((hash_t)key[0] + ((hash_t)key[1] << ((16-8)/2)) + ((hash_t)key[2] << (16-8))) & ((1L << 16) - 1)); first_son = next[p]; next[r] = first_son; next[p] = r; prev[r] = p; prev[first_son] = r;};
		}

		in_count += i;

		if (quiet < 0 && (in_count > indc_count)) { if ((((&_iob[1]))->_flag & 0040)) writeerr(); if (file_length) { static int percents, old_percents = -1; if ((percents = ftell((&_iob[0])) * 100 / file_length) != old_percents) { fprintf((&_iob[2]), " %2d%%\b\b\b\b", percents); old_percents = percents; } indc_count += indc_threshold; } else { fprintf((&_iob[2]), " %5ldK\b\b\b\b\b\b\b", in_count / 1024); indc_count += indc_threshold; indc_threshold += 1024; } fflush ((&_iob[2]));}

		while (i++ < match_length) {
			{ next[prev[s]] = 8192; prev[s] = 8192;};
			s = (s + 1) & (8192 - 1);
			r = (r + 1) & (8192 - 1);
			if (--len) { register hash_t p; register us_t first_son; register uc_t *key; key = &text_buf[r]; p = 8192 + 1 + (((hash_t)key[0] + ((hash_t)key[1] << ((16-8)/2)) + ((hash_t)key[2] << (16-8))) & ((1L << 16) - 1)); first_son = next[p]; next[r] = first_son; next[p] = r; prev[r] = p; prev[first_son] = r;};
		}
	}

	 
	EncodeChar((short)256 - 256 + 256);

# 156 "encode.c"
	EncodeEnd();
     


    if(quiet != 1) {

# 166 "encode.c"

# 179 "encode.c"
	fprintf( (&_iob[2]), "Freezing: " );
	prratio( (&_iob[2]), in_count-bytes_out, in_count );
	prbits( (&_iob[2]), in_count, bytes_out);

    }
    if(bytes_out >= in_count)     
	exit_stat = 2;
    return;
}

