/* LINTLIBRARY */

/* case22.c */

typedef int x4t;

#undef x6
char	x6;
#undef x7
short	x7;
#undef x8
int	x8;
#undef x9
long	x9;
#undef x10
float	x10;
#undef x11
double	x11;
#undef x12
signed	x12;
#undef x13
unsigned x13;

struct x14;

union x15;

enum x16;

x4t;

#undef x17
x4t	x17;
#undef x18
const	x18 = {0};
#undef x19
volatile x19;

typedef struct _first {
 int a:5;
 struct {
  int a,b;
 } b_struct;
 char b:16, b1:1; 
 long c:16, c1;
 short d:16, d1:8, d2;
 unsigned e:16;
 float f;
 double g;
 struct _first *link;
 } _FIRST;

typedef int badStyle;

#undef badFunc
void	badFunc(
		int	*badStyle)
		{ /* void */ }

#undef first
_FIRST	first;
#undef last
_FIRST	last;
#undef first_last
_FIRST	first_last[];
#undef _SECOND
struct _second {
  enum {true, false} bool;
  enum {wrong=1, right=3} values;
 } _SECOND;
#undef i
int	i[];
#undef f
float	f[];
#undef array
int	array[][10][20];

#undef dots_0
int	dots_0(
		int	p1)
		{ return(*(int *)0); }

#undef dots_1
int	dots_1(
		int	p1, 
		...)
		{ return(*(int *)0); }

#undef dots_3
int	dots_3(
		int	p1, 
		char	p2, 
		...)
		{ return(*(int *)0); }

#undef func1
_FIRST	*func1(void)
		{ return(*(_FIRST **)0); }

#undef func2
_FIRST	*func2(
		_FIRST	*p1, 
		int	p2[], 
		float	p)
		{ return(*(_FIRST **)0); }

#undef func_func
int	*(func_func)(void)
		{ return(*(int **)0); }

typedef int bool;

#undef a1
bool	a1;

struct ZIP1 { int x1, y1; };

#undef z2
struct zip2 { int x2, y2; } z2;
#undef z3
struct { int x3, y3; } z3;

struct ZIP4 { int x4, y4; };

#undef what
enum zap1 { a,b,c,d } what;
#undef what2
enum zap2 what2;
#undef what3
enum {a9,b9,c9,d9} what3;

typedef struct bong {
 int (*func)();
 } BONG;

typedef char *string;

#undef main
void	main(
		int	argc, 
		char	**argv)
		{ /* void */ }

	/* VARARGS */
#undef veryfunny
int	veryfunny(
		char	*a, 
		long	b, 
		long	c)
		{ return(*(int *)0); }

	/* VARARGS3 */
#undef program
int	program(
		string	argv[], 
		struct alpha { int x,z; } y, 
		int	zz, 
		int	z1, 
		int	z2, 
		int	z3)
		{ return(*(int *)0); }

#undef junk0
void	junk0(void)
		{ /* void */ }

#undef junk1
int	junk1(void)
		{ return(*(int *)0); }

#undef junk2
void	junk2(void)
		{ /* void */ }

#undef junk3
int	junk3(void)
		{ return(*(int *)0); }

#undef junk4
BONG	*junk4(void)
		{ return(*(BONG **)0); }

typedef int extern_junk;

#undef foo
extern_junk *foo(void)
		{ return(*(extern_junk **)0); }

typedef int void_junk;

#undef foo2a
void_junk *foo2a(void)
		{ return(*(void_junk **)0); }

#undef foo2
void_junk *foo2(void)
		{ return(*(void_junk **)0); }

#undef foo_void
void_junk *foo_void(
		void_junk void_int)
		{ return(*(void_junk **)0); }

#undef Sigdisp
void	(*Sigdisp(
		int	sig, 
		void	(*func)(
		int	sig)))(
		int	sig1)
		{ return(*(void(*)())0); }

#undef sigdisp2
void	(*sigdisp2(
		int	sig, 
		void	(*func)(
		int	sig)))(
		int	sig2)
		{ return(*(void(*)())0); }

#undef K_R_INT_ptr
int	(*K_R_INT_ptr(
		long	*p1, 
		int	p2))(void)
		{ return(*(int(*)())0); }

#undef K_R_VOID_ptr
void	(*K_R_VOID_ptr(
		long	*p1, 
		int	p2))(void)
		{ return(*(void(*)())0); }

#undef K_R_int_ptr
int	*K_R_int_ptr(
		long	*p1, 
		int	p2)
		{ return(*(int **)0); }

#undef K_R_void_ptr
void	*K_R_void_ptr(
		long	*p1, 
		int	p2)
		{ return(*(void **)0); }

#undef K_R_int_val
int	K_R_int_val(
		long	*p1, 
		int	p2)
		{ return(*(int *)0); }

#undef K_R_int_val2
int	K_R_int_val2(
		long	*p1, 
		int	p2)
		{ return(*(int *)0); }

#undef K_R_void_val
void	K_R_void_val(
		long	*p1, 
		int	p2)
		{ /* void */ }

#undef K_R_void_val2
void	K_R_void_val2(
		long	*p1, 
		int	p2)
		{ /* void */ }

#undef xxx
long long xxx;
#undef xxs
char	*xxs;
