; GNU C version 3.4-llvm 20030530 (experimental) (i686-pc-linux-gnu)
;	compiled by GNU C version 3.2.
; GGC heuristics: --param ggc-min-expand=90 --param ggc-min-heapsize=113090
; options passed:  -E -iprefix -DSPEC_CPU2000_DUNIX -ansi -O0
; options enabled:  -feliminate-unused-debug-types -fpeephole
; -ffunction-cse -fkeep-static-consts -fpcc-struct-return -fgcse-lm
; -fgcse-sm -fsched-interblock -fsched-spec -fbranch-count-reg -fcommon
; -fgnu-linker -fargument-alias -fzero-initialized-in-bss -fident
; -fmath-errno -ftrapping-math -m80387 -mhard-float -mno-soft-float
; -mieee-fp -mfp-ret-in-387 -maccumulate-outgoing-args -mno-red-zone
; -mtune=pentiumpro -march=i386

target pointersize = 32
target endian = little
wordsize.h" 1 3 4
# 29 "/usr/include/bits/types.h" 2 3 4


# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 213 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 3 4
typedef unsigned int size_t;
# 32 "/usr/include/bits/types.h" 2 3 4


typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;


typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;




__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;





__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
# 128 "/usr/include/bits/types.h" 3 4
# 1 "/usr/include/bits/typesizes.h" 1 3 4
# 129 "/usr/include/bits/types.h" 2 3 4


typedef unsigned long long int __dev_t;
typedef unsigned int __uid_t;
typedef unsigned int __gid_t;
typedef unsigned long int __ino_t;
typedef unsigned long long int __ino64_t;
typedef unsigned int __mode_t;
typedef unsigned int __nlink_t;
typedef long int __off_t;
typedef long long int __off64_t;
typedef int __pid_t;
typedef struct { int __val[2]; } __fsid_t;
typedef long int __clock_t;
typedef unsigned long int __rlim_t;
typedef unsigned long long int __rlim64_t;
typedef unsigned int __id_t;
typedef long int __time_t;
typedef unsigned int __useconds_t;
typedef long int __suseconds_t;

typedef int __daddr_t;
typedef long int __swblk_t;
typedef int __key_t;


typedef int __clockid_t;


typedef int __timer_t;


typedef long int __blksize_t;




typedef long int __blkcnt_t;
typedef long long int __blkcnt64_t;


typedef unsigned long int __fsblkcnt_t;
typedef unsigned long long int __fsblkcnt64_t;


typedef unsigned long int __fsfilcnt_t;
typedef unsigned long long int __fsfilcnt64_t;




typedef int __ssize_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;


typedef int __intptr_t;


typedef unsigned int __socklen_t;
# 32 "/usr/include/sys/types.h" 2 3 4
# 46 "/usr/include/sys/types.h" 3 4
typedef __loff_t loff_t;



typedef __ino_t ino_t;
# 62 "/usr/include/sys/types.h" 3 4
typedef __dev_t dev_t;




typedef __gid_t gid_t;




typedef __mode_t mode_t;




typedef __nlink_t nlink_t;




typedef __uid_t uid_t;





typedef __off_t off_t;
# 100 "/usr/include/sys/types.h" 3 4
typedef __pid_t pid_t;
# 110 "/usr/include/sys/types.h" 3 4
typedef __ssize_t ssize_t;
# 133 "/usr/include/sys/types.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 74 "/usr/include/time.h" 3 4


typedef __time_t time_t;

# 92 "/usr/include/time.h" 3 4
typedef __clockid_t clockid_t;
# 104 "/usr/include/time.h" 3 4
typedef __timer_t timer_t;
# 134 "/usr/include/sys/types.h" 2 3 4
# 147 "/usr/include/sys/types.h" 3 4
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 148 "/usr/include/sys/types.h" 2 3 4
# 191 "/usr/include/sys/types.h" 3 4
typedef int int8_t ;
typedef int int16_t ;
typedef int int32_t ;
typedef int int64_t ;


typedef unsigned int u_int8_t ;
typedef unsigned int u_int16_t ;
typedef unsigned int u_int32_t ;
typedef unsigned int u_int64_t ;

typedef int register_t ;
# 231 "/usr/include/sys/types.h" 3 4
typedef __blkcnt_t blkcnt_t;



typedef __fsblkcnt_t fsblkcnt_t;



typedef __fsfilcnt_t fsfilcnt_t;
# 269 "/usr/include/sys/types.h" 3 4

# 308 "perl.h" 2
# 318 "perl.h"
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stdarg.h" 1 3 4
# 43 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stdarg.h" 3 4
typedef __builtin_va_list __gnuc_va_list;
# 105 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stdarg.h" 3 4
typedef __gnuc_va_list va_list;
# 319 "perl.h" 2






# 1 "iperlsys.h" 1
# 74 "iperlsys.h"
extern void PerlIO_init (void);
# 203 "iperlsys.h"
# 1 "perlsdio.h" 1




# 1 "/usr/include/stdio.h" 1 3 4
# 30 "/usr/include/stdio.h" 3 4




# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 35 "/usr/include/stdio.h" 2 3 4
# 44 "/usr/include/stdio.h" 3 4


typedef struct _IO_FILE FILE;

# 62 "/usr/include/stdio.h" 3 4
typedef struct _IO_FILE __FILE;
# 72 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/libio.h" 1 3 4
# 32 "/usr/include/libio.h" 3 4
# 1 "/usr/include/_G_config.h" 1 3 4
# 14 "/usr/include/_G_config.h" 3 4
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 325 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 3 4
typedef long int wchar_t;
# 354 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 3 4
typedef unsigned int wint_t;
# 15 "/usr/include/_G_config.h" 2 3 4
# 24 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4

# 1 "/usr/include/bits/wchar.h" 1 3 4
# 51 "/usr/include/wchar.h" 2 3 4
# 71 "/usr/include/wchar.h" 3 4
typedef struct
{
  int __count;
  union
  {
    wint_t __wch;
    char __wchb[4];
  } __value;
} __mbstate_t;
# 25 "/usr/include/_G_config.h" 2 3 4

typedef struct
{
  __off_t __pos;
  __mbstate_t __state;
} _G_fpos_t;
typedef struct
{
  __off64_t __pos;
  __mbstate_t __state;
} _G_fpos64_t;
# 44 "/usr/include/_G_config.h" 3 4
# 1 "/usr/include/gconv.h" 1 3 4
# 28 "/usr/include/gconv.h" 3 4
# 1 "/usr/include/wchar.h" 1 3 4
# 48 "/usr/include/wchar.h" 3 4
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 49 "/usr/include/wchar.h" 2 3 4
# 29 "/usr/include/gconv.h" 2 3 4


# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 32 "/usr/include/gconv.h" 2 3 4





enum
{
  __GCONV_OK = 0,
  __GCONV_NOCONV,
  __GCONV_NODB,
  __GCONV_NOMEM,

  __GCONV_EMPTY_INPUT,
  __GCONV_FULL_OUTPUT,
  __GCONV_ILLEGAL_INPUT,
  __GCONV_INCOMPLETE_INPUT,

  __GCONV_ILLEGAL_DESCRIPTOR,
  __GCONV_INTERNAL_ERROR
};



enum
{
  __GCONV_IS_LAST = 0x0001,
  __GCONV_IGNORE_ERRORS = 0x0002
};



struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;



typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
       __const unsigned char **, __const unsigned char *,
       unsigned char **, size_t *, int, int);


typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);


typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);



typedef int (*__gconv_trans_fct) (struct __gconv_step *,
      struct __gconv_step_data *, void *,
      __const unsigned char *,
      __const unsigned char **,
      __const unsigned char *, unsigned char **,
      size_t *);


typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
       __const unsigned char *,
       unsigned char *, unsigned char *);


typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
     size_t *);


typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);

struct __gconv_trans_data
{

  __gconv_trans_fct __trans_fct;
  __gconv_trans_context_fct __trans_context_fct;
  __gconv_trans_end_fct __trans_end_fct;
  void *__data;
  struct __gconv_trans_data *__next;
};



struct __gconv_step
{
  struct __gconv_loaded_object *__shlib_handle;
  __const char *__modname;

  int __counter;

  char *__from_name;
  char *__to_name;

  __gconv_fct __fct;
  __gconv_btowc_fct __btowc_fct;
  __gconv_init_fct __init_fct;
  __gconv_end_fct __end_fct;



  int __min_needed_from;
  int __max_needed_from;
  int __min_needed_to;
  int __max_needed_to;


  int __stateful;

  void *__data;
};



struct __gconv_step_data
{
  unsigned char *__outbuf;
  unsigned char *__outbufend;



  int __flags;



  int __invocation_counter;



  int __internal_use;

  __mbstate_t *__statep;
  __mbstate_t __state;



  struct __gconv_trans_data *__trans;
};



typedef struct __gconv_info
{
  size_t __nsteps;
  struct __gconv_step *__steps;
  __extension__ struct __gconv_step_data __data [];
} *__gconv_t;
# 45 "/usr/include/_G_config.h" 2 3 4
typedef union
{
  struct __gconv_info __cd;
  struct
  {
    struct __gconv_info __cd;
    struct __gconv_step_data __data;
  } __combined;
} _G_iconv_t;

typedef int _G_int16_t ;
typedef int _G_int32_t ;
typedef unsigned int _G_uint16_t ;
typedef unsigned int _G_uint32_t ;
# 33 "/usr/include/libio.h" 2 3 4
# 162 "/usr/include/libio.h" 3 4
struct _IO_jump_t; struct _IO_FILE;
# 172 "/usr/include/libio.h" 3 4
typedef void _IO_lock_t;





struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;



  int _pos;
# 195 "/usr/include/libio.h" 3 4
};


enum __codecvt_result
{
  __codecvt_ok,
  __codecvt_partial,
  __codecvt_error,
  __codecvt_noconv
};
# 263 "/usr/include/libio.h" 3 4
struct _IO_FILE {
  int _flags;




  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;

  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;



  int _flags2;

  __off_t _old_offset;



  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];



  _IO_lock_t *_lock;
# 311 "/usr/include/libio.h" 3 4
  __off64_t _offset;





  void *__pad1;
  void *__pad2;

  int _mode;

  char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];

};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;

extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
# 350 "/usr/include/libio.h" 3 4
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);







typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
     size_t __n);







typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);


typedef int __io_close_fn (void *__cookie);
# 402 "/usr/include/libio.h" 3 4
extern int __underflow (_IO_FILE *) ;
extern int __uflow (_IO_FILE *) ;
extern int __overflow (_IO_FILE *, int) ;
extern wint_t __wunderflow (_IO_FILE *) ;
extern wint_t __wuflow (_IO_FILE *) ;
extern wint_t __woverflow (_IO_FILE *, wint_t) ;
# 432 "/usr/include/libio.h" 3 4
extern int _IO_getc (_IO_FILE *__fp) ;
extern int _IO_putc (int __c, _IO_FILE *__fp) ;
extern int _IO_feof (_IO_FILE *__fp) ;
extern int _IO_ferror (_IO_FILE *__fp) ;

extern int _IO_peekc_locked (_IO_FILE *__fp) ;





extern void _IO_flockfile (_IO_FILE *) ;
extern void _IO_funlockfile (_IO_FILE *) ;
extern int _IO_ftrylockfile (_IO_FILE *) ;
# 462 "/usr/include/libio.h" 3 4
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
   __gnuc_va_list, int *__restrict) ;
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
    __gnuc_va_list) ;
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) ;
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) ;

extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) ;
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) ;

extern void _IO_free_backup_area (_IO_FILE *) ;
# 73 "/usr/include/stdio.h" 2 3 4
# 86 "/usr/include/stdio.h" 3 4


typedef _G_fpos_t fpos_t;




# 138 "/usr/include/stdio.h" 3 4
# 1 "/usr/include/bits/stdio_lim.h" 1 3 4
# 139 "/usr/include/stdio.h" 2 3 4



extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;







extern int remove (__const char *__filename) ;

extern int rename (__const char *__old, __const char *__new) ;






extern FILE *tmpfile (void) ;
# 171 "/usr/include/stdio.h" 3 4
extern char *tmpnam (char *__s) ;

# 198 "/usr/include/stdio.h" 3 4


extern int fclose (FILE *__stream) ;

extern int fflush (FILE *__stream) ;

# 216 "/usr/include/stdio.h" 3 4



extern FILE *fopen (__const char *__restrict __filename,
      __const char *__restrict __modes) ;

extern FILE *freopen (__const char *__restrict __filename,
        __const char *__restrict __modes,
        FILE *__restrict __stream) ;
# 239 "/usr/include/stdio.h" 3 4

# 271 "/usr/include/stdio.h" 3 4



extern void setbuf (FILE *__restrict __stream, char *__restrict __buf) ;



extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
      int __modes, size_t __n) ;

# 293 "/usr/include/stdio.h" 3 4


extern int fprintf (FILE *__restrict __stream,
      __const char *__restrict __format, ...) ;

extern int printf (__const char *__restrict __format, ...) ;

extern int sprintf (char *__restrict __s,
      __const char *__restrict __format, ...) ;


extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) ;

extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg)
     ;

extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) ;

# 349 "/usr/include/stdio.h" 3 4


extern int fscanf (FILE *__restrict __stream,
     __const char *__restrict __format, ...) ;

extern int scanf (__const char *__restrict __format, ...) ;

extern int sscanf (__const char *__restrict __s,
     __const char *__restrict __format, ...) ;

# 379 "/usr/include/stdio.h" 3 4


extern int fgetc (FILE *__stream) ;
extern int getc (FILE *__stream) ;


extern int getchar (void) ;

# 404 "/usr/include/stdio.h" 3 4


extern int fputc (int __c, FILE *__stream) ;
extern int putc (int __c, FILE *__stream) ;


extern int putchar (int __c) ;

# 438 "/usr/include/stdio.h" 3 4


extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
     ;



extern char *gets (char *__s) ;

# 475 "/usr/include/stdio.h" 3 4


extern int fputs (__const char *__restrict __s, FILE *__restrict __stream)
     ;


extern int puts (__const char *__s) ;



extern int ungetc (int __c, FILE *__stream) ;



extern size_t fread (void *__restrict __ptr, size_t __size,
       size_t __n, FILE *__restrict __stream) ;

extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
        size_t __n, FILE *__restrict __s) ;

# 511 "/usr/include/stdio.h" 3 4


extern int fseek (FILE *__stream, long int __off, int __whence) ;

extern long int ftell (FILE *__stream) ;

extern void rewind (FILE *__stream) ;

# 544 "/usr/include/stdio.h" 3 4



extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
     ;

extern int fsetpos (FILE *__stream, __const fpos_t *__pos) ;
# 563 "/usr/include/stdio.h" 3 4

# 573 "/usr/include/stdio.h" 3 4


extern void clearerr (FILE *__stream) ;

extern int feof (FILE *__stream) ;

extern int ferror (FILE *__stream) ;

# 590 "/usr/include/stdio.h" 3 4


extern void perror (__const char *__s) ;






# 1 "/usr/include/bits/sys_errlist.h" 1 3 4
# 600 "/usr/include/stdio.h" 2 3 4
# 677 "/usr/include/stdio.h" 3 4

# 6 "perlsdio.h" 2
# 204 "iperlsys.h" 2
# 318 "iperlsys.h"
extern int PerlIO_sprintf (char *, int, const char *,...)
     ;
# 376 "iperlsys.h"
extern int PerlIO_getpos (FILE *,fpos_t *);


extern int PerlIO_setpos (FILE *,const fpos_t *);
# 326 "perl.h" 2
# 336 "perl.h"
# 1 "/usr/include/ctype.h" 1 3 4
# 30 "/usr/include/ctype.h" 3 4

# 41 "/usr/include/ctype.h" 3 4
# 1 "/usr/include/endian.h" 1 3 4
# 37 "/usr/include/endian.h" 3 4
# 1 "/usr/include/bits/endian.h" 1 3 4
# 38 "/usr/include/endian.h" 2 3 4
# 42 "/usr/include/ctype.h" 2 3 4






enum
{
  _ISupper = ((0) < 8 ? ((1 << (0)) << 8) : ((1 << (0)) >> 8)),
  _ISlower = ((1) < 8 ? ((1 << (1)) << 8) : ((1 << (1)) >> 8)),
  _ISalpha = ((2) < 8 ? ((1 << (2)) << 8) : ((1 << (2)) >> 8)),
  _ISdigit = ((3) < 8 ? ((1 << (3)) << 8) : ((1 << (3)) >> 8)),
  _ISxdigit = ((4) < 8 ? ((1 << (4)) << 8) : ((1 << (4)) >> 8)),
  _ISspace = ((5) < 8 ? ((1 << (5)) << 8) : ((1 << (5)) >> 8)),
  _ISprint = ((6) < 8 ? ((1 << (6)) << 8) : ((1 << (6)) >> 8)),
  _ISgraph = ((7) < 8 ? ((1 << (7)) << 8) : ((1 << (7)) >> 8)),
  _ISblank = ((8) < 8 ? ((1 << (8)) << 8) : ((1 << (8)) >> 8)),
  _IScntrl = ((9) < 8 ? ((1 << (9)) << 8) : ((1 << (9)) >> 8)),
  _ISpunct = ((10) < 8 ? ((1 << (10)) << 8) : ((1 << (10)) >> 8)),
  _ISalnum = ((11) < 8 ? ((1 << (11)) << 8) : ((1 << (11)) >> 8))
};
# 81 "/usr/include/ctype.h" 3 4
extern __const unsigned short int **__ctype_b_loc (void)
     ;
extern __const __int32_t **__ctype_tolower_loc (void)
     ;
extern __const __int32_t **__ctype_toupper_loc (void)
     ;
# 96 "/usr/include/ctype.h" 3 4






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



extern int tolower (int __c) ;


extern int toupper (int __c) ;


# 323 "/usr/include/ctype.h" 3 4

# 337 "perl.h" 2







# 1 "/usr/include/locale.h" 1 3 4
# 29 "/usr/include/locale.h" 3 4
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 30 "/usr/include/locale.h" 2 3 4
# 1 "/usr/include/bits/locale.h" 1 3 4
# 27 "/usr/include/bits/locale.h" 3 4
enum
{
  __LC_CTYPE = 0,
  __LC_NUMERIC = 1,
  __LC_TIME = 2,
  __LC_COLLATE = 3,
  __LC_MONETARY = 4,
  __LC_MESSAGES = 5,
  __LC_ALL = 6,
  __LC_PAPER = 7,
  __LC_NAME = 8,
  __LC_ADDRESS = 9,
  __LC_TELEPHONE = 10,
  __LC_MEASUREMENT = 11,
  __LC_IDENTIFICATION = 12
};
# 31 "/usr/include/locale.h" 2 3 4


# 52 "/usr/include/locale.h" 3 4
struct lconv
{


  char *decimal_point;
  char *thousands_sep;





  char *grouping;





  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;
# 112 "/usr/include/locale.h" 3 4
  char __int_p_cs_precedes;
  char __int_p_sep_by_space;
  char __int_n_cs_precedes;
  char __int_n_sep_by_space;
  char __int_p_sign_posn;
  char __int_n_sign_posn;

};





extern char *setlocale (int __category, __const char *__locale) ;


extern struct lconv *localeconv (void) ;


# 208 "/usr/include/locale.h" 3 4

# 345 "perl.h" 2
# 361 "perl.h"
# 1 "/usr/include/setjmp.h" 1 3 4
# 28 "/usr/include/setjmp.h" 3 4


# 1 "/usr/include/bits/setjmp.h" 1 3 4
# 36 "/usr/include/bits/setjmp.h" 3 4
typedef int __jmp_buf[6];
# 31 "/usr/include/setjmp.h" 2 3 4
# 1 "/usr/include/bits/sigset.h" 1 3 4
# 23 "/usr/include/bits/sigset.h" 3 4
typedef int __sig_atomic_t;




typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int)))];
  } __sigset_t;
# 32 "/usr/include/setjmp.h" 2 3 4




typedef struct __jmp_buf_tag
  {




    __jmp_buf __jmpbuf;
    int __mask_was_saved;
    __sigset_t __saved_mask;
  } jmp_buf[1];




extern int setjmp (jmp_buf __env) ;







extern int __sigsetjmp (struct __jmp_buf_tag __env[1], int __savemask) ;




extern int _setjmp (struct __jmp_buf_tag __env[1]) ;
# 76 "/usr/include/setjmp.h" 3 4




extern void longjmp (struct __jmp_buf_tag __env[1], int __val)
     ;


# 112 "/usr/include/setjmp.h" 3 4

# 362 "perl.h" 2
# 373 "perl.h"
# 1 "/usr/include/stdlib.h" 1 3 4
# 33 "/usr/include/stdlib.h" 3 4
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 34 "/usr/include/stdlib.h" 2 3 4


# 93 "/usr/include/stdlib.h" 3 4


typedef struct
  {
    int quot;
    int rem;
  } div_t;



typedef struct
  {
    long int quot;
    long int rem;
  } ldiv_t;



# 137 "/usr/include/stdlib.h" 3 4
extern size_t __ctype_get_mb_cur_max (void) ;




extern double atof (__const char *__nptr) ;

extern int atoi (__const char *__nptr) ;

extern long int atol (__const char *__nptr) ;

# 157 "/usr/include/stdlib.h" 3 4


extern double strtod (__const char *__restrict __nptr,
        char **__restrict __endptr) ;

# 174 "/usr/include/stdlib.h" 3 4


extern long int strtol (__const char *__restrict __nptr,
   char **__restrict __endptr, int __base) ;

extern unsigned long int strtoul (__const char *__restrict __nptr,
      char **__restrict __endptr, int __base)
     ;

# 264 "/usr/include/stdlib.h" 3 4
extern double __strtod_internal (__const char *__restrict __nptr,
     char **__restrict __endptr, int __group)
     ;
extern float __strtof_internal (__const char *__restrict __nptr,
    char **__restrict __endptr, int __group)
     ;
extern long double __strtold_internal (__const char *__restrict __nptr,
           char **__restrict __endptr,
           int __group) ;

extern long int __strtol_internal (__const char *__restrict __nptr,
       char **__restrict __endptr,
       int __base, int __group) ;



extern unsigned long int __strtoul_internal (__const char *__restrict __nptr,
          char **__restrict __endptr,
          int __base, int __group) ;




__extension__
extern long long int __strtoll_internal (__const char *__restrict __nptr,
      char **__restrict __endptr,
      int __base, int __group) ;



__extension__
extern unsigned long long int __strtoull_internal (__const char *
         __restrict __nptr,
         char **__restrict __endptr,
         int __base, int __group)
     ;
# 469 "/usr/include/stdlib.h" 3 4


extern int rand (void) ;

extern void srand (unsigned int __seed) ;

# 552 "/usr/include/stdlib.h" 3 4


extern void *malloc (size_t __size) ;

extern void *calloc (size_t __nmemb, size_t __size)
     ;







extern void *realloc (void *__ptr, size_t __size) ;

extern void free (void *__ptr) ;

# 590 "/usr/include/stdlib.h" 3 4


extern void abort (void) ;



extern int atexit (void (*__func) (void)) ;

# 606 "/usr/include/stdlib.h" 3 4




extern void exit (int __status) ;

# 622 "/usr/include/stdlib.h" 3 4


extern char *getenv (__const char *__name) ;




extern char *__secure_getenv (__const char *__name) ;
# 692 "/usr/include/stdlib.h" 3 4


extern int system (__const char *__command) ;

# 720 "/usr/include/stdlib.h" 3 4
typedef int (*__compar_fn_t) (__const void *, __const void *);









extern void *bsearch (__const void *__key, __const void *__base,
        size_t __nmemb, size_t __size, __compar_fn_t __compar);



extern void qsort (void *__base, size_t __nmemb, size_t __size,
     __compar_fn_t __compar);



extern int abs (int __x) ;
extern long int labs (long int __x) ;












extern div_t div (int __numer, int __denom)
     ;
extern ldiv_t ldiv (long int __numer, long int __denom)
     ;

# 819 "/usr/include/stdlib.h" 3 4



extern int mblen (__const char *__s, size_t __n) ;


extern int mbtowc (wchar_t *__restrict __pwc,
     __const char *__restrict __s, size_t __n) ;


extern int wctomb (char *__s, wchar_t __wchar) ;



extern size_t mbstowcs (wchar_t *__restrict __pwcs,
   __const char *__restrict __s, size_t __n) ;

extern size_t wcstombs (char *__restrict __s,
   __const wchar_t *__restrict __pwcs, size_t __n)
     ;

# 914 "/usr/include/stdlib.h" 3 4

# 374 "perl.h" 2
# 426 "perl.h"
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 151 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 3 4
typedef int ptrdiff_t;
# 427 "perl.h" 2






# 1 "/usr/include/string.h" 1 3 4
# 28 "/usr/include/string.h" 3 4





# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/stddef.h" 1 3 4
# 34 "/usr/include/string.h" 2 3 4




extern void *memcpy (void *__restrict __dest,
       __const void *__restrict __src, size_t __n) ;


extern void *memmove (void *__dest, __const void *__src, size_t __n)
     ;

# 56 "/usr/include/string.h" 3 4


extern void *memset (void *__s, int __c, size_t __n) ;


extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
     ;


extern void *memchr (__const void *__s, int __c, size_t __n)
      ;

# 80 "/usr/include/string.h" 3 4


extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
     ;

extern char *strncpy (char *__restrict __dest,
        __const char *__restrict __src, size_t __n) ;


extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
     ;

extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
        size_t __n) ;


extern int strcmp (__const char *__s1, __const char *__s2)
     ;

extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
     ;


extern int strcoll (__const char *__s1, __const char *__s2)
     ;

extern size_t strxfrm (char *__restrict __dest,
         __const char *__restrict __src, size_t __n) ;

# 160 "/usr/include/string.h" 3 4


extern char *strchr (__const char *__s, int __c) ;

extern char *strrchr (__const char *__s, int __c) ;











extern size_t strcspn (__const char *__s, __const char *__reject)
     ;


extern size_t strspn (__const char *__s, __const char *__accept)
     ;

extern char *strpbrk (__const char *__s, __const char *__accept)
     ;

extern char *strstr (__const char *__haystack, __const char *__needle)
     ;



extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
     ;




extern char *__strtok_r (char *__restrict __s,
    __const char *__restrict __delim,
    char **__restrict __save_ptr) ;
# 228 "/usr/include/string.h" 3 4


extern size_t strlen (__const char *__s) ;

# 241 "/usr/include/string.h" 3 4


extern char *strerror (int __errnum) ;

# 253 "/usr/include/string.h" 3 4
extern void __bzero (void *__s, size_t __n) ;
# 379 "/usr/include/string.h" 3 4

# 434 "perl.h" 2
# 537 "perl.h"
# 1 "/usr/include/sys/stat.h" 1 3 4
# 103 "/usr/include/sys/stat.h" 3 4


# 1 "/usr/include/bits/stat.h" 1 3 4
# 36 "/usr/include/bits/stat.h" 3 4
struct stat
  {
    __dev_t st_dev;
    unsigned short int __pad1;

    __ino_t st_ino;



    __mode_t st_mode;
    __nlink_t st_nlink;
    __uid_t st_uid;
    __gid_t st_gid;
    __dev_t st_rdev;
    unsigned short int __pad2;

    __off_t st_size;



    __blksize_t st_blksize;


    __blkcnt_t st_blocks;
# 77 "/usr/include/bits/stat.h" 3 4
    __time_t st_atime;
    unsigned long int st_atimensec;
    __time_t st_mtime;
    unsigned long int st_mtimensec;
    __time_t st_ctime;
    unsigned long int st_ctimensec;


    unsigned long int __unused4;
    unsigned long int __unused5;



  };
# 106 "/usr/include/sys/stat.h" 2 3 4
# 207 "/usr/include/sys/stat.h" 3 4
extern int stat (__const char *__restrict __file,
   struct stat *__restrict __buf) ;



extern int fstat (int __fd, struct stat *__buf) ;
# 255 "/usr/include/sys/stat.h" 3 4
extern int chmod (__const char *__file, __mode_t __mode) ;
# 272 "/usr/include/sys/stat.h" 3 4
extern __mode_t umask (__mode_t __mask) ;
# 281 "/usr/include/sys/stat.h" 3 4
extern int mkdir (__const char *__path, __mode_t __mode) ;
# 293 "/usr/include/sys/stat.h" 3 4
extern int mkfifo (__const char *__path, __mode_t __mode) ;
# 319 "/usr/include/sys/stat.h" 3 4
extern int __fxstat (int __ver, int __fildes, struct stat *__stat_buf) ;
extern int __xstat (int __ver, __const char *__filename,
      struct stat *__stat_buf) ;
extern int __lxstat (int __ver, __const char *__filename,
       struct stat *__stat_buf) ;
# 350 "/usr/include/sys/stat.h" 3 4
extern int __xmknod (int __ver, __const char *__path, __mode_t __mode,
       __dev_t *__dev) ;




extern __inline__ int stat (__const char *__path,
       struct stat *__statbuf)
{
  return __xstat (3, __path, __statbuf);
}
# 370 "/usr/include/sys/stat.h" 3 4
extern __inline__ int fstat (int __fd, struct stat *__statbuf)
{
  return __fxstat (3, __fd, __statbuf);
}
# 408 "/usr/include/sys/stat.h" 3 4

# 538 "perl.h" 2
# 566 "perl.h"
# 1 "/usr/include/sys/time.h" 1 3 4
# 27 "/usr/include/sys/time.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 28 "/usr/include/sys/time.h" 2 3 4

# 1 "/usr/include/bits/time.h" 1 3 4
# 67 "/usr/include/bits/time.h" 3 4
struct timeval
  {
    __time_t tv_sec;
    __suseconds_t tv_usec;
  };
# 30 "/usr/include/sys/time.h" 2 3 4

# 1 "/usr/include/sys/select.h" 1 3 4
# 31 "/usr/include/sys/select.h" 3 4
# 1 "/usr/include/bits/select.h" 1 3 4
# 32 "/usr/include/sys/select.h" 2 3 4


# 1 "/usr/include/bits/sigset.h" 1 3 4
# 35 "/usr/include/sys/select.h" 2 3 4



typedef __sigset_t sigset_t;





# 1 "/usr/include/time.h" 1 3 4
# 118 "/usr/include/time.h" 3 4
struct timespec
  {
    __time_t tv_sec;
    long int tv_nsec;
  };
# 45 "/usr/include/sys/select.h" 2 3 4

# 1 "/usr/include/bits/time.h" 1 3 4
# 47 "/usr/include/sys/select.h" 2 3 4


typedef __suseconds_t suseconds_t;





typedef long int __fd_mask;
# 67 "/usr/include/sys/select.h" 3 4
typedef struct
  {






    __fd_mask __fds_bits[1024 / (8 * sizeof (__fd_mask))];


  } fd_set;
# 99 "/usr/include/sys/select.h" 3 4







extern int select (int __nfds, fd_set *__restrict __readfds,
     fd_set *__restrict __writefds,
     fd_set *__restrict __exceptfds,
     struct timeval *__restrict __timeout) ;
# 122 "/usr/include/sys/select.h" 3 4

# 32 "/usr/include/sys/time.h" 2 3 4








# 65 "/usr/include/sys/time.h" 3 4
typedef void *__restrict __timezone_ptr_t;







extern int gettimeofday (struct timeval *__restrict __tv,
    __timezone_ptr_t __tz) ;
# 92 "/usr/include/sys/time.h" 3 4
enum __itimer_which
  {

    ITIMER_REAL = 0,


    ITIMER_VIRTUAL = 1,



    ITIMER_PROF = 2

  };



struct itimerval
  {

    struct timeval it_interval;

    struct timeval it_value;
  };






typedef int __itimer_which_t;




extern int getitimer (__itimer_which_t __which,
        struct itimerval *__value) ;




extern int setitimer (__itimer_which_t __which,
        __const struct itimerval *__restrict __new,
        struct itimerval *__restrict __old) ;




extern int utimes (__const char *__file, __const struct timeval __tvp[2])
     ;
# 182 "/usr/include/sys/time.h" 3 4

# 567 "perl.h" 2






# 1 "/usr/include/sys/times.h" 1 3 4
# 29 "/usr/include/sys/times.h" 3 4
# 1 "/usr/include/time.h" 1 3 4
# 58 "/usr/include/time.h" 3 4


typedef __clock_t clock_t;

# 30 "/usr/include/sys/times.h" 2 3 4





struct tms
  {
    clock_t tms_utime;
    clock_t tms_stime;

    clock_t tms_cutime;
    clock_t tms_cstime;
  };






extern clock_t times (struct tms *__buffer) ;


# 574 "perl.h" 2






# 1 "/usr/include/errno.h" 1 3 4
# 32 "/usr/include/errno.h" 3 4




# 1 "/usr/include/bits/errno.h" 1 3 4
# 25 "/usr/include/bits/errno.h" 3 4
# 1 "/usr/include/linux/errno.h" 1 3 4



# 1 "/usr/include/asm/errno.h" 1 3 4
# 5 "/usr/include/linux/errno.h" 2 3 4
# 26 "/usr/include/bits/errno.h" 2 3 4
# 38 "/usr/include/bits/errno.h" 3 4
extern int *__errno_location (void) ;
# 37 "/usr/include/errno.h" 2 3 4
# 59 "/usr/include/errno.h" 3 4

# 581 "perl.h" 2
# 618 "perl.h"
 char *strerror (int);
# 637 "perl.h"
# 1 "/usr/include/sys/ioctl.h" 1 3 4
# 24 "/usr/include/sys/ioctl.h" 3 4



# 1 "/usr/include/bits/ioctls.h" 1 3 4
# 24 "/usr/include/bits/ioctls.h" 3 4
# 1 "/usr/include/asm/ioctls.h" 1 3 4



# 1 "/usr/include/asm/ioctl.h" 1 3 4
# 5 "/usr/include/asm/ioctls.h" 2 3 4
# 25 "/usr/include/bits/ioctls.h" 2 3 4
# 28 "/usr/include/sys/ioctl.h" 2 3 4


# 1 "/usr/include/bits/ioctl-types.h" 1 3 4
# 28 "/usr/include/bits/ioctl-types.h" 3 4
struct winsize
  {
    unsigned short int ws_row;
    unsigned short int ws_col;
    unsigned short int ws_xpixel;
    unsigned short int ws_ypixel;
  };


struct termio
  {
    unsigned short int c_iflag;
    unsigned short int c_oflag;
    unsigned short int c_cflag;
    unsigned short int c_lflag;
    unsigned char c_line;
    unsigned char c_cc[8];
};
# 31 "/usr/include/sys/ioctl.h" 2 3 4






# 1 "/usr/include/sys/ttydefaults.h" 1 3 4
# 38 "/usr/include/sys/ioctl.h" 2 3 4




extern int ioctl (int __fd, unsigned long int __request, ...) ;


# 638 "perl.h" 2
# 660 "perl.h"
# 1 "/usr/include/dirent.h" 1 3 4
# 28 "/usr/include/dirent.h" 3 4

# 62 "/usr/include/dirent.h" 3 4
# 1 "/usr/include/bits/dirent.h" 1 3 4
# 23 "/usr/include/bits/dirent.h" 3 4
struct dirent
  {

    __ino_t d_ino;
    __off_t d_off;




    unsigned short int d_reclen;
    unsigned char d_type;
    char d_name[256];
  };
# 63 "/usr/include/dirent.h" 2 3 4
# 128 "/usr/include/dirent.h" 3 4
typedef struct __dirstream DIR;



extern DIR *opendir (__const char *__name) ;



extern int closedir (DIR *__dirp) ;
# 146 "/usr/include/dirent.h" 3 4
extern struct dirent *readdir (DIR *__dirp) ;
# 186 "/usr/include/dirent.h" 3 4
extern void rewinddir (DIR *__dirp) ;
# 323 "/usr/include/dirent.h" 3 4

# 661 "perl.h" 2
# 833 "perl.h"
    typedef long IV;
    typedef unsigned long UV;
# 860 "perl.h"
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/limits.h" 1 3 4
# 11 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/limits.h" 3 4
# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/syslimits.h" 1 3 4






# 1 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/limits.h" 1 3 4
# 122 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/limits.h" 3 4
# 1 "/usr/include/limits.h" 1 3 4
# 123 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/limits.h" 2 3 4
# 8 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/syslimits.h" 2 3 4
# 12 "/home/dcrowe/llvm/cfrontend/x86/llvm-gcc/lib/gcc-lib/i686-pc-linux-gnu/3.4-llvm/include/limits.h" 2 3 4
# 861 "perl.h" 2
# 1041 "perl.h"
typedef size_t STRLEN;

typedef struct op OP;
typedef struct cop COP;
typedef struct unop UNOP;
typedef struct binop BINOP;
typedef struct listop LISTOP;
typedef struct logop LOGOP;
typedef struct condop CONDOP;
typedef struct pmop PMOP;
typedef struct svop SVOP;
typedef struct gvop GVOP;
typedef struct pvop PVOP;
typedef struct loop LOOP;

typedef struct Outrec Outrec;
typedef struct interpreter PerlInterpreter;

typedef struct ff FF;

typedef struct sv SV;
typedef struct av AV;
typedef struct hv HV;
typedef struct cv CV;
typedef struct regexp REGEXP;
typedef struct gp GP;
typedef struct gv GV;
typedef struct io IO;
typedef struct context PERL_CONTEXT;
typedef struct block BLOCK;

typedef struct magic MAGIC;
typedef struct xrv XRV;
typedef struct xpv XPV;
typedef struct xpviv XPVIV;
typedef struct xpvuv XPVUV;
typedef struct xpvnv XPVNV;
typedef struct xpvmg XPVMG;
typedef struct xpvlv XPVLV;
typedef struct xpvav XPVAV;
typedef struct xpvhv XPVHV;
typedef struct xpvgv XPVGV;
typedef struct xpvcv XPVCV;
typedef struct xpvbm XPVBM;
typedef struct xpvfm XPVFM;
typedef struct xpvio XPVIO;
typedef struct mgvtbl MGVTBL;
typedef union any ANY;

# 1 "handy.h" 1
# 108 "handy.h"
typedef char I8;
typedef unsigned char U8;





typedef short I16;
typedef unsigned short U16;






  typedef int I32;
  typedef unsigned int U32;
# 259 "handy.h"
typedef U16 line_t;
# 1091 "perl.h" 2




typedef I32 (*filter_t) (int, SV *, int);
# 1121 "perl.h"
# 1 "unixish.h" 1
# 94 "unixish.h"
# 1 "/usr/include/signal.h" 1 3 4
# 31 "/usr/include/signal.h" 3 4


# 1 "/usr/include/bits/sigset.h" 1 3 4
# 103 "/usr/include/bits/sigset.h" 3 4
extern int __sigismember (__const __sigset_t *, int);
extern int __sigaddset (__sigset_t *, int);
extern int __sigdelset (__sigset_t *, int);
# 34 "/usr/include/signal.h" 2 3 4







typedef __sig_atomic_t sig_atomic_t;

# 58 "/usr/include/signal.h" 3 4
# 1 "/usr/include/bits/signum.h" 1 3 4
# 59 "/usr/include/signal.h" 2 3 4
# 73 "/usr/include/signal.h" 3 4
typedef void (*__sighandler_t) (int);




extern __sighandler_t __sysv_signal (int __sig, __sighandler_t __handler)
     ;
# 88 "/usr/include/signal.h" 3 4






extern __sighandler_t signal (int __sig, __sighandler_t __handler) __asm__ ("" "__sysv_signal");








# 124 "/usr/include/signal.h" 3 4


extern int raise (int __sig) ;

# 146 "/usr/include/signal.h" 3 4
extern int __sigpause (int __sig_or_mask, int __is_sig) ;
# 373 "/usr/include/signal.h" 3 4
extern int __libc_current_sigrtmin (void) ;

extern int __libc_current_sigrtmax (void) ;




# 95 "unixish.h" 2
# 1122 "perl.h" 2
# 1248 "perl.h"
union any {
    void* any_ptr;
    I32 any_i32;
    IV any_iv;
    long any_long;
    void (*any_dptr) (void*);
};
# 1268 "perl.h"
# 1 "regexp.h" 1
# 12 "regexp.h"
struct regnode {
    U8 flags;
    U8 type;
    U16 next_off;
};

typedef struct regnode regnode;

struct reg_data {
    U32 count;
    U8 *what;
    void* data[1];
};

struct reg_substr_datum {
    I32 min_offset;
    I32 max_offset;
    SV *substr;
};

struct reg_substr_data {
    struct reg_substr_datum data[3];
};

typedef struct regexp {
 I32 refcnt;
 char **startp;
 char **endp;
 regnode *regstclass;
 I32 minlen;
 I32 prelen;
 U32 nparens;
 U32 lastparen;
 char *precomp;
 char *subbase;
 char *subbeg;
 char *subend;
 U16 naughty;
 U16 reganch;
# 62 "regexp.h"
        struct reg_substr_data *substrs;

        struct reg_data *data;
 regnode program[1];
} regexp;
# 1269 "perl.h" 2
# 1 "sv.h" 1
# 14 "sv.h"
typedef enum {
 SVt_NULL,
 SVt_IV,
 SVt_NV,
 SVt_RV,
 SVt_PV,
 SVt_PVIV,
 SVt_PVNV,
 SVt_PVMG,
 SVt_PVBM,
 SVt_PVLV,
 SVt_PVAV,
 SVt_PVHV,
 SVt_PVCV,
 SVt_PVGV,
 SVt_PVFM,
 SVt_PVIO
} svtype;



struct sv {
    void* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct gv {
    XPVGV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct cv {
    XPVCV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct av {
    XPVAV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct hv {
    XPVHV* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};

struct io {
    XPVIO* sv_any;
    U32 sv_refcnt;
    U32 sv_flags;
};
# 168 "sv.h"
struct xrv {
    SV * xrv_rv;
};

struct xpv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
};

struct xpviv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
};

struct xpvuv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    UV xuv_uv;
};

struct xpvnv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
};


struct xpvmg {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;
};

struct xpvlv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    STRLEN xlv_targoff;
    STRLEN xlv_targlen;
    SV* xlv_targ;
    char xlv_type;
};

struct xpvgv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    GP* xgv_gp;
    char* xgv_name;
    STRLEN xgv_namelen;
    HV* xgv_stash;
    U8 xgv_flags;
};

struct xpvbm {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    I32 xbm_useful;
    U16 xbm_previous;
    U8 xbm_rare;
};



typedef U16 cv_flags_t;

struct xpvfm {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    HV * xcv_stash;
    OP * xcv_start;
    OP * xcv_root;
    void (*xcv_xsub)(CV* );
    ANY xcv_xsubany;
    GV * xcv_gv;
    GV * xcv_filegv;
    long xcv_depth;
    AV * xcv_padlist;
    CV * xcv_outside;




    cv_flags_t xcv_flags;

    I32 xfm_lines;
};

struct xpvio {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xiv_iv;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    FILE * xio_ifp;
    FILE * xio_ofp;
    DIR * xio_dirp;
    long xio_lines;
    long xio_page;
    long xio_page_len;
    long xio_lines_left;
    char * xio_top_name;
    GV * xio_top_gv;
    char * xio_fmt_name;
    GV * xio_fmt_gv;
    char * xio_bottom_name;
    GV * xio_bottom_gv;
    short xio_subprocess;
    char xio_type;
    char xio_flags;
};
# 1270 "perl.h" 2
# 1 "util.h" 1
# 1271 "perl.h" 2
# 1 "form.h" 1
# 1272 "perl.h" 2
# 1 "gv.h" 1
# 10 "gv.h"
struct gp {
    SV * gp_sv;
    U32 gp_refcnt;
    struct io * gp_io;
    CV * gp_form;
    AV * gp_av;
    HV * gp_hv;
    GV * gp_egv;
    CV * gp_cv;
    U32 gp_cvgen;
    I32 gp_lastexpr;
    line_t gp_line;
    GV * gp_filegv;
};
# 1273 "perl.h" 2
# 1 "cv.h" 1
# 12 "cv.h"
struct xpvcv {
    char * xpv_pv;
    STRLEN xpv_cur;
    STRLEN xpv_len;
    IV xof_off;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    HV * xcv_stash;
    OP * xcv_start;
    OP * xcv_root;
    void (*xcv_xsub) (CV* );
    ANY xcv_xsubany;
    GV * xcv_gv;
    GV * xcv_filegv;
    long xcv_depth;
    AV * xcv_padlist;
    CV * xcv_outside;




    cv_flags_t xcv_flags;
};
# 1274 "perl.h" 2
# 1 "opcode.h" 1





typedef enum {
 OP_NULL,
 OP_STUB,
 OP_SCALAR,
 OP_PUSHMARK,
 OP_WANTARRAY,
 OP_CONST,
 OP_GVSV,
 OP_GV,
 OP_GELEM,
 OP_PADSV,
 OP_PADAV,
 OP_PADHV,
 OP_PADANY,
 OP_PUSHRE,
 OP_RV2GV,
 OP_RV2SV,
 OP_AV2ARYLEN,
 OP_RV2CV,
 OP_ANONCODE,
 OP_PROTOTYPE,
 OP_REFGEN,
 OP_SREFGEN,
 OP_REF,
 OP_BLESS,
 OP_BACKTICK,
 OP_GLOB,
 OP_READLINE,
 OP_RCATLINE,
 OP_REGCMAYBE,
 OP_REGCRESET,
 OP_REGCOMP,
 OP_MATCH,
 OP_QR,
 OP_SUBST,
 OP_SUBSTCONT,
 OP_TRANS,
 OP_SASSIGN,
 OP_AASSIGN,
 OP_CHOP,
 OP_SCHOP,
 OP_CHOMP,
 OP_SCHOMP,
 OP_DEFINED,
 OP_UNDEF,
 OP_STUDY,
 OP_POS,
 OP_PREINC,
 OP_I_PREINC,
 OP_PREDEC,
 OP_I_PREDEC,
 OP_POSTINC,
 OP_I_POSTINC,
 OP_POSTDEC,
 OP_I_POSTDEC,
 OP_POW,
 OP_MULTIPLY,
 OP_I_MULTIPLY,
 OP_DIVIDE,
 OP_I_DIVIDE,
 OP_MODULO,
 OP_I_MODULO,
 OP_REPEAT,
 OP_ADD,
 OP_I_ADD,
 OP_SUBTRACT,
 OP_I_SUBTRACT,
 OP_CONCAT,
 OP_STRINGIFY,
 OP_LEFT_SHIFT,
 OP_RIGHT_SHIFT,
 OP_LT,
 OP_I_LT,
 OP_GT,
 OP_I_GT,
 OP_LE,
 OP_I_LE,
 OP_GE,
 OP_I_GE,
 OP_EQ,
 OP_I_EQ,
 OP_NE,
 OP_I_NE,
 OP_NCMP,
 OP_I_NCMP,
 OP_SLT,
 OP_SGT,
 OP_SLE,
 OP_SGE,
 OP_SEQ,
 OP_SNE,
 OP_SCMP,
 OP_BIT_AND,
 OP_BIT_XOR,
 OP_BIT_OR,
 OP_NEGATE,
 OP_I_NEGATE,
 OP_NOT,
 OP_COMPLEMENT,
 OP_ATAN2,
 OP_SIN,
 OP_COS,
 OP_RAND,
 OP_SRAND,
 OP_EXP,
 OP_LOG,
 OP_SQRT,
 OP_INT,
 OP_HEX,
 OP_OCT,
 OP_ABS,
 OP_LENGTH,
 OP_SUBSTR,
 OP_VEC,
 OP_INDEX,
 OP_RINDEX,
 OP_SPRINTF,
 OP_FORMLINE,
 OP_ORD,
 OP_CHR,
 OP_CRYPT,
 OP_UCFIRST,
 OP_LCFIRST,
 OP_UC,
 OP_LC,
 OP_QUOTEMETA,
 OP_RV2AV,
 OP_AELEMFAST,
 OP_AELEM,
 OP_ASLICE,
 OP_EACH,
 OP_VALUES,
 OP_KEYS,
 OP_DELETE,
 OP_EXISTS,
 OP_RV2HV,
 OP_HELEM,
 OP_HSLICE,
 OP_UNPACK,
 OP_PACK,
 OP_SPLIT,
 OP_JOIN,
 OP_LIST,
 OP_LSLICE,
 OP_ANONLIST,
 OP_ANONHASH,
 OP_SPLICE,
 OP_PUSH,
 OP_POP,
 OP_SHIFT,
 OP_UNSHIFT,
 OP_SORT,
 OP_REVERSE,
 OP_GREPSTART,
 OP_GREPWHILE,
 OP_MAPSTART,
 OP_MAPWHILE,
 OP_RANGE,
 OP_FLIP,
 OP_FLOP,
 OP_AND,
 OP_OR,
 OP_XOR,
 OP_COND_EXPR,
 OP_ANDASSIGN,
 OP_ORASSIGN,
 OP_METHOD,
 OP_ENTERSUB,
 OP_LEAVESUB,
 OP_CALLER,
 OP_WARN,
 OP_DIE,
 OP_RESET,
 OP_LINESEQ,
 OP_NEXTSTATE,
 OP_DBSTATE,
 OP_UNSTACK,
 OP_ENTER,
 OP_LEAVE,
 OP_SCOPE,
 OP_ENTERITER,
 OP_ITER,
 OP_ENTERLOOP,
 OP_LEAVELOOP,
 OP_RETURN,
 OP_LAST,
 OP_NEXT,
 OP_REDO,
 OP_DUMP,
 OP_GOTO,
 OP_EXIT,
 OP_OPEN,
 OP_CLOSE,
 OP_PIPE_OP,
 OP_FILENO,
 OP_UMASK,
 OP_BINMODE,
 OP_TIE,
 OP_UNTIE,
 OP_TIED,
 OP_DBMOPEN,
 OP_DBMCLOSE,
 OP_SSELECT,
 OP_SELECT,
 OP_GETC,
 OP_READ,
 OP_ENTERWRITE,
 OP_LEAVEWRITE,
 OP_PRTF,
 OP_PRINT,
 OP_SYSOPEN,
 OP_SYSSEEK,
 OP_SYSREAD,
 OP_SYSWRITE,
 OP_SEND,
 OP_RECV,
 OP_EOF,
 OP_TELL,
 OP_SEEK,
 OP_TRUNCATE,
 OP_FCNTL,
 OP_IOCTL,
 OP_FLOCK,
 OP_SOCKET,
 OP_SOCKPAIR,
 OP_BIND,
 OP_CONNECT,
 OP_LISTEN,
 OP_ACCEPT,
 OP_SHUTDOWN,
 OP_GSOCKOPT,
 OP_SSOCKOPT,
 OP_GETSOCKNAME,
 OP_GETPEERNAME,
 OP_LSTAT,
 OP_STAT,
 OP_FTRREAD,
 OP_FTRWRITE,
 OP_FTREXEC,
 OP_FTEREAD,
 OP_FTEWRITE,
 OP_FTEEXEC,
 OP_FTIS,
 OP_FTEOWNED,
 OP_FTROWNED,
 OP_FTZERO,
 OP_FTSIZE,
 OP_FTMTIME,
 OP_FTATIME,
 OP_FTCTIME,
 OP_FTSOCK,
 OP_FTCHR,
 OP_FTBLK,
 OP_FTFILE,
 OP_FTDIR,
 OP_FTPIPE,
 OP_FTLINK,
 OP_FTSUID,
 OP_FTSGID,
 OP_FTSVTX,
 OP_FTTTY,
 OP_FTTEXT,
 OP_FTBINARY,
 OP_CHDIR,
 OP_CHOWN,
 OP_CHROOT,
 OP_UNLINK,
 OP_CHMOD,
 OP_UTIME,
 OP_RENAME,
 OP_LINK,
 OP_SYMLINK,
 OP_READLINK,
 OP_MKDIR,
 OP_RMDIR,
 OP_OPEN_DIR,
 OP_READDIR,
 OP_TELLDIR,
 OP_SEEKDIR,
 OP_REWINDDIR,
 OP_CLOSEDIR,
 OP_FORK,
 OP_WAIT,
 OP_WAITPID,
 OP_SYSTEM,
 OP_EXEC,
 OP_KILL,
 OP_GETPPID,
 OP_GETPGRP,
 OP_SETPGRP,
 OP_GETPRIORITY,
 OP_SETPRIORITY,
 OP_TIME,
 OP_TMS,
 OP_LOCALTIME,
 OP_GMTIME,
 OP_ALARM,
 OP_SLEEP,
 OP_SHMGET,
 OP_SHMCTL,
 OP_SHMREAD,
 OP_SHMWRITE,
 OP_MSGGET,
 OP_MSGCTL,
 OP_MSGSND,
 OP_MSGRCV,
 OP_SEMGET,
 OP_SEMCTL,
 OP_SEMOP,
 OP_REQUIRE,
 OP_DOFILE,
 OP_ENTEREVAL,
 OP_LEAVEEVAL,
 OP_ENTERTRY,
 OP_LEAVETRY,
 OP_GHBYNAME,
 OP_GHBYADDR,
 OP_GHOSTENT,
 OP_GNBYNAME,
 OP_GNBYADDR,
 OP_GNETENT,
 OP_GPBYNAME,
 OP_GPBYNUMBER,
 OP_GPROTOENT,
 OP_GSBYNAME,
 OP_GSBYPORT,
 OP_GSERVENT,
 OP_SHOSTENT,
 OP_SNETENT,
 OP_SPROTOENT,
 OP_SSERVENT,
 OP_EHOSTENT,
 OP_ENETENT,
 OP_EPROTOENT,
 OP_ESERVENT,
 OP_GPWNAM,
 OP_GPWUID,
 OP_GPWENT,
 OP_SPWENT,
 OP_EPWENT,
 OP_GGRNAM,
 OP_GGRGID,
 OP_GGRENT,
 OP_SGRENT,
 OP_EGRENT,
 OP_GETLOGIN,
 OP_SYSCALL,
 OP_LOCK,
 OP_THREADSV,
 OP_max
} opcode;




extern char *Perl_op_name[];
# 716 "opcode.h"
extern char *Perl_op_desc[];
# 1071 "opcode.h"


OP * Perl_ck_anoncode (OP* o);
OP * Perl_ck_bitop (OP* o);
OP * Perl_ck_concat (OP* o);
OP * Perl_ck_delete (OP* o);
OP * Perl_ck_eof (OP* o);
OP * Perl_ck_eval (OP* o);
OP * Perl_ck_exec (OP* o);
OP * Perl_ck_exists (OP* o);
OP * Perl_ck_ftst (OP* o);
OP * Perl_ck_fun (OP* o);
OP * Perl_ck_fun_locale (OP* o);
OP * Perl_ck_glob (OP* o);
OP * Perl_ck_grep (OP* o);
OP * Perl_ck_index (OP* o);
OP * Perl_ck_lengthconst (OP* o);
OP * Perl_ck_lfun (OP* o);
OP * Perl_ck_listiob (OP* o);
OP * Perl_ck_match (OP* o);
OP * Perl_ck_null (OP* o);
OP * Perl_ck_repeat (OP* o);
OP * Perl_ck_require (OP* o);
OP * Perl_ck_rfun (OP* o);
OP * Perl_ck_rvconst (OP* o);
OP * Perl_ck_scmp (OP* o);
OP * Perl_ck_select (OP* o);
OP * Perl_ck_shift (OP* o);
OP * Perl_ck_sort (OP* o);
OP * Perl_ck_spair (OP* o);
OP * Perl_ck_split (OP* o);
OP * Perl_ck_subr (OP* o);
OP * Perl_ck_svconst (OP* o);
OP * Perl_ck_trunc (OP* o);

OP * Perl_pp_null (void);
OP * Perl_pp_stub (void);
OP * Perl_pp_scalar (void);
OP * Perl_pp_pushmark (void);
OP * Perl_pp_wantarray (void);
OP * Perl_pp_const (void);
OP * Perl_pp_gvsv (void);
OP * Perl_pp_gv (void);
OP * Perl_pp_gelem (void);
OP * Perl_pp_padsv (void);
OP * Perl_pp_padav (void);
OP * Perl_pp_padhv (void);
OP * Perl_pp_padany (void);
OP * Perl_pp_pushre (void);
OP * Perl_pp_rv2gv (void);
OP * Perl_pp_rv2sv (void);
OP * Perl_pp_av2arylen (void);
OP * Perl_pp_rv2cv (void);
OP * Perl_pp_anoncode (void);
OP * Perl_pp_prototype (void);
OP * Perl_pp_refgen (void);
OP * Perl_pp_srefgen (void);
OP * Perl_pp_ref (void);
OP * Perl_pp_bless (void);
OP * Perl_pp_backtick (void);
OP * Perl_pp_glob (void);
OP * Perl_pp_readline (void);
OP * Perl_pp_rcatline (void);
OP * Perl_pp_regcmaybe (void);
OP * Perl_pp_regcreset (void);
OP * Perl_pp_regcomp (void);
OP * Perl_pp_match (void);
OP * Perl_pp_qr (void);
OP * Perl_pp_subst (void);
OP * Perl_pp_substcont (void);
OP * Perl_pp_trans (void);
OP * Perl_pp_sassign (void);
OP * Perl_pp_aassign (void);
OP * Perl_pp_chop (void);
OP * Perl_pp_schop (void);
OP * Perl_pp_chomp (void);
OP * Perl_pp_schomp (void);
OP * Perl_pp_defined (void);
OP * Perl_pp_undef (void);
OP * Perl_pp_study (void);
OP * Perl_pp_pos (void);
OP * Perl_pp_preinc (void);
OP * Perl_pp_preinc (void);
OP * Perl_pp_predec (void);
OP * Perl_pp_predec (void);
OP * Perl_pp_postinc (void);
OP * Perl_pp_postinc (void);
OP * Perl_pp_postdec (void);
OP * Perl_pp_postdec (void);
OP * Perl_pp_pow (void);
OP * Perl_pp_multiply (void);
OP * Perl_pp_i_multiply (void);
OP * Perl_pp_divide (void);
OP * Perl_pp_i_divide (void);
OP * Perl_pp_modulo (void);
OP * Perl_pp_i_modulo (void);
OP * Perl_pp_repeat (void);
OP * Perl_pp_add (void);
OP * Perl_pp_i_add (void);
OP * Perl_pp_subtract (void);
OP * Perl_pp_i_subtract (void);
OP * Perl_pp_concat (void);
OP * Perl_pp_stringify (void);
OP * Perl_pp_left_shift (void);
OP * Perl_pp_right_shift (void);
OP * Perl_pp_lt (void);
OP * Perl_pp_i_lt (void);
OP * Perl_pp_gt (void);
OP * Perl_pp_i_gt (void);
OP * Perl_pp_le (void);
OP * Perl_pp_i_le (void);
OP * Perl_pp_ge (void);
OP * Perl_pp_i_ge (void);
OP * Perl_pp_eq (void);
OP * Perl_pp_i_eq (void);
OP * Perl_pp_ne (void);
OP * Perl_pp_i_ne (void);
OP * Perl_pp_ncmp (void);
OP * Perl_pp_i_ncmp (void);
OP * Perl_pp_slt (void);
OP * Perl_pp_sgt (void);
OP * Perl_pp_sle (void);
OP * Perl_pp_sge (void);
OP * Perl_pp_seq (void);
OP * Perl_pp_sne (void);
OP * Perl_pp_scmp (void);
OP * Perl_pp_bit_and (void);
OP * Perl_pp_bit_xor (void);
OP * Perl_pp_bit_or (void);
OP * Perl_pp_negate (void);
OP * Perl_pp_i_negate (void);
OP * Perl_pp_not (void);
OP * Perl_pp_complement (void);
OP * Perl_pp_atan2 (void);
OP * Perl_pp_sin (void);
OP * Perl_pp_cos (void);
OP * Perl_pp_rand (void);
OP * Perl_pp_srand (void);
OP * Perl_pp_exp (void);
OP * Perl_pp_log (void);
OP * Perl_pp_sqrt (void);
OP * Perl_pp_int (void);
OP * Perl_pp_hex (void);
OP * Perl_pp_oct (void);
OP * Perl_pp_abs (void);
OP * Perl_pp_length (void);
OP * Perl_pp_substr (void);
OP * Perl_pp_vec (void);
OP * Perl_pp_index (void);
OP * Perl_pp_rindex (void);
OP * Perl_pp_sprintf (void);
OP * Perl_pp_formline (void);
OP * Perl_pp_ord (void);
OP * Perl_pp_chr (void);
OP * Perl_pp_crypt (void);
OP * Perl_pp_ucfirst (void);
OP * Perl_pp_lcfirst (void);
OP * Perl_pp_uc (void);
OP * Perl_pp_lc (void);
OP * Perl_pp_quotemeta (void);
OP * Perl_pp_rv2av (void);
OP * Perl_pp_aelemfast (void);
OP * Perl_pp_aelem (void);
OP * Perl_pp_aslice (void);
OP * Perl_pp_each (void);
OP * Perl_pp_values (void);
OP * Perl_pp_keys (void);
OP * Perl_pp_delete (void);
OP * Perl_pp_exists (void);
OP * Perl_pp_rv2hv (void);
OP * Perl_pp_helem (void);
OP * Perl_pp_hslice (void);
OP * Perl_pp_unpack (void);
OP * Perl_pp_pack (void);
OP * Perl_pp_split (void);
OP * Perl_pp_join (void);
OP * Perl_pp_list (void);
OP * Perl_pp_lslice (void);
OP * Perl_pp_anonlist (void);
OP * Perl_pp_anonhash (void);
OP * Perl_pp_splice (void);
OP * Perl_pp_push (void);
OP * Perl_pp_pop (void);
OP * Perl_pp_shift (void);
OP * Perl_pp_unshift (void);
OP * Perl_pp_sort (void);
OP * Perl_pp_reverse (void);
OP * Perl_pp_grepstart (void);
OP * Perl_pp_grepwhile (void);
OP * Perl_pp_mapstart (void);
OP * Perl_pp_mapwhile (void);
OP * Perl_pp_range (void);
OP * Perl_pp_flip (void);
OP * Perl_pp_flop (void);
OP * Perl_pp_and (void);
OP * Perl_pp_or (void);
OP * Perl_pp_xor (void);
OP * Perl_pp_cond_expr (void);
OP * Perl_pp_andassign (void);
OP * Perl_pp_orassign (void);
OP * Perl_pp_method (void);
OP * Perl_pp_entersub (void);
OP * Perl_pp_leavesub (void);
OP * Perl_pp_caller (void);
OP * Perl_pp_warn (void);
OP * Perl_pp_die (void);
OP * Perl_pp_reset (void);
OP * Perl_pp_lineseq (void);
OP * Perl_pp_nextstate (void);
OP * Perl_pp_dbstate (void);
OP * Perl_pp_unstack (void);
OP * Perl_pp_enter (void);
OP * Perl_pp_leave (void);
OP * Perl_pp_scope (void);
OP * Perl_pp_enteriter (void);
OP * Perl_pp_iter (void);
OP * Perl_pp_enterloop (void);
OP * Perl_pp_leaveloop (void);
OP * Perl_pp_return (void);
OP * Perl_pp_last (void);
OP * Perl_pp_next (void);
OP * Perl_pp_redo (void);
OP * Perl_pp_dump (void);
OP * Perl_pp_goto (void);
OP * Perl_pp_exit (void);
OP * Perl_pp_open (void);
OP * Perl_pp_close (void);
OP * Perl_pp_pipe_op (void);
OP * Perl_pp_fileno (void);
OP * Perl_pp_umask (void);
OP * Perl_pp_binmode (void);
OP * Perl_pp_tie (void);
OP * Perl_pp_untie (void);
OP * Perl_pp_tied (void);
OP * Perl_pp_dbmopen (void);
OP * Perl_pp_dbmclose (void);
OP * Perl_pp_sselect (void);
OP * Perl_pp_select (void);
OP * Perl_pp_getc (void);
OP * Perl_pp_read (void);
OP * Perl_pp_enterwrite (void);
OP * Perl_pp_leavewrite (void);
OP * Perl_pp_prtf (void);
OP * Perl_pp_print (void);
OP * Perl_pp_sysopen (void);
OP * Perl_pp_sysseek (void);
OP * Perl_pp_sysread (void);
OP * Perl_pp_syswrite (void);
OP * Perl_pp_send (void);
OP * Perl_pp_recv (void);
OP * Perl_pp_eof (void);
OP * Perl_pp_tell (void);
OP * Perl_pp_seek (void);
OP * Perl_pp_truncate (void);
OP * Perl_pp_fcntl (void);
OP * Perl_pp_ioctl (void);
OP * Perl_pp_flock (void);
OP * Perl_pp_socket (void);
OP * Perl_pp_sockpair (void);
OP * Perl_pp_bind (void);
OP * Perl_pp_connect (void);
OP * Perl_pp_listen (void);
OP * Perl_pp_accept (void);
OP * Perl_pp_shutdown (void);
OP * Perl_pp_gsockopt (void);
OP * Perl_pp_ssockopt (void);
OP * Perl_pp_getsockname (void);
OP * Perl_pp_getpeername (void);
OP * Perl_pp_lstat (void);
OP * Perl_pp_stat (void);
OP * Perl_pp_ftrread (void);
OP * Perl_pp_ftrwrite (void);
OP * Perl_pp_ftrexec (void);
OP * Perl_pp_fteread (void);
OP * Perl_pp_ftewrite (void);
OP * Perl_pp_fteexec (void);
OP * Perl_pp_ftis (void);
OP * Perl_pp_fteowned (void);
OP * Perl_pp_ftrowned (void);
OP * Perl_pp_ftzero (void);
OP * Perl_pp_ftsize (void);
OP * Perl_pp_ftmtime (void);
OP * Perl_pp_ftatime (void);
OP * Perl_pp_ftctime (void);
OP * Perl_pp_ftsock (void);
OP * Perl_pp_ftchr (void);
OP * Perl_pp_ftblk (void);
OP * Perl_pp_ftfile (void);
OP * Perl_pp_ftdir (void);
OP * Perl_pp_ftpipe (void);
OP * Perl_pp_ftlink (void);
OP * Perl_pp_ftsuid (void);
OP * Perl_pp_ftsgid (void);
OP * Perl_pp_ftsvtx (void);
OP * Perl_pp_fttty (void);
OP * Perl_pp_fttext (void);
OP * Perl_pp_ftbinary (void);
OP * Perl_pp_chdir (void);
OP * Perl_pp_chown (void);
OP * Perl_pp_chroot (void);
OP * Perl_pp_unlink (void);
OP * Perl_pp_chmod (void);
OP * Perl_pp_utime (void);
OP * Perl_pp_rename (void);
OP * Perl_pp_link (void);
OP * Perl_pp_symlink (void);
OP * Perl_pp_readlink (void);
OP * Perl_pp_mkdir (void);
OP * Perl_pp_rmdir (void);
OP * Perl_pp_open_dir (void);
OP * Perl_pp_readdir (void);
OP * Perl_pp_telldir (void);
OP * Perl_pp_seekdir (void);
OP * Perl_pp_rewinddir (void);
OP * Perl_pp_closedir (void);
OP * Perl_pp_fork (void);
OP * Perl_pp_wait (void);
OP * Perl_pp_waitpid (void);
OP * Perl_pp_system (void);
OP * Perl_pp_exec (void);
OP * Perl_pp_kill (void);
OP * Perl_pp_getppid (void);
OP * Perl_pp_getpgrp (void);
OP * Perl_pp_setpgrp (void);
OP * Perl_pp_getpriority (void);
OP * Perl_pp_setpriority (void);
OP * Perl_pp_time (void);
OP * Perl_pp_tms (void);
OP * Perl_pp_localtime (void);
OP * Perl_pp_gmtime (void);
OP * Perl_pp_alarm (void);
OP * Perl_pp_sleep (void);
OP * Perl_pp_shmget (void);
OP * Perl_pp_shmctl (void);
OP * Perl_pp_shmread (void);
OP * Perl_pp_shmwrite (void);
OP * Perl_pp_msgget (void);
OP * Perl_pp_msgctl (void);
OP * Perl_pp_msgsnd (void);
OP * Perl_pp_msgrcv (void);
OP * Perl_pp_semget (void);
OP * Perl_pp_semctl (void);
OP * Perl_pp_semop (void);
OP * Perl_pp_require (void);
OP * Perl_pp_dofile (void);
OP * Perl_pp_entereval (void);
OP * Perl_pp_leaveeval (void);
OP * Perl_pp_entertry (void);
OP * Perl_pp_leavetry (void);
OP * Perl_pp_ghbyname (void);
OP * Perl_pp_ghbyaddr (void);
OP * Perl_pp_ghostent (void);
OP * Perl_pp_gnbyname (void);
OP * Perl_pp_gnbyaddr (void);
OP * Perl_pp_gnetent (void);
OP * Perl_pp_gpbyname (void);
OP * Perl_pp_gpbynumber (void);
OP * Perl_pp_gprotoent (void);
OP * Perl_pp_gsbyname (void);
OP * Perl_pp_gsbyport (void);
OP * Perl_pp_gservent (void);
OP * Perl_pp_shostent (void);
OP * Perl_pp_snetent (void);
OP * Perl_pp_sprotoent (void);
OP * Perl_pp_sservent (void);
OP * Perl_pp_ehostent (void);
OP * Perl_pp_enetent (void);
OP * Perl_pp_eprotoent (void);
OP * Perl_pp_eservent (void);
OP * Perl_pp_gpwnam (void);
OP * Perl_pp_gpwuid (void);
OP * Perl_pp_gpwent (void);
OP * Perl_pp_spwent (void);
OP * Perl_pp_epwent (void);
OP * Perl_pp_ggrnam (void);
OP * Perl_pp_ggrgid (void);
OP * Perl_pp_ggrent (void);
OP * Perl_pp_sgrent (void);
OP * Perl_pp_egrent (void);
OP * Perl_pp_getlogin (void);
OP * Perl_pp_syscall (void);
OP * Perl_pp_lock (void);
OP * Perl_pp_threadsv (void);





extern OP * (*Perl_ppaddr[])(void);
# 1816 "opcode.h"
extern OP * (*Perl_check[]) (OP *op);
# 2173 "opcode.h"
extern U32 Perl_opargs[];
# 1275 "perl.h" 2
# 1 "op.h" 1
# 26 "op.h"
typedef U32 PADOFFSET;
# 146 "op.h"
struct op {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
};

struct unop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
};

struct binop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
};

struct logop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_other;
};

struct condop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_true;
    OP * op_false;
};

struct listop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
    U32 op_children;
};

struct pmop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
    U32 op_children;
    OP * op_pmreplroot;
    OP * op_pmreplstart;
    PMOP * op_pmnext;
    REGEXP * op_pmregexp;
    U16 op_pmflags;
    U16 op_pmpermflags;
    U8 op_pmdynflags;
};
# 218 "op.h"
struct svop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    SV * op_sv;
};

struct gvop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    GV * op_gv;
};

struct pvop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    char * op_pv;
};

struct loop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    OP * op_first;
    OP * op_last;
    U32 op_children;
    OP * op_redoop;
    OP * op_nextop;
    OP * op_lastop;
};
# 1276 "perl.h" 2
# 1 "cop.h" 1
# 10 "cop.h"
struct cop {
    OP* op_next; OP* op_sibling; OP* (*op_ppaddr)(void); PADOFFSET op_targ; U16 op_type; U16 op_seq; U8 op_flags; U8 op_private;
    char * cop_label;
    HV * cop_stash;
    GV * cop_filegv;
    U32 cop_seq;
    I32 cop_arybase;
    line_t cop_line;
};
# 27 "cop.h"
struct block_sub {
    CV * cv;
    GV * gv;
    GV * dfoutgv;

    AV * savearray;

    AV * argarray;
    U16 olddepth;
    U8 hasargs;
};
# 86 "cop.h"
struct block_eval {
    I32 old_in_eval;
    I32 old_op_type;
    char * old_name;
    OP * old_eval_root;
    SV * cur_text;
};
# 107 "cop.h"
struct block_loop {
    char * label;
    I32 resetsp;
    OP * redo_op;
    OP * next_op;
    OP * last_op;
    SV ** itervar;
    SV * itersave;
    SV * iterlval;
    AV * iterary;
    IV iterix;
    IV itermax;
};
# 152 "cop.h"
struct block {
    I32 blku_oldsp;
    COP * blku_oldcop;
    I32 blku_oldretsp;
    I32 blku_oldmarksp;
    I32 blku_oldscopesp;
    PMOP * blku_oldpm;
    U8 blku_gimme;

    union {
 struct block_sub blku_sub;
 struct block_eval blku_eval;
 struct block_loop blku_loop;
    } blk_u;
};
# 212 "cop.h"
struct subst {
    I32 sbu_iters;
    I32 sbu_maxiters;
    I32 sbu_safebase;
    I32 sbu_oldsave;
    bool sbu_once;
    bool sbu_rxtainted;
    char * sbu_orig;
    SV * sbu_dstr;
    SV * sbu_targ;
    char * sbu_s;
    char * sbu_m;
    char * sbu_strend;
    void * sbu_rxres;
    REGEXP * sbu_rx;
};
# 264 "cop.h"
struct context {
    U32 cx_type;
    union {
 struct block cx_blk;
 struct subst cx_subst;
    } cx_u;
};
# 316 "cop.h"
struct stackinfo {
    AV * si_stack;
    PERL_CONTEXT * si_cxstack;
    I32 si_cxix;
    I32 si_cxmax;
    I32 si_type;
    struct stackinfo * si_prev;
    struct stackinfo * si_next;
    I32 * si_markbase;


};

typedef struct stackinfo PERL_SI;
# 1277 "perl.h" 2
# 1 "av.h" 1
# 10 "av.h"
struct xpvav {
    char* xav_array;
    ssize_t xav_fill;
    ssize_t xav_max;
    IV xof_off;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    SV** xav_alloc;
    SV* xav_arylen;
    U8 xav_flags;
};
# 1278 "perl.h" 2
# 1 "hv.h" 1
# 10 "hv.h"
typedef struct he HE;
typedef struct hek HEK;

struct he {
    HE *hent_next;
    HEK *hent_hek;
    SV *hent_val;
};

struct hek {
    U32 hek_hash;
    I32 hek_len;
    char hek_key[1];
};


struct xpvhv {
    char * xhv_array;
    STRLEN xhv_fill;
    STRLEN xhv_max;
    IV xhv_keys;
    double xnv_nv;
    MAGIC* xmg_magic;
    HV* xmg_stash;

    I32 xhv_riter;
    HE *xhv_eiter;
    PMOP *xhv_pmroot;
    char *xhv_name;
};
# 1279 "perl.h" 2
# 1 "mg.h" 1
# 13 "mg.h"
struct mgvtbl {
    int (*svt_get) (SV *sv, MAGIC* mg);
    int (*svt_set) (SV *sv, MAGIC* mg);
    U32 (*svt_len) (SV *sv, MAGIC* mg);
    int (*svt_clear) (SV *sv, MAGIC* mg);
    int (*svt_free) (SV *sv, MAGIC* mg);
};


struct magic {
    MAGIC* mg_moremagic;
    MGVTBL* mg_virtual;
    U16 mg_private;
    char mg_type;
    U8 mg_flags;
    SV* mg_obj;
    char* mg_ptr;
    I32 mg_len;
};
# 1280 "perl.h" 2
# 1 "scope.h" 1
# 131 "scope.h"
struct jmpenv {
    struct jmpenv * je_prev;
    jmp_buf je_buf;
    int je_ret;
    bool je_mustcatch;
};

typedef struct jmpenv JMPENV;
# 1281 "perl.h" 2
# 1 "bytecode.h" 1
typedef char *pvcontents;
typedef char *strconst;
typedef U32 PV;
typedef char *op_tr_array;
typedef int comment_t;
typedef SV *svindex;
typedef OP *opindex;
typedef IV IV64;
# 1282 "perl.h" 2
# 1 "byterun.h" 1
# 20 "byterun.h"
void *Perl_bset_obj_store (void *, I32);

enum {
    INSN_RET,
    INSN_LDSV,
    INSN_LDOP,
    INSN_STSV,
    INSN_STOP,
    INSN_LDSPECSV,
    INSN_NEWSV,
    INSN_NEWOP,
    INSN_NEWOPN,
    INSN_NEWPV,
    INSN_NOP,
    INSN_PV_CUR,
    INSN_PV_FREE,
    INSN_SV_UPGRADE,
    INSN_SV_REFCNT,
    INSN_SV_REFCNT_ADD,
    INSN_SV_FLAGS,
    INSN_XRV,
    INSN_XPV,
    INSN_XIV32,
    INSN_XIV64,
    INSN_XNV,
    INSN_XLV_TARGOFF,
    INSN_XLV_TARGLEN,
    INSN_XLV_TARG,
    INSN_XLV_TYPE,
    INSN_XBM_USEFUL,
    INSN_XBM_PREVIOUS,
    INSN_XBM_RARE,
    INSN_XFM_LINES,
    INSN_XIO_LINES,
    INSN_XIO_PAGE,
    INSN_XIO_PAGE_LEN,
    INSN_XIO_LINES_LEFT,
    INSN_XIO_TOP_NAME,
    INSN_COMMENT,
    INSN_XIO_TOP_GV,
    INSN_XIO_FMT_NAME,
    INSN_XIO_FMT_GV,
    INSN_XIO_BOTTOM_NAME,
    INSN_XIO_BOTTOM_GV,
    INSN_XIO_SUBPROCESS,
    INSN_XIO_TYPE,
    INSN_XIO_FLAGS,
    INSN_XCV_STASH,
    INSN_XCV_START,
    INSN_XCV_ROOT,
    INSN_XCV_GV,
    INSN_XCV_FILEGV,
    INSN_XCV_DEPTH,
    INSN_XCV_PADLIST,
    INSN_XCV_OUTSIDE,
    INSN_XCV_FLAGS,
    INSN_AV_EXTEND,
    INSN_AV_PUSH,
    INSN_XAV_FILL,
    INSN_XAV_MAX,
    INSN_XAV_FLAGS,
    INSN_XHV_RITER,
    INSN_XHV_NAME,
    INSN_HV_STORE,
    INSN_SV_MAGIC,
    INSN_MG_OBJ,
    INSN_MG_PRIVATE,
    INSN_MG_FLAGS,
    INSN_MG_PV,
    INSN_XMG_STASH,
    INSN_GV_FETCHPV,
    INSN_GV_STASHPV,
    INSN_GP_SV,
    INSN_GP_REFCNT,
    INSN_GP_REFCNT_ADD,
    INSN_GP_AV,
    INSN_GP_HV,
    INSN_GP_CV,
    INSN_GP_FILEGV,
    INSN_GP_IO,
    INSN_GP_FORM,
    INSN_GP_CVGEN,
    INSN_GP_LINE,
    INSN_GP_SHARE,
    INSN_XGV_FLAGS,
    INSN_OP_NEXT,
    INSN_OP_SIBLING,
    INSN_OP_PPADDR,
    INSN_OP_TARG,
    INSN_OP_TYPE,
    INSN_OP_SEQ,
    INSN_OP_FLAGS,
    INSN_OP_PRIVATE,
    INSN_OP_FIRST,
    INSN_OP_LAST,
    INSN_OP_OTHER,
    INSN_OP_TRUE,
    INSN_OP_FALSE,
    INSN_OP_CHILDREN,
    INSN_OP_PMREPLROOT,
    INSN_OP_PMREPLROOTGV,
    INSN_OP_PMREPLSTART,
    INSN_OP_PMNEXT,
    INSN_PREGCOMP,
    INSN_OP_PMFLAGS,
    INSN_OP_PMPERMFLAGS,
    INSN_OP_SV,
    INSN_OP_GV,
    INSN_OP_PV,
    INSN_OP_PV_TR,
    INSN_OP_REDOOP,
    INSN_OP_NEXTOP,
    INSN_OP_LASTOP,
    INSN_COP_LABEL,
    INSN_COP_STASH,
    INSN_COP_FILEGV,
    INSN_COP_SEQ,
    INSN_COP_ARYBASE,
    INSN_COP_LINE,
    INSN_MAIN_START,
    INSN_MAIN_ROOT,
    INSN_CURPAD,
    MAX_INSN = 118
};

enum {
    OPt_OP,
    OPt_UNOP,
    OPt_BINOP,
    OPt_LOGOP,
    OPt_CONDOP,
    OPt_LISTOP,
    OPt_PMOP,
    OPt_SVOP,
    OPt_GVOP,
    OPt_PVOP,
    OPt_LOOP,
    OPt_COP
};

extern int optype_size[]
# 177 "byterun.h"
;
# 1283 "perl.h" 2


typedef struct curcur CURCUR;
struct curcur {
    int parenfloor;
    int cur;
    int min;
    int max;
    int minmod;
    regnode * scan;
    regnode * next;
    char * lastloc;
    CURCUR * oldcc;
};

typedef struct _sublex_info SUBLEXINFO;
struct _sublex_info {
    I32 super_state;
    I32 sub_inwhat;
    OP *sub_op;
};
# 1397 "perl.h"
  short htovs (short);


  long htovl (long);


  short vtohs (short);


  long vtohl (long);







 U32 Perl_cast_ulong (double);
# 1425 "perl.h"

I32 cast_i32 (double);
IV cast_iv (double);
UV cast_uv (double);






struct Outrec {
    I32 o_lines;
    char *o_str;
    U32 o_len;
};
# 1450 "perl.h"
uid_t getuid (void);
uid_t geteuid (void);
gid_t getgid (void);
gid_t getegid (void);
# 1517 "perl.h"
struct ufuncs {
    I32 (*uf_val)(IV, SV*);
    I32 (*uf_set)(IV, SV*);
    IV uf_index;
};



char *mktemp (char*);
double atof (const char*);
# 1544 "perl.h"
# 1 "/usr/include/math.h" 1 3 4
# 29 "/usr/include/math.h" 3 4




# 1 "/usr/include/bits/huge_val.h" 1 3 4
# 34 "/usr/include/math.h" 2 3 4






# 1 "/usr/include/bits/mathdef.h" 1 3 4
# 41 "/usr/include/math.h" 2 3 4
# 65 "/usr/include/math.h" 3 4
# 1 "/usr/include/bits/mathcalls.h" 1 3 4
# 53 "/usr/include/bits/mathcalls.h" 3 4


extern double acos (double __x) ; extern double __acos (double __x) ;

extern double asin (double __x) ; extern double __asin (double __x) ;

extern double atan (double __x) ; extern double __atan (double __x) ;

extern double atan2 (double __y, double __x) ; extern double __atan2 (double __y, double __x) ;


extern double cos (double __x) ; extern double __cos (double __x) ;

extern double sin (double __x) ; extern double __sin (double __x) ;

extern double tan (double __x) ; extern double __tan (double __x) ;




extern double cosh (double __x) ; extern double __cosh (double __x) ;

extern double sinh (double __x) ; extern double __sinh (double __x) ;

extern double tanh (double __x) ; extern double __tanh (double __x) ;

# 99 "/usr/include/bits/mathcalls.h" 3 4


extern double exp (double __x) ; extern double __exp (double __x) ;


extern double frexp (double __x, int *__exponent) ; extern double __frexp (double __x, int *__exponent) ;


extern double ldexp (double __x, int __exponent) ; extern double __ldexp (double __x, int __exponent) ;


extern double log (double __x) ; extern double __log (double __x) ;


extern double log10 (double __x) ; extern double __log10 (double __x) ;


extern double modf (double __x, double *__iptr) ; extern double __modf (double __x, double *__iptr) ;

# 152 "/usr/include/bits/mathcalls.h" 3 4


extern double pow (double __x, double __y) ; extern double __pow (double __x, double __y) ;


extern double sqrt (double __x) ; extern double __sqrt (double __x) ;

# 177 "/usr/include/bits/mathcalls.h" 3 4


extern double ceil (double __x) ; extern double __ceil (double __x) ;


extern double fabs (double __x) ; extern double __fabs (double __x) ;


extern double floor (double __x) ; extern double __floor (double __x) ;


extern double fmod (double __x, double __y) ; extern double __fmod (double __x, double __y) ;




extern int __isinf (double __value) ;


extern int __finite (double __value) ;

# 231 "/usr/include/bits/mathcalls.h" 3 4
extern int __isnan (double __value) ;
# 66 "/usr/include/math.h" 2 3 4
# 423 "/usr/include/math.h" 3 4

# 1545 "perl.h" 2
# 1566 "perl.h"
char *crypt (const char*, const char*);




char *getenv (const char*);

off_t lseek (int,off_t,int);

char *getlogin (void);
# 1598 "perl.h"
typedef void (*Sighandler_t) (int);




typedef Sighandler_t Sigsave_t;
# 1650 "perl.h"
typedef int runops_proc_t (void);
int Perl_runops_standard (void);
# 1665 "perl.h"
extern char ** environ;
# 1678 "perl.h"
extern int * Perl_di;
extern short * Perl_ds;
extern char * Perl_dc;


extern const char Perl_warn_uninit[]
  ;
extern const char Perl_warn_nosemi[]
  ;
extern const char Perl_warn_reserved[]
  ;
extern const char Perl_warn_nl[]
  ;
extern const char Perl_no_wrongref[]
  ;
extern const char Perl_no_symref[]
  ;
extern const char Perl_no_usym[]
  ;
extern const char Perl_no_aelem[]
  ;
extern const char Perl_no_helem[]
  ;
extern const char Perl_no_modify[]
  ;
extern const char Perl_no_mem[]
  ;
extern const char Perl_no_security[]
  ;
extern const char Perl_no_sock_func[]
  ;
extern const char Perl_no_dir_func[]
  ;
extern const char Perl_no_func[]
  ;
extern const char Perl_no_myglob[]
  ;







extern char *Perl_sig_name[];
extern int Perl_sig_num[];
extern SV * Perl_psig_ptr[];
extern SV * Perl_psig_name[];
# 1803 "perl.h"
extern const unsigned char Perl_fold[];
# 1842 "perl.h"
extern unsigned char Perl_fold_locale[];
# 1918 "perl.h"
extern const unsigned char Perl_freq[];
# 1941 "perl.h"
# 1 "perly.h" 1
# 59 "perly.h"
typedef union {
    I32 ival;
    char *pval;
    OP *opval;
    GV *gvval;
} YYSTYPE;
extern YYSTYPE Perl_yylval;
# 1942 "perl.h" 2



typedef enum {
    XOPERATOR,
    XTERM,
    XREF,
    XSTATE,
    XBLOCK,
    XTERMBLOCK
} expectation;

enum {
    want_vtbl_sv,
    want_vtbl_env,
    want_vtbl_envelem,
    want_vtbl_sig,
    want_vtbl_sigelem,
    want_vtbl_pack,
    want_vtbl_packelem,
    want_vtbl_dbline,
    want_vtbl_isa,
    want_vtbl_isaelem,
    want_vtbl_arylen,
    want_vtbl_glob,
    want_vtbl_mglob,
    want_vtbl_nkeys,
    want_vtbl_taint,
    want_vtbl_substr,
    want_vtbl_vec,
    want_vtbl_pos,
    want_vtbl_bm,
    want_vtbl_fm,
    want_vtbl_uvar,
    want_vtbl_defelem,
    want_vtbl_regexp,
    want_vtbl_collxfrm,
    want_vtbl_amagic,
    want_vtbl_amagicelem




};
# 2022 "perl.h"
typedef regexp*(*regcomp_t) (char* exp, char* xend, PMOP* pm);
typedef I32 (*regexec_t) (regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags);
# 2035 "perl.h"
typedef struct exitlistentry {



    void (*fn) (void*);

    void *ptr;
} PerlExitListEntry;
# 2094 "perl.h"
struct interpreter {
    char broiled;
};
# 2112 "perl.h"
typedef void *Thread;







# 1 "thread.h" 1
# 2121 "perl.h" 2
# 1 "pp.h" 1
# 2122 "perl.h" 2
# 1 "proto.h" 1
# 9 "proto.h"

# 26 "proto.h"
 SV* Perl_amagic_call (SV* left,SV* right,int method,int dir);
 bool Perl_Gv_AMupdate (HV* stash);

 OP* Perl_append_elem (I32 optype, OP* head, OP* tail);
 OP* Perl_append_list (I32 optype, LISTOP* first, LISTOP* last);
 I32 Perl_apply (I32 type, SV** mark, SV** sp);
 void Perl_assertref (OP* o);
 bool Perl_avhv_exists_ent (AV *ar, SV* keysv, U32 hash);
 SV** Perl_avhv_fetch_ent (AV *ar, SV* keysv, I32 lval, U32 hash);
 HE* Perl_avhv_iternext (AV *ar);
 SV* Perl_avhv_iterval (AV *ar, HE* entry);
 HV* Perl_avhv_keys (AV *ar);
 void Perl_av_clear (AV* ar);
 void Perl_av_extend (AV* ar, I32 key);
 AV* Perl_av_fake (I32 size, SV** svp);
 SV** Perl_av_fetch (AV* ar, I32 key, I32 lval);
 void Perl_av_fill (AV* ar, I32 fill);
 I32 Perl_av_len (AV* ar);
 AV* Perl_av_make (I32 size, SV** svp);
 SV* Perl_av_pop (AV* ar);
 void Perl_av_push (AV* ar, SV* val);
 void Perl_av_reify (AV* ar);
 SV* Perl_av_shift (AV* ar);
 SV** Perl_av_store (AV* ar, I32 key, SV* val);
 void Perl_av_undef (AV* ar);
 void Perl_av_unshift (AV* ar, I32 num);
 OP* Perl_bind_match (I32 type, OP* left, OP* pat);
 OP* Perl_block_end (I32 floor, OP* seq);
 I32 Perl_block_gimme (void);
 int Perl_block_start (int full);
 void Perl_boot_core_UNIVERSAL (void);
 void Perl_call_list (I32 oldscope, AV* av_list);
 I32 Perl_cando (I32 bit, I32 effective, struct stat* statbufp);

 U32 Perl_cast_ulong (double f);




 OP* Perl_ck_gvconst (OP* o);
 OP* Perl_ck_retarget (OP* o);



 OP* Perl_convert (I32 optype, I32 flags, OP* o);
 void Perl_croak (const char* pat,...) ;
 void Perl_cv_ckproto (CV* cv, GV* gv, char* p);
 CV* Perl_cv_clone (CV* proto);
 SV* Perl_cv_const_sv (CV* cv);
 SV* Perl_op_const_sv (OP* o, CV* cv);
 void Perl_cv_undef (CV* cv);
 void Perl_cx_dump (PERL_CONTEXT* cs);
 SV* Perl_filter_add (filter_t funcp, SV* datasv);
 void Perl_filter_del (filter_t funcp);
 I32 Perl_filter_read (int idx, SV* buffer, int maxlen);
 char ** Perl_get_op_descs (void);
 char ** Perl_get_op_names (void);
 char * Perl_get_no_modify (void);
 U32 * Perl_get_opargs (void);
 I32 Perl_cxinc (void);
 void Perl_deb (const char* pat,...);
 void Perl_deb_growlevel (void);
 void Perl_debprofdump (void);
 I32 Perl_debop (OP* o);
 I32 Perl_debstack (void);
 I32 Perl_debstackptrs (void);
 char* Perl_delimcpy (char* to, char* toend, char* from, char* fromend, int delim, I32* retlen);

 void Perl_deprecate (char* s);
 OP* Perl_die (const char* pat,...);
 OP* Perl_die_where (char* message);
 void Perl_dounwind (I32 cxix);
 bool Perl_do_aexec (SV* really, SV** mark, SV** sp);
 int Perl_do_binmode (FILE *fp, int iotype, int flag);
 void Perl_do_chop (SV* asv, SV* sv);
 bool Perl_do_close (GV* gv, bool not_implicit);
 bool Perl_do_eof (GV* gv);
 bool Perl_do_exec (char* cmd);
 void Perl_do_execfree (void);




 void Perl_do_join (SV* sv, SV* del, SV** mark, SV** sp);
 OP* Perl_do_kv (void);




 bool Perl_do_open (GV* gv, char* name, I32 len, int as_raw, int rawmode, int rawperm, FILE* supplied_fp);

 void Perl_do_pipe (SV* sv, GV* rgv, GV* wgv);
 bool Perl_do_print (SV* sv, FILE* fp);
 OP* Perl_do_readline (void);
 I32 Perl_do_chomp (SV* sv);
 bool Perl_do_seek (GV* gv, long pos, int whence);




 void Perl_do_sprintf (SV* sv, I32 len, SV** sarg);
 long Perl_do_sysseek (GV* gv, long pos, int whence);
 long Perl_do_tell (GV* gv);
 I32 Perl_do_trans (SV* sv, OP* arg);
 void Perl_do_vecset (SV* sv);
 void Perl_do_vop (I32 optype, SV* sv, SV* left, SV* right);
 I32 Perl_dowantarray (void);
 void Perl_dump_all (void);
 void Perl_dump_eval (void);



 void Perl_dump_form (GV* gv);
 void Perl_dump_gv (GV* gv);



 void Perl_dump_op (OP* arg);
 void Perl_dump_pm (PMOP* pm);
 void Perl_dump_packsubs (HV* stash);
 void Perl_dump_sub (GV* gv);
 void Perl_fbm_compile (SV* sv, U32 flags);
 char* Perl_fbm_instr (unsigned char* big, unsigned char* bigend, SV* littlesv, U32 flags);
 char* Perl_find_script (char *scriptname, bool dosearch, char **search_ext, I32 flags);



 OP* Perl_force_list (OP* arg);
 OP* Perl_fold_constants (OP* arg);
 char* Perl_form (const char* pat, ...);
 void Perl_free_tmps (void);
 OP* Perl_gen_constant_list (OP* o);
 void Perl_gp_free (GV* gv);
 GP* Perl_gp_ref (GP* gp);
 GV* Perl_gv_AVadd (GV* gv);
 GV* Perl_gv_HVadd (GV* gv);
 GV* Perl_gv_IOadd (GV* gv);
 GV* Perl_gv_autoload4 (HV* stash, char* name, STRLEN len, I32 method);
 void Perl_gv_check (HV* stash);
 void Perl_gv_efullname (SV* sv, GV* gv);
 void Perl_gv_efullname3 (SV* sv, GV* gv, char* prefix);
 GV* Perl_gv_fetchfile (char* name);
 GV* Perl_gv_fetchmeth (HV* stash, char* name, STRLEN len, I32 level);
 GV* Perl_gv_fetchmethod (HV* stash, char* name);
 GV* Perl_gv_fetchmethod_autoload (HV* stash, char* name, I32 autoload);
 GV* Perl_gv_fetchpv (char* name, I32 add, I32 sv_type);
 void Perl_gv_fullname (SV* sv, GV* gv);
 void Perl_gv_fullname3 (SV* sv, GV* gv, char* prefix);
 void Perl_gv_init (GV* gv, HV* stash, char* name, STRLEN len, int multi);
 HV* Perl_gv_stashpv (char* name, I32 create);
 HV* Perl_gv_stashpvn (char* name, U32 namelen, I32 create);
 HV* Perl_gv_stashsv (SV* sv, I32 create);
 void Perl_hv_clear (HV* tb);
 void Perl_hv_delayfree_ent (HV* hv, HE* entry);
 SV* Perl_hv_delete (HV* tb, char* key, U32 klen, I32 flags);
 SV* Perl_hv_delete_ent (HV* tb, SV* key, I32 flags, U32 hash);
 bool Perl_hv_exists (HV* tb, char* key, U32 klen);
 bool Perl_hv_exists_ent (HV* tb, SV* key, U32 hash);
 SV** Perl_hv_fetch (HV* tb, char* key, U32 klen, I32 lval);
 HE* Perl_hv_fetch_ent (HV* tb, SV* key, I32 lval, U32 hash);
 void Perl_hv_free_ent (HV* hv, HE* entry);
 I32 Perl_hv_iterinit (HV* tb);
 char* Perl_hv_iterkey (HE* entry, I32* retlen);
 SV* Perl_hv_iterkeysv (HE* entry);
 HE* Perl_hv_iternext (HV* tb);
 SV* Perl_hv_iternextsv (HV* hv, char** key, I32* retlen);
 SV* Perl_hv_iterval (HV* tb, HE* entry);
 void Perl_hv_ksplit (HV* hv, IV newmax);
 void Perl_hv_magic (HV* hv, GV* gv, int how);
 SV** Perl_hv_store (HV* tb, char* key, U32 klen, SV* val, U32 hash);
 HE* Perl_hv_store_ent (HV* tb, SV* key, SV* val, U32 hash);
 void Perl_hv_undef (HV* tb);
 I32 Perl_ibcmp (char* a, char* b, I32 len);
 I32 Perl_ibcmp_locale (char* a, char* b, I32 len);
 I32 Perl_ingroup (I32 testgid, I32 effective);
 void Perl_init_stacks (void);
 U32 Perl_intro_my (void);
 char* Perl_instr (char* big, char* little);
 bool Perl_io_close (IO* io);
 OP* Perl_invert (OP* cmd);
 OP* Perl_jmaybe (OP* arg);
 I32 Perl_keyword (char* d, I32 len);
 void Perl_leave_scope (I32 base);
 void Perl_lex_end (void);
 void Perl_lex_start (SV* line);
 OP* Perl_linklist (OP* o);
 OP* Perl_list (OP* o);
 OP* Perl_listkids (OP* o);
 OP* Perl_localize (OP* arg, I32 lexical);
 I32 Perl_looks_like_number (SV* sv);
 int Perl_magic_clearenv (SV* sv, MAGIC* mg);
 int Perl_magic_clear_all_env (SV* sv, MAGIC* mg);
 int Perl_magic_clearpack (SV* sv, MAGIC* mg);
 int Perl_magic_clearsig (SV* sv, MAGIC* mg);
 int Perl_magic_existspack (SV* sv, MAGIC* mg);
 int Perl_magic_freeregexp (SV* sv, MAGIC* mg);
 int Perl_magic_get (SV* sv, MAGIC* mg);
 int Perl_magic_getarylen (SV* sv, MAGIC* mg);
 int Perl_magic_getdefelem (SV* sv, MAGIC* mg);
 int Perl_magic_getglob (SV* sv, MAGIC* mg);
 int Perl_magic_getnkeys (SV* sv, MAGIC* mg);
 int Perl_magic_getpack (SV* sv, MAGIC* mg);
 int Perl_magic_getpos (SV* sv, MAGIC* mg);
 int Perl_magic_getsig (SV* sv, MAGIC* mg);
 int Perl_magic_getsubstr (SV* sv, MAGIC* mg);
 int Perl_magic_gettaint (SV* sv, MAGIC* mg);
 int Perl_magic_getuvar (SV* sv, MAGIC* mg);
 int Perl_magic_getvec (SV* sv, MAGIC* mg);
 U32 Perl_magic_len (SV* sv, MAGIC* mg);



 int Perl_magic_nextpack (SV* sv, MAGIC* mg, SV* key);
 int Perl_magic_set (SV* sv, MAGIC* mg);

 int Perl_magic_setamagic (SV* sv, MAGIC* mg);

 int Perl_magic_setarylen (SV* sv, MAGIC* mg);
 int Perl_magic_setbm (SV* sv, MAGIC* mg);
 int Perl_magic_setdbline (SV* sv, MAGIC* mg);



 int Perl_magic_setdefelem (SV* sv, MAGIC* mg);
 int Perl_magic_setenv (SV* sv, MAGIC* mg);
 int Perl_magic_setfm (SV* sv, MAGIC* mg);
 int Perl_magic_setisa (SV* sv, MAGIC* mg);
 int Perl_magic_setglob (SV* sv, MAGIC* mg);
 int Perl_magic_setmglob (SV* sv, MAGIC* mg);
 int Perl_magic_setnkeys (SV* sv, MAGIC* mg);
 int Perl_magic_setpack (SV* sv, MAGIC* mg);
 int Perl_magic_setpos (SV* sv, MAGIC* mg);
 int Perl_magic_setsig (SV* sv, MAGIC* mg);
 int Perl_magic_setsubstr (SV* sv, MAGIC* mg);
 int Perl_magic_settaint (SV* sv, MAGIC* mg);
 int Perl_magic_setuvar (SV* sv, MAGIC* mg);
 int Perl_magic_setvec (SV* sv, MAGIC* mg);
 int Perl_magic_set_all_env (SV* sv, MAGIC* mg);
 U32 Perl_magic_sizepack (SV* sv, MAGIC* mg);
 int Perl_magic_wipepack (SV* sv, MAGIC* mg);
 void Perl_magicname (char* sym, char* name, I32 namlen);
int main (int argc, char** argv, char** env);



 void Perl_markstack_grow (void);



 char* Perl_mess (const char* pat, va_list* args);
 int Perl_mg_clear (SV* sv);
 int Perl_mg_copy (SV* sv, SV* nsv, char* key, I32 klen);
 MAGIC* Perl_mg_find (SV* sv, int type);
 int Perl_mg_free (SV* sv);
 int Perl_mg_get (SV* sv);
 U32 Perl_mg_length (SV* sv);
 void Perl_mg_magical (SV* sv);
 int Perl_mg_set (SV* sv);
 I32 Perl_mg_size (SV* sv);
 OP* Perl_mod (OP* o, I32 type);
 char* Perl_moreswitches (char* s);
 OP* Perl_my (OP* o);

 char* Perl_my_bcopy (char* from, char* to, I32 len);




 void Perl_my_exit (U32 status) ;
 void Perl_my_failure_exit (void) ;
 I32 Perl_my_lstat (void);

 I32 Perl_my_memcmp (char* s1, char* s2, I32 len);





 I32 Perl_my_pclose (FILE* ptr);
 FILE* Perl_my_popen (char* cmd, char* mode);

 void Perl_my_setenv (char* nam, char* val);
 I32 Perl_my_stat (void);

 short Perl_my_swap (short s);
 long Perl_my_htonl (long l);
 long Perl_my_ntohl (long l);

 void Perl_my_unexec (void);
 OP* Perl_newANONLIST (OP* o);
 OP* Perl_newANONHASH (OP* o);
 OP* Perl_newANONSUB (I32 floor, OP* proto, OP* block);
 OP* Perl_newASSIGNOP (I32 flags, OP* left, I32 optype, OP* right);
 OP* Perl_newCONDOP (I32 flags, OP* expr, OP* trueop, OP* falseop);
 void Perl_newCONSTSUB (HV* stash, char* name, SV* sv);
 void Perl_newFORM (I32 floor, OP* o, OP* block);
 OP* Perl_newFOROP (I32 flags, char* label, line_t forline, OP* sclr, OP* expr, OP*block, OP*cont);
 OP* Perl_newLOGOP (I32 optype, I32 flags, OP* left, OP* right);
 OP* Perl_newLOOPEX (I32 type, OP* label);
 OP* Perl_newLOOPOP (I32 flags, I32 debuggable, OP* expr, OP* block);
 OP* Perl_newNULLLIST (void);
 OP* Perl_newOP (I32 optype, I32 flags);
 void Perl_newPROG (OP* o);
 OP* Perl_newRANGE (I32 flags, OP* left, OP* right);
 OP* Perl_newSLICEOP (I32 flags, OP* subscript, OP* Perl_list);
 OP* Perl_newSTATEOP (I32 flags, char* label, OP* o);
 CV* Perl_newSUB (I32 floor, OP* o, OP* proto, OP* block);
 CV* Perl_newXS (char* name, void (*subaddr)(CV* cv ), char* filename);
 AV* Perl_newAV (void);
 OP* Perl_newAVREF (OP* o);
 OP* Perl_newBINOP (I32 type, I32 flags, OP* first, OP* last);
 OP* Perl_newCVREF (I32 flags, OP* o);
 OP* Perl_newGVOP (I32 type, I32 flags, GV* gv);
 GV* Perl_newGVgen (char* pack);
 OP* Perl_newGVREF (I32 type, OP* o);
 OP* Perl_newHVREF (OP* o);
 HV* Perl_newHV (void);
 HV* Perl_newHVhv (HV* hv);
 IO* Perl_newIO (void);
 OP* Perl_newLISTOP (I32 type, I32 flags, OP* first, OP* last);
 OP* Perl_newPMOP (I32 type, I32 flags);
 OP* Perl_newPVOP (I32 type, I32 flags, char* pv);
 SV* Perl_newRV (SV* pref);
 SV* Perl_newRV_noinc (SV *sv);
 SV* Perl_newSV (STRLEN len);
 OP* Perl_newSVREF (OP* o);
 OP* Perl_newSVOP (I32 type, I32 flags, SV* sv);
 SV* Perl_newSViv (IV i);
 SV* Perl_newSVnv (double n);
 SV* Perl_newSVpv (char* s, STRLEN len);
 SV* Perl_newSVpvn (char *s, STRLEN len);
 SV* Perl_newSVpvf (const char* pat, ...);
 SV* Perl_newSVrv (SV* rv, char* classname);
 SV* Perl_newSVsv (SV* old);
 OP* Perl_newUNOP (I32 type, I32 flags, OP* first);
 OP* Perl_newWHILEOP (I32 flags, I32 debuggable, LOOP* loop, I32 whileline, OP* expr, OP* block, OP* cont);




 PERL_SI * Perl_new_stackinfo (I32 stitems, I32 cxitems);
 FILE* Perl_nextargv (GV* gv);
 char* Perl_ninstr (char* big, char* bigend, char* little, char* lend);
 OP* Perl_oopsCV (OP* o);
 void Perl_op_free (OP* arg);
 void Perl_package (OP* o);
 PADOFFSET Perl_pad_alloc (I32 optype, U32 tmptype);
 PADOFFSET Perl_pad_allocmy (char* name);
 PADOFFSET Perl_pad_findmy (char* name);
 OP* Perl_oopsAV (OP* o);
 OP* Perl_oopsHV (OP* o);
 void Perl_pad_leavemy (I32 fill);
 SV* Perl_pad_sv (PADOFFSET po);
 void Perl_pad_free (PADOFFSET po);
 void Perl_pad_reset (void);
 void Perl_pad_swipe (PADOFFSET po);
 void Perl_peep (OP* o);

PerlInterpreter* perl_alloc (void);




void perl_atexit (void(*fn)(void *), void*);

 I32 perl_call_argv (char* sub_name, I32 flags, char** argv);
 I32 perl_call_method (char* methname, I32 flags);
 I32 perl_call_pv (char* sub_name, I32 flags);
 I32 perl_call_sv (SV* sv, I32 flags);




void perl_construct (PerlInterpreter* sv_interp);
void perl_destruct (PerlInterpreter* sv_interp);

 SV* perl_eval_pv (char* p, I32 croak_on_error);
 I32 perl_eval_sv (SV* sv, I32 flags);



void perl_free (PerlInterpreter* sv_interp);

 SV* perl_get_sv (char* name, I32 create);
 AV* perl_get_av (char* name, I32 create);
 HV* perl_get_hv (char* name, I32 create);
 CV* perl_get_cv (char* name, I32 create);
 int perl_init_i18nl10n (int printwarn);
 int perl_init_i18nl14n (int printwarn);
 void perl_new_collate (char* newcoll);
 void perl_new_ctype (char* newctype);
 void perl_new_numeric (char* newcoll);
 void perl_set_numeric_local (void);
 void perl_set_numeric_standard (void);



int perl_parse (PerlInterpreter* sv_interp, void(*xsinit)(void), int argc, char** argv, char** env);

 void perl_require_pv (char* pv);




int perl_run (PerlInterpreter* sv_interp);

 void Perl_pidgone (int pid, int status);
 void Perl_pmflag (U16* pmfl, int ch);
 OP* Perl_pmruntime (OP* pm, OP* expr, OP* repl);
 OP* Perl_pmtrans (OP* o, OP* expr, OP* repl);
 OP* Perl_pop_return (void);
 void Perl_pop_scope (void);
 OP* Perl_prepend_elem (I32 optype, OP* head, OP* tail);
 void Perl_push_return (OP* o);
 void Perl_push_scope (void);
 OP* Perl_ref (OP* o, I32 type);
 OP* Perl_refkids (OP* o, I32 type);
 void Perl_regdump (regexp* r);
 I32 Perl_pregexec (regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, U32 nosave);
 void Perl_pregfree (struct regexp* r);
 regexp* Perl_pregcomp (char* exp, char* xend, PMOP* pm);
 I32 Perl_regexec_flags (regexp* prog, char* stringarg, char* strend, char* strbeg, I32 minend, SV* screamer, void* data, U32 flags);


 regnode* Perl_regnext (regnode* p);
 void Perl_regprop (SV* sv, regnode* o);
 void Perl_repeatcpy (char* to, char* from, I32 len, I32 count);
 char* Perl_rninstr (char* big, char* bigend, char* little, char* lend);
 Sighandler_t Perl_rsignal (int i, Sighandler_t t);
 int Perl_rsignal_restore (int i, Sigsave_t* t);
 int Perl_rsignal_save (int i, Sighandler_t t1, Sigsave_t* t2);
 Sighandler_t Perl_rsignal_state (int i);
 void Perl_rxres_free (void** rsp);
 void Perl_rxres_restore (void** rsp, REGEXP* prx);
 void Perl_rxres_save (void** rsp, REGEXP* prx);



 char* Perl_savepv (char* sv);
 char* Perl_savepvn (char* sv, I32 len);
 void Perl_savestack_grow (void);
 void Perl_save_aelem (AV* av, I32 idx, SV **sptr);
 void Perl_save_aptr (AV** aptr);
 AV* Perl_save_ary (GV* gv);
 void Perl_save_clearsv (SV** svp);
 void Perl_save_delete (HV* hv, char* key, I32 klen);





void Perl_save_destructor (void (*f)(void*), void* p);


 void Perl_save_freesv (SV* sv);
 void Perl_save_freeop (OP* o);
 void Perl_save_freepv (char* pv);
 void Perl_save_gp (GV* gv, I32 empty);
 HV* Perl_save_hash (GV* gv);
 void Perl_save_helem (HV* hv, SV *key, SV **sptr);
 void Perl_save_hints (void);
 void Perl_save_hptr (HV** hptr);
 void Perl_save_I16 (I16* intp);
 void Perl_save_I32 (I32* intp);
 void Perl_save_int (int* intp);
 void Perl_save_item (SV* item);
 void Perl_save_iv (IV* iv);
 void Perl_save_list (SV** sarg, I32 maxsarg);
 void Perl_save_long (long* longp);
 void Perl_save_nogv (GV* gv);
 void Perl_save_op (void);
 SV* Perl_save_scalar (GV* gv);
 void Perl_save_pptr (char** pptr);
 void Perl_save_sptr (SV** sptr);
 SV* Perl_save_svref (SV** sptr);
 SV** Perl_save_threadsv (PADOFFSET i);
 OP* Perl_sawparens (OP* o);
 OP* Perl_scalar (OP* o);
 OP* Perl_scalarkids (OP* o);
 OP* Perl_scalarseq (OP* o);
 OP* Perl_scalarvoid (OP* o);
 UV Perl_scan_hex (char* start, I32 len, I32* retlen);
 char* Perl_scan_num (char* s);
 UV Perl_scan_oct (char* start, I32 len, I32* retlen);
 OP* Perl_scope (OP* o);
 char* Perl_screaminstr (SV* bigsv, SV* littlesv, I32 start_shift, I32 end_shift, I32 *state, I32 last);

 I32 Perl_setenv_getix (char* nam);

 void Perl_setdefout (GV* gv);
 char* Perl_sharepvn (char* sv, I32 len, U32 hash);
 HEK* Perl_share_hek (char* sv, I32 len, U32 hash);
 void Perl_sighandler (int sig);
 SV** Perl_stack_grow (SV** sp, SV**p, int n);
 I32 Perl_start_subparse (I32 is_format, U32 flags);
 void Perl_sub_crush_depth (CV* cv);
 bool Perl_sv_2bool (SV* sv);
 CV* Perl_sv_2cv (SV* sv, HV** st, GV** gvp, I32 lref);
 IO* Perl_sv_2io (SV* sv);
 IV Perl_sv_2iv (SV* sv);
 SV* Perl_sv_2mortal (SV* sv);
 double Perl_sv_2nv (SV* sv);
 char* Perl_sv_2pv (SV* sv, STRLEN* lp);
 UV Perl_sv_2uv (SV* sv);
 IV Perl_sv_iv (SV* sv);
 UV Perl_sv_uv (SV* sv);
 double Perl_sv_nv (SV* sv);
 char * Perl_sv_pvn (SV *sv, STRLEN *len);
 I32 Perl_sv_true (SV *sv);
 void Perl_sv_add_arena (char* ptr, U32 size, U32 flags);
 int Perl_sv_backoff (SV* sv);
 SV* Perl_sv_bless (SV* sv, HV* stash);
 void Perl_sv_catpvf (SV* sv, const char* pat, ...);
 void Perl_sv_catpv (SV* sv, char* ptr);
 void Perl_sv_catpvn (SV* sv, char* ptr, STRLEN len);
 void Perl_sv_catsv (SV* dsv, SV* ssv);
 void Perl_sv_chop (SV* sv, char* ptr);
 void Perl_sv_clean_all (void);
 void Perl_sv_clean_objs (void);
 void Perl_sv_clear (SV* sv);
 I32 Perl_sv_cmp (SV* sv1, SV* sv2);
 I32 Perl_sv_cmp_locale (SV* sv1, SV* sv2);



 OP* Perl_sv_compile_2op (SV* sv, OP** startp, char* code, AV** avp);
 void Perl_sv_dec (SV* sv);
 void Perl_sv_dump (SV* sv);
 bool Perl_sv_derived_from (SV* sv, char* name);
 I32 Perl_sv_eq (SV* sv1, SV* sv2);
 void Perl_sv_free (SV* sv);
 void Perl_sv_free_arenas (void);
 char* Perl_sv_gets (SV* sv, FILE* fp, I32 append);

 char* Perl_sv_grow (SV* sv, I32 newlen);



 void Perl_sv_inc (SV* sv);
 void Perl_sv_insert (SV* bigsv, STRLEN offset, STRLEN len, char* little, STRLEN littlelen);
 int Perl_sv_isa (SV* sv, char* name);
 int Perl_sv_isobject (SV* sv);
 STRLEN Perl_sv_len (SV* sv);
 void Perl_sv_magic (SV* sv, SV* obj, int how, char* name, I32 namlen);
 SV* Perl_sv_mortalcopy (SV* oldsv);
 SV* Perl_sv_newmortal (void);
 SV* Perl_sv_newref (SV* sv);
 char* Perl_sv_peek (SV* sv);
 char* Perl_sv_pvn_force (SV* sv, STRLEN* lp);
 char* Perl_sv_reftype (SV* sv, int ob);
 void Perl_sv_replace (SV* sv, SV* nsv);
 void Perl_sv_report_used (void);
 void Perl_sv_reset (char* s, HV* stash);
 void Perl_sv_setpvf (SV* sv, const char* pat, ...);
 void Perl_sv_setiv (SV* sv, IV num);
 void Perl_sv_setpviv (SV* sv, IV num);
 void Perl_sv_setuv (SV* sv, UV num);
 void Perl_sv_setnv (SV* sv, double num);
 SV* Perl_sv_setref_iv (SV* rv, char* classname, IV iv);
 SV* Perl_sv_setref_nv (SV* rv, char* classname, double nv);
 SV* Perl_sv_setref_pv (SV* rv, char* classname, void* pv);
 SV* Perl_sv_setref_pvn (SV* rv, char* classname, char* pv, I32 n);
 void Perl_sv_setpv (SV* sv, const char* ptr);
 void Perl_sv_setpvn (SV* sv, const char* ptr, STRLEN len);
 void Perl_sv_setsv (SV* dsv, SV* ssv);
 void Perl_sv_taint (SV* sv);
 bool Perl_sv_tainted (SV* sv);
 int Perl_sv_unmagic (SV* sv, int type);
 void Perl_sv_unref (SV* sv);
 void Perl_sv_untaint (SV* sv);
 bool Perl_sv_upgrade (SV* sv, U32 mt);
 void Perl_sv_usepvn (SV* sv, char* ptr, STRLEN len);
 void Perl_sv_vcatpvfn (SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);


 void Perl_sv_vsetpvfn (SV* sv, const char* pat, STRLEN patlen, va_list* args, SV** svargs, I32 svmax, bool *used_locale);


 void Perl_taint_env (void);
 void Perl_taint_proper (const char* f, char* s);






 void Perl_unsharepvn (char* sv, I32 len, U32 hash);
 void Perl_unshare_hek (HEK* hek);
 void Perl_utilize (int aver, I32 floor, OP* version, OP* id, OP* arg);
 void Perl_vivify_defelem (SV* sv);
 void Perl_vivify_ref (SV* sv, U32 to_what);
 I32 Perl_wait4pid (int pid, int* statusp, int flags);
 void Perl_warn (const char* pat,...);
 void Perl_watch (char** addr);
 I32 Perl_whichsig (char* sig);
 int Perl_yyerror (char* s);
 int Perl_yylex (void);
 int Perl_yyparse (void);
 int Perl_yywarn (char* s);


 void * Perl_safemalloc (size_t nbytes);
 void * Perl_safecalloc (size_t elements, size_t size);
 void * Perl_saferealloc (void * where, size_t nbytes);
 void Perl_safefree (void * where);
# 879 "proto.h"






 void Perl_byterun (FILE *fp);


 void Perl_sv_catpvf_mg (SV *sv, const char* pat, ...);
 void Perl_sv_catpv_mg (SV *sv, char *ptr);
 void Perl_sv_catpvn_mg (SV *sv, char *ptr, STRLEN len);
 void Perl_sv_catsv_mg (SV *dstr, SV *sstr);
 void Perl_sv_setpvf_mg (SV *sv, const char* pat, ...);
 void Perl_sv_setiv_mg (SV *sv, IV i);
 void Perl_sv_setpviv_mg (SV *sv, IV iv);
 void Perl_sv_setuv_mg (SV *sv, UV u);
 void Perl_sv_setnv_mg (SV *sv, double num);
 void Perl_sv_setpv_mg (SV *sv, const char *ptr);
 void Perl_sv_setpvn_mg (SV *sv, const char *ptr, STRLEN len);
 void Perl_sv_setsv_mg (SV *dstr, SV *sstr);
 void Perl_sv_usepvn_mg (SV *sv, char *ptr, STRLEN len);

 MGVTBL* Perl_get_vtbl (int vtbl_id);
 OP* Perl_dofile (OP* term);
 void Perl_save_generic_svref (SV** sptr);
# 2123 "perl.h" 2
# 2134 "perl.h"
# 1 "embedvar.h" 1
# 2135 "perl.h" 2
# 2146 "perl.h"
# 1 "perlvars.h" 1
# 21 "perlvars.h"
extern PerlInterpreter * PL_curinterp;
# 42 "perlvars.h"
extern int PL_ninterps;

extern int PL_uid;
extern int PL_euid;
extern int PL_gid;
extern int PL_egid;
extern bool PL_nomemok;
extern U32 PL_an;
extern U32 PL_cop_seqmax;
extern U16 PL_op_seqmax;
extern U32 PL_evalseq;
extern char ** PL_origenviron;
extern U32 PL_origalen;
extern HV * PL_pidstatus;
extern int PL_maxo ;
extern char * PL_osname;
extern char * PL_sh_path ;
extern Sighandler_t PL_sighandlerp;

extern XPV* PL_xiv_arenaroot;
extern IV * PL_xiv_root;
extern double * PL_xnv_root;
extern XRV * PL_xrv_root;
extern XPV * PL_xpv_root;
extern HE * PL_he_root;
extern char * PL_nice_chunk;
extern U32 PL_nice_chunk_size;




extern runops_proc_t * PL_runops ;


extern char PL_tokenbuf[256];
extern STRLEN PL_na;


extern SV PL_sv_undef;
extern SV PL_sv_no;
extern SV PL_sv_yes;





extern U32 PL_lex_state;
extern U32 PL_lex_defer;
extern expectation PL_lex_expect;
extern I32 PL_lex_brackets;
extern I32 PL_lex_formbrack;
extern I32 PL_lex_fakebrack;
extern I32 PL_lex_casemods;
extern I32 PL_lex_dojoin;
extern I32 PL_lex_starts;
extern SV * PL_lex_stuff;
extern SV * PL_lex_repl;
extern OP * PL_lex_op;
extern OP * PL_lex_inpat;
extern I32 PL_lex_inwhat;
extern char * PL_lex_brackstack;
extern char * PL_lex_casestack;


extern YYSTYPE PL_nextval[5];
extern I32 PL_nexttype[5];
extern I32 PL_nexttoke;

extern SV * PL_linestr;
extern char * PL_bufptr;
extern char * PL_oldbufptr;
extern char * PL_oldoldbufptr;
extern char * PL_bufend;
extern expectation PL_expect ;

extern I32 PL_multi_start;
extern I32 PL_multi_end;
extern I32 PL_multi_open;
extern I32 PL_multi_close;

extern I32 PL_error_count;
extern I32 PL_subline;
extern SV * PL_subname;

extern I32 PL_min_intro_pending;
extern I32 PL_max_intro_pending;
extern I32 PL_padix;
extern I32 PL_padix_floor;
extern I32 PL_pad_reset_pending;

extern I32 PL_thisexpr;
extern char * PL_last_uni;
extern char * PL_last_lop;
extern U16 PL_last_lop_op;
extern bool PL_in_my;
extern HV * PL_in_my_stash;




extern U32 PL_hints;

extern bool PL_do_undump;
extern volatile U32 PL_debug;




extern long PL_amagic_generation;
# 174 "perlvars.h"
extern const char * PL_Yes ;
extern const char * PL_No ;
extern const char * PL_hexdigit ;
extern const char * PL_patleave ;

extern SV * PL_specialsv_list[4];
# 2147 "perl.h" 2




# 1 "intrpvar.h" 1
# 17 "intrpvar.h"
extern int PL_origargc;
extern char ** PL_origargv;
extern GV * PL_envgv;
extern GV * PL_siggv;
extern GV * PL_incgv;
extern GV * PL_hintgv;
extern char * PL_origfilename;
extern SV * PL_diehook;
extern SV * PL_warnhook;
extern SV * PL_parsehook;
extern char * PL_cddir;
extern bool PL_minus_c;
extern char PL_patchlevel[10];
extern char ** PL_localpatches;
extern char * PL_splitstr ;
extern bool PL_preprocess;
extern bool PL_minus_n;
extern bool PL_minus_p;
extern bool PL_minus_l;
extern bool PL_minus_a;
extern bool PL_minus_F;
extern bool PL_doswitches;
extern bool PL_dowarn;
extern bool PL_doextract;
extern bool PL_sawampersand;
extern bool PL_sawstudy;
extern bool PL_sawvec;
extern bool PL_unsafe;
extern char * PL_inplace;
extern SV * PL_e_script;
extern U32 PL_perldb;



extern int PL_perl_destruct_level ;


extern time_t PL_basetime;
extern SV * PL_formfeed;


extern I32 PL_maxsysfd ;

extern int PL_multiline;
extern I32 PL_statusvalue;





extern GV * PL_stdingv;
extern GV * PL_defgv;
extern GV * PL_argvgv;
extern GV * PL_argvoutgv;



extern GV * PL_leftgv;
extern GV * PL_ampergv;
extern GV * PL_rightgv;



extern GV * PL_replgv;


extern GV * PL_errgv;


extern GV * PL_DBgv;
extern GV * PL_DBline;
extern GV * PL_DBsub;
extern SV * PL_DBsingle;
extern SV * PL_DBtrace;
extern SV * PL_DBsignal;
extern AV * PL_lineary;
extern AV * PL_dbargs;


extern HV * PL_debstash;
extern HV * PL_globalstash;
extern SV * PL_curstname;
extern AV * PL_beginav;
extern AV * PL_endav;
extern AV * PL_initav;
extern HV * PL_strtab;
extern U32 PL_sub_generation ;


extern I32 PL_sv_count;
extern I32 PL_sv_objcount;
extern SV* PL_sv_root;
extern SV* PL_sv_arenaroot;


extern I32 PL_lastspbase;
extern I32 PL_lastsize;
extern int PL_forkprocess;


extern AV * PL_fdpid;


extern bool PL_tainting;
extern char * PL_op_mask ;
extern char * PL_last_proto;


extern I32 PL_dlevel;
extern I32 PL_dlmax ;
extern char * PL_debname;
extern char * PL_debdelim;


extern CV * PL_main_cv;
extern OP * PL_main_root;
extern OP * PL_main_start;
extern OP * PL_eval_root;
extern OP * PL_eval_start;


extern COP * PL_curcopdb ;
extern line_t PL_copline ;


extern SV PL_strchop;
extern int PL_filemode;
extern int PL_lastfd;
extern char * PL_oldname;
extern char ** PL_Argv;
extern char * PL_Cmd;
extern SV * PL_mystrk;
extern I32 PL_dumplvl;
extern PMOP * PL_oldlastpm;
extern I32 PL_gensym;
extern bool PL_preambled;
extern AV * PL_preambleav;
extern int PL_laststatval ;
extern I32 PL_laststype ;
extern SV * PL_mess_sv;


extern char * PL_ors;
extern STRLEN PL_orslen;
extern char * PL_ofmt;


extern PerlExitListEntry * PL_exitlist ;

extern I32 PL_exitlistlen ;
extern HV * PL_modglobal;


extern U32 * PL_profiledata ;
extern FILE * volatile PL_rsfp ;
extern AV * PL_rsfp_filters ;

extern COP PL_compiling;

extern CV * PL_compcv;
extern AV * PL_comppad;
extern AV * PL_comppad_name;
extern I32 PL_comppad_name_fill;
extern I32 PL_comppad_name_floor;







extern int PL_generation ;
extern CV * PL_DBcv;
extern char* PL_archpat_auto;

extern bool PL_in_clean_objs ;
extern bool PL_in_clean_all ;

extern char * PL_linestart;
extern char PL_pending_ident;
extern SUBLEXINFO PL_sublex_info;







extern int PL_bytecode_iv_overflows ;
extern SV * PL_bytecode_sv;
extern XPV PL_bytecode_pv;
extern void ** PL_bytecode_obj_list;
extern I32 PL_bytecode_obj_list_fill ;
# 2152 "perl.h" 2

# 1 "thrdvar.h" 1
# 20 "thrdvar.h"
extern SV ** PL_stack_sp;



extern OP * PL_op;

extern SV ** PL_curpad;

extern SV ** PL_stack_base;
extern SV ** PL_stack_max;

extern I32 * PL_scopestack;
extern I32 PL_scopestack_ix;
extern I32 PL_scopestack_max;

extern ANY * PL_savestack;

extern I32 PL_savestack_ix;
extern I32 PL_savestack_max;

extern SV ** PL_tmps_stack;
extern I32 PL_tmps_ix ;
extern I32 PL_tmps_floor ;
extern I32 PL_tmps_max;

extern I32 * PL_markstack;
extern I32 * PL_markstack_ptr;
extern I32 * PL_markstack_max;

extern OP ** PL_retstack;
extern I32 PL_retstack_ix;
extern I32 PL_retstack_max;

extern SV * PL_Sv;
extern XPV * PL_Xpv;


extern struct stat PL_statbuf;
extern struct stat PL_statcache;
extern GV * PL_statgv;
extern SV * PL_statname ;


extern struct tms PL_timesbuf;



extern bool PL_tainted;
extern PMOP * PL_curpm;
extern SV * PL_nrs;
extern SV * PL_rs;
extern GV * PL_last_in_gv;
extern char * PL_ofs;
extern STRLEN PL_ofslen;
extern GV * PL_defoutgv;
extern char * PL_chopset ;
extern SV * PL_formtarget;
extern SV * PL_bodytarget;
extern SV * PL_toptarget;


extern HV * PL_defstash;
extern HV * PL_curstash;

extern OP * PL_restartop;
extern COP * volatile PL_curcop ;
extern volatile int PL_in_eval;
extern int PL_delaymagic;
extern bool PL_dirty;
extern int PL_localizing;

extern AV * PL_curstack;
extern PERL_SI * PL_curstackinfo;
extern AV * PL_mainstack;
extern JMPENV * PL_top_env;
extern JMPENV PL_start_env;


extern SV * PL_av_fetch_sv;
extern SV * PL_hv_fetch_sv;
extern HE PL_hv_fetch_ent_mh;

extern I32 PL_modcount;

extern OP* PL_lastgotoprobe;


extern OP * PL_sortcop;
extern HV * PL_sortstash;
extern GV * PL_firstgv;
extern GV * PL_secondgv;
extern I32 PL_sortcxix;



extern I32 * PL_screamfirst;
extern I32 * PL_screamnext;
extern I32 PL_maxscream ;
extern SV * PL_lastscream;

extern regnode PL_regdummy;
extern char* PL_regcomp_parse;
extern char* PL_regxend;
extern regnode* PL_regcode;
extern I32 PL_regnaughty;
extern I32 PL_regsawback;
extern char * PL_regprecomp;
extern I32 PL_regnpar;
extern I32 PL_regsize;
extern U16 PL_regflags;
extern U32 PL_regseen;
extern I32 PL_seen_zerolen;
extern I32 PL_seen_evals;
extern regexp * PL_regcomp_rx;
extern I32 PL_extralen;
extern int PL_colorset;
extern char * PL_colors[4];
extern char * PL_reginput;
extern char * PL_regbol;
extern char * PL_regeol;
extern char ** PL_regstartp;
extern char ** PL_regendp;
extern U32 * PL_reglastparen;
extern char * PL_regtill;
extern char PL_regprev;
extern char ** PL_reg_start_tmp;
extern U32 PL_reg_start_tmpl;
extern struct reg_data * PL_regdata;

extern char * PL_bostr;
extern U32 PL_reg_flags;
extern I32 PL_reg_eval_set;
extern I32 PL_regnarrate;
extern regnode * PL_regprogram;
extern int PL_regindent ;
extern CURCUR * PL_regcc;

extern regcomp_t PL_regcompp ;

extern regexec_t PL_regexecp ;

extern int PL_reginterp_cnt ;
# 2154 "perl.h" 2
# 2317 "perl.h"
extern MGVTBL Perl_vtbl_sv;
extern MGVTBL Perl_vtbl_env;
extern MGVTBL Perl_vtbl_envelem;
extern MGVTBL Perl_vtbl_sig;
extern MGVTBL Perl_vtbl_sigelem;
extern MGVTBL Perl_vtbl_pack;
extern MGVTBL Perl_vtbl_packelem;
extern MGVTBL Perl_vtbl_dbline;
extern MGVTBL Perl_vtbl_isa;
extern MGVTBL Perl_vtbl_isaelem;
extern MGVTBL Perl_vtbl_arylen;
extern MGVTBL Perl_vtbl_glob;
extern MGVTBL Perl_vtbl_mglob;
extern MGVTBL Perl_vtbl_nkeys;
extern MGVTBL Perl_vtbl_taint;
extern MGVTBL Perl_vtbl_substr;
extern MGVTBL Perl_vtbl_vec;
extern MGVTBL Perl_vtbl_pos;
extern MGVTBL Perl_vtbl_bm;
extern MGVTBL Perl_vtbl_fm;
extern MGVTBL Perl_vtbl_uvar;





extern MGVTBL Perl_vtbl_defelem;
extern MGVTBL Perl_vtbl_regexp;






extern MGVTBL Perl_vtbl_amagic;
extern MGVTBL Perl_vtbl_amagicelem;
# 2393 "perl.h"
extern const char * Perl_AMG_names[58];


struct am_table {
  long was_ok_sub;
  long was_ok_am;
  U32 flags;
  CV* table[58];
  long fallback;
};
struct am_table_short {
  long was_ok_sub;
  long was_ok_am;
  U32 flags;
};
typedef struct am_table AMT;
typedef struct am_table_short AMTS;
# 2420 "perl.h"
enum {
  Perl_fallback_amg, Perl_abs_amg,
  Perl_bool__amg, Perl_nomethod_amg,
  Perl_string_amg, Perl_numer_amg,
  Perl_add_amg, Perl_add_ass_amg,
  Perl_subtr_amg, Perl_subtr_ass_amg,
  Perl_mult_amg, Perl_mult_ass_amg,
  Perl_div_amg, Perl_div_ass_amg,
  modulo_amg, modulo_ass_amg,
  Perl_pow_amg, Perl_pow_ass_amg,
  Perl_lshift_amg, Perl_lshift_ass_amg,
  Perl_rshift_amg, Perl_rshift_ass_amg,
  Perl_band_amg, band_ass_amg,
  Perl_bor_amg, bor_ass_amg,
  Perl_bxor_amg, bxor_ass_amg,
  Perl_lt_amg, Perl_le_amg,
  Perl_gt_amg, Perl_ge_amg,
  Perl_eq_amg, Perl_ne_amg,
  Perl_ncmp_amg, Perl_scmp_amg,
  Perl_slt_amg, Perl_sle_amg,
  Perl_sgt_amg, Perl_sge_amg,
  Perl_seq_amg, Perl_sne_amg,
  Perl_not_amg, Perl_compl_amg,
  Perl_inc_amg, Perl_dec_amg,
  Perl_atan2_amg, Perl_cos_amg,
  Perl_sin_amg, Perl_exp_amg,
  Perl_log_amg, Perl_sqrt_amg,
  Perl_repeat_amg, Perl_repeat_ass_amg,
  Perl_concat_amg, Perl_concat_ass_amg,
  copy_amg, Perl_neg_amg
};
# 17 "av.c" 2

void
Perl_av_reify(AV *av)
{
    I32 key;
    SV* sv;

    if ((((XPVAV*) (av)->sv_any)->xav_flags & 1))
 return;




    key = ((XPVAV*) (av)->sv_any)->xav_max + 1;
    while (key > ((XPVAV*) (av)->sv_any)->xav_fill + 1)
 ((SV**)((XPVAV*) (av)->sv_any)->xav_array)[--key] = &PL_sv_undef;
    while (key) {
 sv = ((SV**)((XPVAV*) (av)->sv_any)->xav_array)[--key];
 ;
 if (sv != &PL_sv_undef) {
     extern int (*__errno_location ());
     (void)({ SV *nsv = (SV*)(sv); if (nsv) (++(nsv)->sv_refcnt); nsv; });
 }
    }
    key = ((SV**)((XPVAV*) (av)->sv_any)->xav_array) - ((XPVAV*) (av)->sv_any)->xav_alloc;
    while (key)
 ((XPVAV*) (av)->sv_any)->xav_alloc[--key] = &PL_sv_undef;
    (((XPVAV*) (av)->sv_any)->xav_flags &= ~2);
    (((XPVAV*) (av)->sv_any)->xav_flags |= 1);
}

void
Perl_av_extend(AV *av, I32 key)
{
    extern int (*__errno_location ());
    MAGIC *mg;
    if (mg = ((((SV*)av)->sv_flags & 0x00008000) ? Perl_mg_find(((SV*)av),('P')) : ((MAGIC*)((void *)0)))) {
 extern int (*__errno_location ()); register SV **sp = PL_stack_sp;
 Perl_push_scope();
 Perl_save_int((int*)&PL_tmps_floor), PL_tmps_floor = PL_tmps_ix;
 do { PERL_SI *next = PL_curstackinfo->si_next; if (!next) { next = Perl_new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); next->si_prev = PL_curstackinfo; PL_curstackinfo->si_next = next; } next->si_type = 2; next->si_cxix = -1; ((XPVAV*) (next->si_stack)->sv_any)->xav_fill = 0; do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (next->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_fill; PL_curstack = next->si_stack; } while (0); PL_curstackinfo = next; (void)0; } while (0);
 if (++PL_markstack_ptr == PL_markstack_max) Perl_markstack_grow(); *PL_markstack_ptr = (sp) - PL_stack_base;
 do { if (PL_stack_max - sp < (2)) { sp = Perl_stack_grow(sp,sp, (int) (2)); } } while (0);
 (*++sp = (((mg)->mg_obj ? (mg)->mg_obj : Perl_sv_2mortal(Perl_newRV((SV*)av)))));
 (*++sp = (Perl_sv_2mortal(Perl_newSViv(key+1))));
        PL_stack_sp = sp;
 perl_call_method("EXTEND", 0|2);
 do { PERL_SI *prev = PL_curstackinfo->si_prev; if (!prev) { fprintf(stderr, "panic: POPSTACK\n"); Perl_my_exit(1); } do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (prev->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_fill; PL_curstack = prev->si_stack; } while (0); PL_curstackinfo = prev; } while (0);
 if (PL_tmps_ix > PL_tmps_floor) Perl_free_tmps();
 Perl_pop_scope();
 return;
    }
    if (key > ((XPVAV*) (av)->sv_any)->xav_max) {
 SV** ary;
 I32 tmp;
 I32 newmax;

 if (((XPVAV*) (av)->sv_any)->xav_alloc != ((SV**)((XPVAV*) (av)->sv_any)->xav_array)) {
     ary = ((XPVAV*) (av)->sv_any)->xav_alloc + ((XPVAV*) (av)->sv_any)->xav_fill + 1;
     tmp = ((SV**)((XPVAV*) (av)->sv_any)->xav_array) - ((XPVAV*) (av)->sv_any)->xav_alloc;
     (void)Perl_my_bcopy((char*)(((SV**)((XPVAV*) (av)->sv_any)->xav_array)),(char*)(((XPVAV*) (av)->sv_any)->xav_alloc),(((XPVAV*) (av)->sv_any)->xav_fill+1) * sizeof(SV*));
     ((XPVAV*) (av)->sv_any)->xav_max += tmp;
     ((XPV*) (av)->sv_any)->xpv_pv = (char*)((XPVAV*) (av)->sv_any)->xav_alloc;
     if ((((XPVAV*) (av)->sv_any)->xav_flags & 1)) {
  while (tmp)
      ary[--tmp] = &PL_sv_undef;
     }

     if (key > ((XPVAV*) (av)->sv_any)->xav_max - 10) {
  newmax = key + ((XPVAV*) (av)->sv_any)->xav_max;
  goto resize;
     }
 }
 else {
     if (((XPVAV*) (av)->sv_any)->xav_alloc) {

  U32 bytes;
# 102 "av.c"
  newmax = key + ((XPVAV*) (av)->sv_any)->xav_max / 5;
       resize:



  bytes = (newmax + 1) * sizeof(SV*);

  tmp = 16;
  while (tmp - 16 < bytes)
      tmp += tmp;
  tmp -= 16;
  tmp /= sizeof(SV*);
  ;
  newmax = tmp - 1;
  (ary = (SV**)Perl_safemalloc((size_t)((newmax+1)*sizeof(SV*))));
  (void)Perl_my_bcopy((char*)(((XPVAV*) (av)->sv_any)->xav_alloc),(char*)(ary),(((XPVAV*) (av)->sv_any)->xav_max+1) * sizeof(SV*));
  if (((XPVAV*) (av)->sv_any)->xav_max > 64)
      do { ; if (!PL_nice_chunk) { PL_nice_chunk = (char*)(((XPVAV*) (av)->sv_any)->xav_alloc); PL_nice_chunk_size = ((((XPVAV*) (av)->sv_any)->xav_max+1) * sizeof(SV*)); } else { Perl_safefree((void *)(((XPVAV*) (av)->sv_any)->xav_alloc)); } ; } while (0);
  else
      Perl_safefree((void *)(((XPVAV*) (av)->sv_any)->xav_alloc));
  ((XPVAV*) (av)->sv_any)->xav_alloc = ary;

       resized:
  ary = ((XPVAV*) (av)->sv_any)->xav_alloc + ((XPVAV*) (av)->sv_any)->xav_max + 1;
  tmp = newmax - ((XPVAV*) (av)->sv_any)->xav_max;
  if (av == PL_curstack) {
      PL_stack_sp = ((XPVAV*) (av)->sv_any)->xav_alloc + (PL_stack_sp - PL_stack_base);
      PL_stack_base = ((XPVAV*) (av)->sv_any)->xav_alloc;
      PL_stack_max = PL_stack_base + newmax;
  }
     }
     else {
  newmax = key < 3 ? 3 : key;
  (((XPVAV*) (av)->sv_any)->xav_alloc = (SV**)Perl_safemalloc((size_t)((newmax+1)*sizeof(SV*))));
  ary = ((XPVAV*) (av)->sv_any)->xav_alloc + 1;
  tmp = newmax;
  ((XPVAV*) (av)->sv_any)->xav_alloc[0] = &PL_sv_undef;
     }
     if ((((XPVAV*) (av)->sv_any)->xav_flags & 1)) {
  while (tmp)
      ary[--tmp] = &PL_sv_undef;
     }

     ((XPV*) (av)->sv_any)->xpv_pv = (char*)((XPVAV*) (av)->sv_any)->xav_alloc;
     ((XPVAV*) (av)->sv_any)->xav_max = newmax;
 }
    }
}

SV**
Perl_av_fetch(register AV *av, I32 key, I32 lval)
{
    SV *sv;

    if (!av)
 return 0;

    if (key < 0) {
 key += (((((SV *) (av))->sv_flags & 0x00008000)) ? Perl_mg_size((SV *) av) : ((XPVAV*) (av)->sv_any)->xav_fill) + 1;
 if (key < 0)
     return 0;
    }

    if (((av)->sv_flags & 0x00008000)) {
 if (Perl_mg_find((SV*)av,'P')) {
     extern int (*__errno_location ());
     sv = Perl_sv_newmortal();
     Perl_mg_copy((SV*)av, sv, 0, key);
     PL_av_fetch_sv = sv;
     return &PL_av_fetch_sv;
 }
    }

    if (key > ((XPVAV*) (av)->sv_any)->xav_fill) {
 if (!lval)
     return 0;
 sv = Perl_newSV(0);
 return Perl_av_store(av,key,sv);
    }
    if (((SV**)((XPVAV*) (av)->sv_any)->xav_array)[key] == &PL_sv_undef) {
    emptyness:
 if (lval) {
     sv = Perl_newSV(0);
     return Perl_av_store(av,key,sv);
 }
 return 0;
    }
    else if ((((XPVAV*) (av)->sv_any)->xav_flags & 2)
      && (!((SV**)((XPVAV*) (av)->sv_any)->xav_array)[key]
   || ((((SV**)((XPVAV*) (av)->sv_any)->xav_array)[key])->sv_flags & 0xff) == 0xff)) {
 ((SV**)((XPVAV*) (av)->sv_any)->xav_array)[key] = &PL_sv_undef;
 goto emptyness;
    }
    return &((SV**)((XPVAV*) (av)->sv_any)->xav_array)[key];
}

SV**
Perl_av_store(register AV *av, I32 key, SV *val)
{
    SV** ary;
    U32 fill;


    if (!av)
 return 0;
    if (!val)
 val = &PL_sv_undef;

    if (key < 0) {
 key += (((((SV *) (av))->sv_flags & 0x00008000)) ? Perl_mg_size((SV *) av) : ((XPVAV*) (av)->sv_any)->xav_fill) + 1;
 if (key < 0)
     return 0;
    }

    if (((av)->sv_flags & 0x00800000) && key >= (((((SV *) (av))->sv_flags & 0x00008000)) ? Perl_mg_size((SV *) av) : ((XPVAV*) (av)->sv_any)->xav_fill))
 Perl_croak(Perl_no_modify);

    if (((av)->sv_flags & 0x00008000)) {
 if (Perl_mg_find((SV*)av,'P')) {
     if (val != &PL_sv_undef) {
  Perl_mg_copy((SV*)av, val, 0, key);
     }
     return 0;
 }
    }

    if (!(((XPVAV*) (av)->sv_any)->xav_flags & 1) && (((XPVAV*) (av)->sv_any)->xav_flags & 2))
 Perl_av_reify(av);
    if (key > ((XPVAV*) (av)->sv_any)->xav_max)
 Perl_av_extend(av,key);
    ary = ((SV**)((XPVAV*) (av)->sv_any)->xav_array);
    if (((XPVAV*) (av)->sv_any)->xav_fill < key) {
 if (!(((XPVAV*) (av)->sv_any)->xav_flags & 1)) {
     extern int (*__errno_location ());
     if (av == PL_curstack && key > PL_stack_sp - PL_stack_base)
  PL_stack_sp = PL_stack_base + key;
     do
  ary[++((XPVAV*) (av)->sv_any)->xav_fill] = &PL_sv_undef;
     while (((XPVAV*) (av)->sv_any)->xav_fill < key);
 }
 ((XPVAV*) (av)->sv_any)->xav_fill = key;
    }
    else if ((((XPVAV*) (av)->sv_any)->xav_flags & 1))
 Perl_sv_free((SV*)ary[key]);
    ary[key] = val;
    if (((av)->sv_flags & 0x00004000)) {
 if (val != &PL_sv_undef) {
     MAGIC* mg = ((XPVMG*) (av)->sv_any)->xmg_magic;
     Perl_sv_magic(val, (SV*)av, (((mg->mg_type) >= 'A' && (mg->mg_type) <= 'Z') ? (mg->mg_type) + ('a' - 'A') : (mg->mg_type)), 0, key);
 }
 Perl_mg_set((SV*)av);
    }
    return &ary[key];
}

AV *
Perl_newAV(void)
{
    register AV *av;

    av = (AV*)Perl_newSV(0);
    Perl_sv_upgrade((SV *)av, SVt_PVAV);
    (((XPVAV*) (av)->sv_any)->xav_flags |= 1);
    ((XPVAV*) (av)->sv_any)->xav_alloc = 0;
    ((XPV*) (av)->sv_any)->xpv_pv = 0;
    ((XPVAV*) (av)->sv_any)->xav_max = ((XPVAV*) (av)->sv_any)->xav_fill = -1;
    return av;
}

AV *
Perl_av_make(register I32 size, register SV **strp)
{
    register AV *av;
    register I32 i;
    register SV** ary;

    av = (AV*)Perl_newSV(0);
    Perl_sv_upgrade((SV *) av,SVt_PVAV);
    ((XPVAV*) (av)->sv_any)->xav_flags = 1;
    if (size) {
 (ary = (SV**)Perl_safemalloc((size_t)((size)*sizeof(SV*))));
 ((XPVAV*) (av)->sv_any)->xav_alloc = ary;
 ((XPV*) (av)->sv_any)->xpv_pv = (char*)ary;
 ((XPVAV*) (av)->sv_any)->xav_fill = size - 1;
 ((XPVAV*) (av)->sv_any)->xav_max = size - 1;
 for (i = 0; i < size; i++) {
     ;
     ary[i] = Perl_newSV(0);
     Perl_sv_setsv(ary[i], *strp);
     strp++;
 }
    }
    return av;
}

AV *
Perl_av_fake(register I32 size, register SV **strp)
{
    register AV *av;
    register SV** ary;

    av = (AV*)Perl_newSV(0);
    Perl_sv_upgrade((SV *)av, SVt_PVAV);
    (ary = (SV**)Perl_safemalloc((size_t)((size+1)*sizeof(SV*))));
    ((XPVAV*) (av)->sv_any)->xav_alloc = ary;
    (void)Perl_my_bcopy((char*)(strp),(char*)(ary),(size) * sizeof(SV*));
    ((XPVAV*) (av)->sv_any)->xav_flags = 2;
    ((XPV*) (av)->sv_any)->xpv_pv = (char*)ary;
    ((XPVAV*) (av)->sv_any)->xav_fill = size - 1;
    ((XPVAV*) (av)->sv_any)->xav_max = size - 1;
    while (size--) {
 ;
 ((*strp)->sv_flags &= ~0x00000800);
 strp++;
    }
    return av;
}

void
Perl_av_clear(register AV *av)
{
    register I32 key;
    SV** ary;






    if (!av)
 return;


    if (((av)->sv_flags & 0x00800000))
 Perl_croak(Perl_no_modify);


    if (((av)->sv_flags & 0x00008000))
 Perl_mg_clear((SV*)av);

    if (((XPVAV*) (av)->sv_any)->xav_max < 0)
 return;

    if ((((XPVAV*) (av)->sv_any)->xav_flags & 1)) {
 ary = ((SV**)((XPVAV*) (av)->sv_any)->xav_array);
 key = ((XPVAV*) (av)->sv_any)->xav_fill + 1;
 while (key) {
     Perl_sv_free((SV*)ary[--key]);
     ary[key] = &PL_sv_undef;
 }
    }
    if (key = ((SV**)((XPVAV*) (av)->sv_any)->xav_array) - ((XPVAV*) (av)->sv_any)->xav_alloc) {
 ((XPVAV*) (av)->sv_any)->xav_max += key;
 ((XPV*) (av)->sv_any)->xpv_pv = (char*)((XPVAV*) (av)->sv_any)->xav_alloc;
    }
    ((XPVAV*) (av)->sv_any)->xav_fill = -1;

}

void
Perl_av_undef(register AV *av)
{
    register I32 key;

    if (!av)
 return;



    if (((((SV*)av)->sv_flags & 0x00008000) ? Perl_mg_find(((SV*)av),('P')) : ((MAGIC*)((void *)0))))
 Perl_av_fill(av, -1);

    if ((((XPVAV*) (av)->sv_any)->xav_flags & 1)) {
 key = ((XPVAV*) (av)->sv_any)->xav_fill + 1;
 while (key)
     Perl_sv_free((SV*)((SV**)((XPVAV*) (av)->sv_any)->xav_array)[--key]);
    }
    Perl_safefree((void *)(((XPVAV*) (av)->sv_any)->xav_alloc));
    ((XPVAV*) (av)->sv_any)->xav_alloc = 0;
    ((XPV*) (av)->sv_any)->xpv_pv = 0;
    ((XPVAV*) (av)->sv_any)->xav_max = ((XPVAV*) (av)->sv_any)->xav_fill = -1;
    if (((XPVAV*) (av)->sv_any)->xav_arylen) {
 Perl_sv_free((SV*)((XPVAV*) (av)->sv_any)->xav_arylen);
 ((XPVAV*) (av)->sv_any)->xav_arylen = 0;
    }
}

void
Perl_av_push(register AV *av, SV *val)
{
    MAGIC *mg;
    if (!av)
 return;
    if (((av)->sv_flags & 0x00800000))
 Perl_croak(Perl_no_modify);

    if (mg = ((((SV*)av)->sv_flags & 0x00008000) ? Perl_mg_find(((SV*)av),('P')) : ((MAGIC*)((void *)0)))) {
 extern int (*__errno_location ()); register SV **sp = PL_stack_sp;
 do { PERL_SI *next = PL_curstackinfo->si_next; if (!next) { next = Perl_new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); next->si_prev = PL_curstackinfo; PL_curstackinfo->si_next = next; } next->si_type = 2; next->si_cxix = -1; ((XPVAV*) (next->si_stack)->sv_any)->xav_fill = 0; do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (next->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_fill; PL_curstack = next->si_stack; } while (0); PL_curstackinfo = next; (void)0; } while (0);
 if (++PL_markstack_ptr == PL_markstack_max) Perl_markstack_grow(); *PL_markstack_ptr = (sp) - PL_stack_base;
 do { if (PL_stack_max - sp < (2)) { sp = Perl_stack_grow(sp,sp, (int) (2)); } } while (0);
 (*++sp = (((mg)->mg_obj ? (mg)->mg_obj : Perl_sv_2mortal(Perl_newRV((SV*)av)))));
 (*++sp = (val));
 PL_stack_sp = sp;
 Perl_push_scope();
 perl_call_method("PUSH", 0|2);
 Perl_pop_scope();
 do { PERL_SI *prev = PL_curstackinfo->si_prev; if (!prev) { fprintf(stderr, "panic: POPSTACK\n"); Perl_my_exit(1); } do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (prev->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_fill; PL_curstack = prev->si_stack; } while (0); PL_curstackinfo = prev; } while (0);
 return;
    }
    Perl_av_store(av,((XPVAV*) (av)->sv_any)->xav_fill+1,val);
}

SV *
Perl_av_pop(register AV *av)
{
    SV *retval;
    MAGIC* mg;

    if (!av || (((((SV *) (av))->sv_flags & 0x00008000)) ? Perl_mg_size((SV *) av) : ((XPVAV*) (av)->sv_any)->xav_fill) < 0)
 return &PL_sv_undef;
    if (((av)->sv_flags & 0x00800000))
 Perl_croak(Perl_no_modify);
    if (mg = ((((SV*)av)->sv_flags & 0x00008000) ? Perl_mg_find(((SV*)av),('P')) : ((MAGIC*)((void *)0)))) {
 extern int (*__errno_location ()); register SV **sp = PL_stack_sp;
 do { PERL_SI *next = PL_curstackinfo->si_next; if (!next) { next = Perl_new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); next->si_prev = PL_curstackinfo; PL_curstackinfo->si_next = next; } next->si_type = 2; next->si_cxix = -1; ((XPVAV*) (next->si_stack)->sv_any)->xav_fill = 0; do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (next->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_fill; PL_curstack = next->si_stack; } while (0); PL_curstackinfo = next; (void)0; } while (0);
 if (++PL_markstack_ptr == PL_markstack_max) Perl_markstack_grow(); *PL_markstack_ptr = (sp) - PL_stack_base;
 do { do { if (PL_stack_max - sp < (1)) { sp = Perl_stack_grow(sp,sp, (int) (1)); } } while (0); (*++sp = (((mg)->mg_obj ? (mg)->mg_obj : Perl_sv_2mortal(Perl_newRV((SV*)av))))); } while (0);
 PL_stack_sp = sp;
 Perl_push_scope();
 if (perl_call_method("POP", 0)) {
     retval = Perl_newSVsv(*PL_stack_sp--);
 } else {
     retval = &PL_sv_undef;
 }
 Perl_pop_scope();
 do { PERL_SI *prev = PL_curstackinfo->si_prev; if (!prev) { fprintf(stderr, "panic: POPSTACK\n"); Perl_my_exit(1); } do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (prev->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_fill; PL_curstack = prev->si_stack; } while (0); PL_curstackinfo = prev; } while (0);
 return retval;
    }
    retval = ((SV**)((XPVAV*) (av)->sv_any)->xav_array)[((XPVAV*) (av)->sv_any)->xav_fill];
    ((SV**)((XPVAV*) (av)->sv_any)->xav_array)[((XPVAV*) (av)->sv_any)->xav_fill--] = &PL_sv_undef;
    if (((av)->sv_flags & 0x00004000))
 Perl_mg_set((SV*)av);
    return retval;
}

void
Perl_av_unshift(register AV *av, register I32 num)
{
    register I32 i;
    register SV **ary;
    MAGIC* mg;

    if (!av || num <= 0)
 return;
    if (((av)->sv_flags & 0x00800000))
 Perl_croak(Perl_no_modify);

    if (mg = ((((SV*)av)->sv_flags & 0x00008000) ? Perl_mg_find(((SV*)av),('P')) : ((MAGIC*)((void *)0)))) {
 extern int (*__errno_location ()); register SV **sp = PL_stack_sp;
 do { PERL_SI *next = PL_curstackinfo->si_next; if (!next) { next = Perl_new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); next->si_prev = PL_curstackinfo; PL_curstackinfo->si_next = next; } next->si_type = 2; next->si_cxix = -1; ((XPVAV*) (next->si_stack)->sv_any)->xav_fill = 0; do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (next->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_fill; PL_curstack = next->si_stack; } while (0); PL_curstackinfo = next; (void)0; } while (0);
 if (++PL_markstack_ptr == PL_markstack_max) Perl_markstack_grow(); *PL_markstack_ptr = (sp) - PL_stack_base;
 do { if (PL_stack_max - sp < (1+num)) { sp = Perl_stack_grow(sp,sp, (int) (1+num)); } } while (0);
 (*++sp = (((mg)->mg_obj ? (mg)->mg_obj : Perl_sv_2mortal(Perl_newRV((SV*)av)))));
 while (num-- > 0) {
     (*++sp = (&PL_sv_undef));
 }
 PL_stack_sp = sp;
 Perl_push_scope();
 perl_call_method("UNSHIFT", 0|2);
 Perl_pop_scope();
 do { PERL_SI *prev = PL_curstackinfo->si_prev; if (!prev) { fprintf(stderr, "panic: POPSTACK\n"); Perl_my_exit(1); } do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (prev->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_fill; PL_curstack = prev->si_stack; } while (0); PL_curstackinfo = prev; } while (0);
 return;
    }

    if (!(((XPVAV*) (av)->sv_any)->xav_flags & 1) && (((XPVAV*) (av)->sv_any)->xav_flags & 2))
 Perl_av_reify(av);
    i = ((SV**)((XPVAV*) (av)->sv_any)->xav_array) - ((XPVAV*) (av)->sv_any)->xav_alloc;
    if (i) {
 if (i > num)
     i = num;
 num -= i;

 ((XPVAV*) (av)->sv_any)->xav_max += i;
 ((XPVAV*) (av)->sv_any)->xav_fill += i;
 ((XPV*) (av)->sv_any)->xpv_pv = (char*)(((SV**)((XPVAV*) (av)->sv_any)->xav_array) - i);
    }
    if (num) {
 i = ((XPVAV*) (av)->sv_any)->xav_fill;
 Perl_av_extend(av, i + num);
 ((XPVAV*) (av)->sv_any)->xav_fill += num;
 ary = ((SV**)((XPVAV*) (av)->sv_any)->xav_array);
 (void)Perl_my_bcopy((char*)(ary),(char*)(ary + num),(i + 1) * sizeof(SV*));
 do {
     ary[--num] = &PL_sv_undef;
 } while (num);
    }
}

SV *
Perl_av_shift(register AV *av)
{
    SV *retval;
    MAGIC* mg;

    if (!av || (((((SV *) (av))->sv_flags & 0x00008000)) ? Perl_mg_size((SV *) av) : ((XPVAV*) (av)->sv_any)->xav_fill) < 0)
 return &PL_sv_undef;
    if (((av)->sv_flags & 0x00800000))
 Perl_croak(Perl_no_modify);
    if (mg = ((((SV*)av)->sv_flags & 0x00008000) ? Perl_mg_find(((SV*)av),('P')) : ((MAGIC*)((void *)0)))) {
 extern int (*__errno_location ()); register SV **sp = PL_stack_sp;
 do { PERL_SI *next = PL_curstackinfo->si_next; if (!next) { next = Perl_new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); next->si_prev = PL_curstackinfo; PL_curstackinfo->si_next = next; } next->si_type = 2; next->si_cxix = -1; ((XPVAV*) (next->si_stack)->sv_any)->xav_fill = 0; do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (next->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_fill; PL_curstack = next->si_stack; } while (0); PL_curstackinfo = next; (void)0; } while (0);
 if (++PL_markstack_ptr == PL_markstack_max) Perl_markstack_grow(); *PL_markstack_ptr = (sp) - PL_stack_base;
 do { do { if (PL_stack_max - sp < (1)) { sp = Perl_stack_grow(sp,sp, (int) (1)); } } while (0); (*++sp = (((mg)->mg_obj ? (mg)->mg_obj : Perl_sv_2mortal(Perl_newRV((SV*)av))))); } while (0);
 PL_stack_sp = sp;
 Perl_push_scope();
 if (perl_call_method("SHIFT", 0)) {
     retval = Perl_newSVsv(*PL_stack_sp--);
 } else {
     retval = &PL_sv_undef;
 }
 Perl_pop_scope();
 do { PERL_SI *prev = PL_curstackinfo->si_prev; if (!prev) { fprintf(stderr, "panic: POPSTACK\n"); Perl_my_exit(1); } do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (prev->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_fill; PL_curstack = prev->si_stack; } while (0); PL_curstackinfo = prev; } while (0);
 return retval;
    }
    retval = *((SV**)((XPVAV*) (av)->sv_any)->xav_array);
    if ((((XPVAV*) (av)->sv_any)->xav_flags & 1))
 *((SV**)((XPVAV*) (av)->sv_any)->xav_array) = &PL_sv_undef;
    ((XPV*) (av)->sv_any)->xpv_pv = (char*)(((SV**)((XPVAV*) (av)->sv_any)->xav_array) + 1);
    ((XPVAV*) (av)->sv_any)->xav_max--;
    ((XPVAV*) (av)->sv_any)->xav_fill--;
    if (((av)->sv_flags & 0x00004000))
 Perl_mg_set((SV*)av);
    return retval;
}

I32
Perl_av_len(register AV *av)
{
    return (((((SV *) (av))->sv_flags & 0x00008000)) ? Perl_mg_size((SV *) av) : ((XPVAV*) (av)->sv_any)->xav_fill);
}

void
Perl_av_fill(register AV *av, I32 fill)
{
    MAGIC *mg;
    if (!av)
 Perl_croak("panic: null array");
    if (fill < 0)
 fill = -1;
    if (mg = ((((SV*)av)->sv_flags & 0x00008000) ? Perl_mg_find(((SV*)av),('P')) : ((MAGIC*)((void *)0)))) {
 extern int (*__errno_location ()); register SV **sp = PL_stack_sp;
 Perl_push_scope();
 Perl_save_int((int*)&PL_tmps_floor), PL_tmps_floor = PL_tmps_ix;
 do { PERL_SI *next = PL_curstackinfo->si_next; if (!next) { next = Perl_new_stackinfo(32, 2048/sizeof(PERL_CONTEXT) - 1); next->si_prev = PL_curstackinfo; PL_curstackinfo->si_next = next; } next->si_type = 2; next->si_cxix = -1; ((XPVAV*) (next->si_stack)->sv_any)->xav_fill = 0; do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (next->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (next->si_stack)->sv_any)->xav_fill; PL_curstack = next->si_stack; } while (0); PL_curstackinfo = next; (void)0; } while (0);
 if (++PL_markstack_ptr == PL_markstack_max) Perl_markstack_grow(); *PL_markstack_ptr = (sp) - PL_stack_base;
 do { if (PL_stack_max - sp < (2)) { sp = Perl_stack_grow(sp,sp, (int) (2)); } } while (0);
 (*++sp = (((mg)->mg_obj ? (mg)->mg_obj : Perl_sv_2mortal(Perl_newRV((SV*)av)))));
 (*++sp = (Perl_sv_2mortal(Perl_newSViv(fill+1))));
 PL_stack_sp = sp;
 perl_call_method("STORESIZE", 0|2);
 do { PERL_SI *prev = PL_curstackinfo->si_prev; if (!prev) { fprintf(stderr, "panic: POPSTACK\n"); Perl_my_exit(1); } do { ((XPVAV*) (PL_curstack)->sv_any)->xav_fill = sp - PL_stack_base; PL_stack_base = ((SV**)((XPVAV*) (prev->si_stack)->sv_any)->xav_array); PL_stack_max = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_max; sp = PL_stack_sp = PL_stack_base + ((XPVAV*) (prev->si_stack)->sv_any)->xav_fill; PL_curstack = prev->si_stack; } while (0); PL_curstackinfo = prev; } while (0);
 if (PL_tmps_ix > PL_tmps_floor) Perl_free_tmps();
 Perl_pop_scope();
 return;
    }
    if (fill <= ((XPVAV*) (av)->sv_any)->xav_max) {
 I32 key = ((XPVAV*) (av)->sv_any)->xav_fill;
 SV** ary = ((SV**)((XPVAV*) (av)->sv_any)->xav_array);

 if ((((XPVAV*) (av)->sv_any)->xav_flags & 1)) {
     while (key > fill) {
  Perl_sv_free((SV*)ary[key]);
  ary[key--] = &PL_sv_undef;
     }
 }
 else {
     while (key < fill)
  ary[++key] = &PL_sv_undef;
 }

 ((XPVAV*) (av)->sv_any)->xav_fill = fill;
 if (((av)->sv_flags & 0x00004000))
     Perl_mg_set((SV*)av);
    }
    else
 (void)Perl_av_store(av,fill,&PL_sv_undef);
}







static I32
avhv_index_sv(SV* sv)
{
    I32 index = (((sv)->sv_flags & 0x00010000) ? ((XPVIV*) (sv)->sv_any)->xiv_iv : Perl_sv_2iv(sv));
    if (index < 1)
 Perl_croak("Bad index while coercing array into hash");
    return index;
}

HV*
Perl_avhv_keys(AV *av)
{
    SV **keysp = Perl_av_fetch(av, 0, (0));
    if (keysp) {
 SV *sv = *keysp;
 if (((sv)->sv_flags & 0x00002000))
     Perl_mg_get(sv);
 if (((sv)->sv_flags & 0x00080000)) {
     sv = ((XRV*) (sv)->sv_any)->xrv_rv;
     if (((sv)->sv_flags & 0xff) == SVt_PVHV)
  return (HV*)sv;
 }
    }
    Perl_croak("Can't coerce array into hash");
    return ((HV*)((void *)0));
}

SV**
Perl_avhv_fetch_ent(AV *av, SV *keysv, I32 lval, U32 hash)
{
    SV **indsvp;
    HV *keys = Perl_avhv_keys(av);
    HE *he;

    he = Perl_hv_fetch_ent(keys, keysv, (0), hash);
    if (!he)
        Perl_croak("No such array field");
    return Perl_av_fetch(av, avhv_index_sv((he)->hent_val), lval);
}

bool
Perl_avhv_exists_ent(AV *av, SV *keysv, U32 hash)
{
    HV *keys = Perl_avhv_keys(av);
    return Perl_hv_exists_ent(keys, keysv, hash);
}

HE *
Perl_avhv_iternext(AV *av)
{
    HV *keys = Perl_avhv_keys(av);
    return Perl_hv_iternext(keys);
}

SV *
Perl_avhv_iterval(AV *av, register HE *entry)
{
    SV *sv = Perl_hv_iterval(Perl_avhv_keys(av), entry);
    return *Perl_av_fetch(av, avhv_index_sv(sv), (1));
}
