This is the mail archive of the gcc-prs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

c/4916: gcc 3.0.2 problem

[Get raw message]

>Number:         4916
>Category:       c
>Synopsis:       Internal compiler error in change_address, at emit-rtl.c:1635
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          wrong-code
>Submitter-Id:   net
>Arrival-Date:   Tue Nov 20 13:46:00 PST 2001
>Closed-Date:
>Last-Modified:
>Originator:     Jorja Henikoff
>Release:        3.0.2
>Organization:
Fred Hutchinson Cancer Research Center
>Environment:
System: SunOS bateson 5.8 Generic_108528-11 sun4u sparc SUNW,Sun-Blade-100
Architecture: sun4

	<machine, os, target, libraries (multiple lines)>
host: sparc-sun-solaris2.8
build: sparc-sun-solaris2.8
target: sparc-sun-solaris2.8
configured with: ../configure --with-as=/usr/local/bin/as --with-ld=/usr/local/bin/ld --enable-libgcj
>Description:
	gcc aborts with any -O options, finishes compile with -g
gcc -Wall -O2  -I../include  -c  addseqs.c
In file included from ../include/residues.h:14,
                 from ../include/blocksprogs.h:12,
                 from addseqs.c:50:
../include/aabet.h:61: warning: missing braces around initializer
../include/aabet.h:61: warning: (near initialization for `aa_adegen[0]')
In file included from ../include/residues.h:15,
                 from ../include/blocksprogs.h:12,
                 from addseqs.c:50:
../include/ntbet.h:156: warning: missing braces around initializer
../include/ntbet.h:156: warning: (near initialization for `nt_adegen[0]')
../include/ntbet.h:179: warning: missing braces around initializer
../include/ntbet.h:179: warning: (near initialization for `nt_bdegen[0]')
In file included from ../include/residues.h:16,
                 from ../include/blocksprogs.h:12,
                 from addseqs.c:50:
../include/gcode.h:24: warning: missing braces around initializer
../include/gcode.h:24: warning: (near initialization for `gcodes[0]')
addseqs.c: In function `best_pos':
addseqs.c:479: warning: `best_position' might be used uninitialized in this function
addseqs.c: In function `pssmdist':
addseqs.c:858: warning: double format, different type arg (arg 3)
addseqs.c:649: warning: `minfirst' might be used uninitialized in this function
addseqs.c:649: warning: `minlast' might be used uninitialized in this function
addseqs.c: In function `compute_dist':
addseqs.c:1147: Internal compiler error in change_address, at emit-rtl.c:1635
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://www.gnu.org/software/gcc/bugs.html> for instructions.
*** Error code 1
make: Fatal error: Command failed for target `addseqs.o'

>How-To-Repeat:

# 50 "addseqs.c"
# 1 "../include/blocksprogs.h" 1

# 1 "/usr/include/stdlib.h" 1 3
# 16 "/usr/include/stdlib.h" 3
#pragma ident "@(#)stdlib.h	1.47	99/11/03 SMI"

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 1 3
# 37 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 3
#pragma ident "@(#)stdlib_iso.h	1.2	99/12/21 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 13 "/usr/include/sys/feature_tests.h" 3
#pragma ident "@(#)feature_tests.h	1.18	99/07/26 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3
# 9 "/usr/include/sys/isa_defs.h" 3
#pragma ident "@(#)isa_defs.h	1.20	99/05/04 SMI"
# 16 "/usr/include/sys/feature_tests.h" 2 3
# 40 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 2 3






extern unsigned char __ctype[];
# 57 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 3
typedef struct {
        int quot;
        int rem;
} div_t;

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






typedef unsigned int size_t;
# 96 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/iso/stdlib_iso.h" 3
typedef long wchar_t;






extern void abort(void);
extern int abs(int);
extern int atexit(void (*)(void));
extern double atof(const char *);
extern int atoi(const char *);
extern long int atol(const char *);
extern void *bsearch(const void *, const void *, size_t, size_t,
        int (*)(const void *, const void *));
extern void *calloc(size_t, size_t);
extern div_t div(int, int);
extern void exit(int);
extern void free(void *);
extern char *getenv(const char *);
extern long int labs(long);
extern ldiv_t ldiv(long, long);
extern void *malloc(size_t);
extern int mblen(const char *, size_t);
extern size_t mbstowcs(wchar_t *, const char *, size_t);
extern int mbtowc(wchar_t *, const char *, size_t);
extern void qsort(void *, size_t, size_t,
        int (*)(const void *, const void *));
extern int rand(void);
extern void *realloc(void *, size_t);
extern void srand(unsigned int);
extern double strtod(const char *, char **);
extern long int strtol(const char *, char **, int);
extern unsigned long int strtoul(const char *, char **, int);
extern int system(const char *);
extern int wctomb(char *, wchar_t);
extern size_t wcstombs(char *, const wchar_t *, size_t);
# 19 "/usr/include/stdlib.h" 2 3
# 68 "/usr/include/stdlib.h" 3
typedef struct {
        long long quot;
        long long rem;
} lldiv_t;







typedef long uid_t;
# 112 "/usr/include/stdlib.h" 3
extern void _exithandle(void);




extern double drand48(void);
extern double erand48(unsigned short *);
extern long jrand48(unsigned short *);
extern void lcong48(unsigned short *);
extern long lrand48(void);
extern long mrand48(void);
extern long nrand48(unsigned short *);
extern unsigned short *seed48(unsigned short *);
extern void srand48(long);
extern int putenv(char *);
extern void setkey(const char *);
# 140 "/usr/include/stdlib.h" 3
typedef int ssize_t;



extern void swab(const char *, char *, ssize_t);





extern int mkstemp(char *);




extern int mkstemp64(char *);





extern long a64l(const char *);
extern char *ecvt(double, int, int *, int *);
extern char *fcvt(double, int, int *, int *);
extern char *gcvt(double, int, char *);
extern int getsubopt(char **, char *const *, char **);
extern int grantpt(int);
extern char *initstate(unsigned, char *, size_t);
extern char *l64a(long);
extern char *mktemp(char *);
extern char *ptsname(int);
extern long random(void);
extern char *realpath(const char *, char *);
extern char *setstate(const char *);
extern void srandom(unsigned);
extern int ttyslot(void);
extern int unlockpt(int);
extern void *valloc(size_t);




extern int dup2(int, int);
extern char *qecvt(long double, int, int *, int *);
extern char *qfcvt(long double, int, int *, int *);
extern char *qgcvt(long double, int, char *);
extern char *getcwd(char *, size_t);
extern const char *getexecname(void);
extern char *getlogin(void);
extern int getopt(int, char *const *, const char *);
extern char *optarg;
extern int optind, opterr, optopt;
extern char *getpass(const char *);
extern char *getpassphrase(const char *);
extern int getpw(uid_t, char *);
extern int isatty(int);
extern void *memalign(size_t, size_t);
extern char *ttyname(int);


extern long long atoll(const char *);
extern long long llabs(long long);
extern lldiv_t lldiv(long long, long long);
extern char *lltostr(long long, char *);
extern long long strtoll(const char *, char **, int);
extern unsigned long long strtoull(const char *, char **, int);
extern char *ulltostr(unsigned long long, char *);
# 3 "../include/blocksprogs.h" 2
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 1 3
# 14 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdarg.h" 1 3
# 43 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdarg.h" 3
typedef __builtin_va_list __gnuc_va_list;
# 15 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 2 3
# 34 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
#pragma ident "@(#)stdio.h	1.78	99/12/08 SMI"

# 1 "/usr/include/iso/stdio_iso.h" 1 3
# 32 "/usr/include/iso/stdio_iso.h" 3
#pragma ident "@(#)stdio_iso.h	1.2	99/10/25 SMI"


# 1 "/usr/include/sys/feature_tests.h" 1 3
# 36 "/usr/include/iso/stdio_iso.h" 2 3
# 1 "/usr/include/sys/va_list.h" 1 3
# 9 "/usr/include/sys/va_list.h" 3
#pragma ident "@(#)va_list.h	1.12	99/05/04 SMI"
# 26 "/usr/include/sys/va_list.h" 3
typedef void *__va_list;
# 37 "/usr/include/iso/stdio_iso.h" 2 3
# 1 "/usr/include/stdio_tag.h" 1 3
# 9 "/usr/include/stdio_tag.h" 3
#pragma ident "@(#)stdio_tag.h	1.3	98/04/20 SMI"
# 21 "/usr/include/stdio_tag.h" 3
typedef struct __FILE __FILE;
# 38 "/usr/include/iso/stdio_iso.h" 2 3
# 1 "/usr/include/stdio_impl.h" 1 3
# 9 "/usr/include/stdio_impl.h" 3
#pragma ident "@(#)stdio_impl.h	1.8	99/06/10 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3
# 12 "/usr/include/stdio_impl.h" 2 3
# 38 "/usr/include/stdio_impl.h" 3
struct __FILE
{




        ssize_t _cnt;
        unsigned char *_ptr;

        unsigned char *_base;
        unsigned char _flag;
        unsigned char _file;
        unsigned __orientation:2;
        unsigned __ionolock:1;
        unsigned __filler:5;
};
# 39 "/usr/include/iso/stdio_iso.h" 2 3
# 59 "/usr/include/iso/stdio_iso.h" 3
typedef long long __longlong_t;
# 75 "/usr/include/iso/stdio_iso.h" 3
typedef __FILE FILE;
# 88 "/usr/include/iso/stdio_iso.h" 3
typedef long fpos_t;
# 147 "/usr/include/iso/stdio_iso.h" 3
extern __FILE __iob[20];
# 164 "/usr/include/iso/stdio_iso.h" 3
extern int remove(const char *);
extern int rename(const char *, const char *);
extern FILE *tmpfile(void);
extern char *tmpnam(char *);
extern int fclose(FILE *);
extern int fflush(FILE *);
extern FILE *fopen(const char *, const char *);
extern FILE *freopen(const char *, const char *, FILE *);
extern void setbuf(FILE *, char *);
extern int setvbuf(FILE *, char *, int, size_t);

extern int fprintf(FILE *, const char *, ...);

extern int fscanf(FILE *, const char *, ...);

extern int printf(const char *, ...);

extern int scanf(const char *, ...);

extern int sprintf(char *, const char *, ...);

extern int sscanf(const char *, const char *, ...);
extern int vfprintf(FILE *, const char *, __va_list);
extern int vprintf(const char *, __va_list);
extern int vsprintf(char *, const char *, __va_list);
extern int fgetc(FILE *);
extern char *fgets(char *, int, FILE *);
extern int fputc(int, FILE *);
extern int fputs(const char *, FILE *);


extern int getc(FILE *);
extern int putc(int, FILE *);



extern int getchar(void);
extern int putchar(int);

extern char *gets(char *);
extern int puts(const char *);
extern int ungetc(int, FILE *);
extern size_t fread(void *, size_t, size_t, FILE *);
extern size_t fwrite(const void *, size_t, size_t, FILE *);
extern int fgetpos(FILE *, fpos_t *);
extern int fseek(FILE *, long, int);
extern int fsetpos(FILE *, const fpos_t *);
extern long ftell(FILE *);
extern void rewind(FILE *);


extern void clearerr(FILE *);
extern int feof(FILE *);
extern int ferror(FILE *);

extern void perror(const char *);


extern int __filbuf(FILE *);
extern int __flsbuf(int, FILE *);
# 37 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 2 3
# 105 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
typedef long off_t;







typedef __longlong_t off64_t;
# 123 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
typedef __longlong_t fpos64_t;
# 151 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern unsigned char _sibuf[], _sobuf[];
# 193 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern unsigned char *_bufendtab[];
extern FILE *_lastbuf;
# 229 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern void setbuffer(FILE *, char *, size_t);
extern int setlinebuf(FILE *);





extern int snprintf(char *, size_t, const char *, ...);




extern int vsnprintf(char *, size_t, const char *, __gnuc_va_list);
# 250 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern FILE *fdopen(int, const char *);
extern char *ctermid(char *);
extern int fileno(FILE *);
# 276 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern FILE *popen(const char *, const char *);
extern char *cuserid(char *);
extern char *tempnam(const char *, const char *);
extern int getopt(int, char *const *, const char *);

extern int getsubopt(char **, char *const *, char **);

extern char *optarg;
extern int optind, opterr, optopt;
extern int getw(FILE *);
extern int putw(int, FILE *);
extern int pclose(FILE *);







extern int fseeko(FILE *, off_t, int);
extern off_t ftello(FILE *);
# 305 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 3
extern FILE *fopen64(const char *, const char *);
extern FILE *freopen64(const char *, const char *, FILE *);
extern FILE *tmpfile64(void);
extern int fgetpos64(FILE *, fpos64_t *);
extern int fsetpos64(FILE *, const fpos64_t *);
extern int fseeko64(FILE *, off64_t, int);
extern off64_t ftello64(FILE *);
# 4 "../include/blocksprogs.h" 2
# 1 "/usr/include/string.h" 1 3
# 16 "/usr/include/string.h" 3
#pragma ident "@(#)string.h	1.24	99/08/10 SMI"

# 1 "/usr/include/iso/string_iso.h" 1 3
# 28 "/usr/include/iso/string_iso.h" 3
#pragma ident "@(#)string_iso.h	1.2	99/11/09 SMI"


# 1 "/usr/include/sys/feature_tests.h" 1 3
# 32 "/usr/include/iso/string_iso.h" 2 3
# 60 "/usr/include/iso/string_iso.h" 3
extern int memcmp(const void *, const void *, size_t);
extern void *memcpy(void *, const void *, size_t);
extern void *memmove(void *, const void *, size_t);
extern void *memset(void *, int, size_t);
extern char *strcat(char *, const char *);
extern int strcmp(const char *, const char *);
extern char *strcpy(char *, const char *);
extern int strcoll(const char *, const char *);
extern size_t strcspn(const char *, const char *);
extern char *strerror(int);
extern size_t strlen(const char *);
extern char *strncat(char *, const char *, size_t);
extern int strncmp(const char *, const char *, size_t);
extern char *strncpy(char *, const char *, size_t);
extern size_t strspn(const char *, const char *);
extern char *strtok(char *, const char *);
extern size_t strxfrm(char *, const char *, size_t);
# 112 "/usr/include/iso/string_iso.h" 3
extern void *memchr(const void *, int, size_t);
extern char *strchr(const char *, int);
extern char *strpbrk(const char *, const char *);
extern char *strrchr(const char *, int);
extern char *strstr(const char *, const char *);
# 19 "/usr/include/string.h" 2 3
# 63 "/usr/include/string.h" 3
extern void *memccpy(void *, const void *, int, size_t);




extern char *strsignal(int);
extern int ffs(int);
extern int strcasecmp(const char *, const char *);
extern int strncasecmp(const char *, const char *, size_t);
extern size_t strlcpy(char *, const char *, size_t);
extern size_t strlcat(char *, const char *, size_t);





extern char *strdup(const char *);
# 5 "../include/blocksprogs.h" 2
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 1 3
# 23 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 3
#pragma ident "@(#)math.h	2.10	99/07/29 SMI"

# 1 "/usr/include/iso/math_iso.h" 1 3







#pragma ident "@(#)math_iso.h	1.1	99/07/30 SMI"
# 20 "/usr/include/iso/math_iso.h" 3
typedef union _h_val {
        unsigned long _i[sizeof(double) / sizeof(unsigned long)];
        double _d;
} _h_val;


extern const _h_val __huge_val;
# 37 "/usr/include/iso/math_iso.h" 3
extern double acos (double);
extern double asin (double);
extern double atan (double);
extern double atan2 (double, double);
extern double cos (double);
extern double sin (double);
extern double tan (double);

extern double cosh (double);
extern double sinh (double);
extern double tanh (double);

extern double exp (double);
extern double frexp (double, int *);
extern double ldexp (double, int);
extern double log (double);
extern double log10 (double);
extern double modf (double, double *);

extern double pow (double, double);
extern double sqrt (double);

extern double ceil (double);
extern double fabs (double);
extern double floor (double);
extern double fmod (double, double);
# 26 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 2 3
# 89 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 3
extern int signgam;







enum version {libm_ieee = -1, c_issue_4, ansi_1, strict_ansi};


extern const enum version _lib_version;




struct exception {
        int type;
        char *name;
        double arg1;
        double arg2;
        double retval;
};
# 145 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 3
extern double erf (double);
extern double erfc (double);
extern double gamma (double);
extern double hypot (double, double);
extern int isnan (double);
extern double j0 (double);
extern double j1 (double);
extern double jn (int, double);
extern double lgamma (double);
extern double y0 (double);
extern double y1 (double);
extern double yn (int, double);
# 172 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 3
extern double acosh (double);
extern double asinh (double);
extern double atanh (double);
extern double cbrt (double);
extern double logb (double);
extern double nextafter (double, double);
extern double remainder (double, double);
extern double scalb (double, double);
# 192 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 3
extern double expm1 (double);
extern int ilogb (double);
extern double log1p (double);
extern double rint (double);
# 208 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 3
extern int matherr (struct exception *);




extern double significand (double);




extern double copysign (double, double);
extern double scalbn (double, int);
# 243 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 3
extern float modff (float, float *);






# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/floatingpoint.h" 1 3
# 20 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/floatingpoint.h" 3
#pragma ident "@(#)floatingpoint.h	2.5	99/06/22 SMI"


# 1 "/usr/include/stdio_tag.h" 1 3
# 24 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/floatingpoint.h" 2 3

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/ieeefp.h" 1 3
# 17 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/ieeefp.h" 3
#pragma ident "@(#)ieeefp.h	2.8 99/10/29"
# 27 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/ieeefp.h" 3
enum fp_direction_type {
        fp_nearest = 0,
        fp_tozero = 1,
        fp_positive = 2,
        fp_negative = 3
};

enum fp_precision_type {
        fp_extended = 0,
        fp_single = 1,
        fp_double = 2,
        fp_precision_3 = 3
};

enum fp_exception_type {
        fp_inexact = 0,
        fp_division = 1,
        fp_underflow = 2,
        fp_overflow = 3,
        fp_invalid = 4
};

enum fp_trap_enable_type {
        fp_trap_inexact = 0,
        fp_trap_division = 1,
        fp_trap_underflow = 2,
        fp_trap_overflow = 3,
        fp_trap_invalid = 4
};
# 133 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/ieeefp.h" 3
enum fp_class_type {
        fp_zero = 0,
        fp_subnormal = 1,
        fp_normal = 2,
        fp_infinity = 3,
        fp_quiet = 4,
        fp_signaling = 5
};
# 26 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/floatingpoint.h" 2 3
# 62 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/floatingpoint.h" 3
typedef int sigfpe_code_type;

typedef void (*sigfpe_handler_type)();





extern sigfpe_handler_type sigfpe (sigfpe_code_type, sigfpe_handler_type);




typedef float single;



typedef unsigned extended[3];


typedef long double quadruple;

typedef unsigned fp_exception_field_type;
# 94 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/floatingpoint.h" 3
typedef char decimal_string[512];


typedef struct {
        enum fp_class_type fpclass;
        int sign;
        int exponent;
        decimal_string ds;


        int more;


        int ndigits;


} decimal_record;

enum decimal_form {
        fixed_form,


        floating_form

};

typedef struct {
        enum fp_direction_type rd;

        enum decimal_form df;

        int ndigits;
} decimal_mode;

enum decimal_string_form {
        invalid_form,
        whitespace_form,
        fixed_int_form,
        fixed_intdot_form,
        fixed_dotfrac_form,
        fixed_intdotfrac_form,
        floating_int_form,
        floating_intdot_form,
        floating_dotfrac_form,
        floating_intdotfrac_form,
        inf_form,
        infinity_form,
        nan_form,
        nanstring_form
};

extern void single_to_decimal (single *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void double_to_decimal (double *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void extended_to_decimal (extended *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void quadruple_to_decimal (quadruple *, decimal_mode *, decimal_record *, fp_exception_field_type *);


extern void decimal_to_single (single *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void decimal_to_double (double *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void decimal_to_extended (extended *, decimal_mode *, decimal_record *, fp_exception_field_type *);

extern void decimal_to_quadruple (quadruple *, decimal_mode *, decimal_record *, fp_exception_field_type *);


extern void string_to_decimal (char **, int, int, decimal_record *, enum decimal_string_form *, char **);

extern void func_to_decimal (char **, int, int, decimal_record *, enum decimal_string_form *, char **, int (*)(void), int *, int (*)(int));


extern void file_to_decimal (char **, int, int, decimal_record *, enum decimal_string_form *, char **, FILE *, int *);



extern char *seconvert (single *, int, int *, int *, char *);
extern char *sfconvert (single *, int, int *, int *, char *);
extern char *sgconvert (single *, int, int, char *);
extern char *econvert (double, int, int *, int *, char *);
extern char *fconvert (double, int, int *, int *, char *);
extern char *gconvert (double, int, int, char *);
extern char *qeconvert (quadruple *, int, int *, int *, char *);
extern char *qfconvert (quadruple *, int, int *, int *, char *);
extern char *qgconvert (quadruple *, int, int, char *);

extern char *ecvt (double, int, int *, int *);
extern char *fcvt (double, int, int *, int *);
extern char *gcvt (double, int, char *);





extern double atof (const char *);
extern double strtod (const char *, char **);
# 251 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/math.h" 2 3
# 6 "../include/blocksprogs.h" 2
# 1 "/usr/include/unistd.h" 1 3
# 16 "/usr/include/unistd.h" 3
#pragma ident "@(#)unistd.h	1.58	99/11/11 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 19 "/usr/include/unistd.h" 2 3

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 1 3
# 25 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
#pragma ident "@(#)types.h	1.66	00/02/14 SMI"

# 1 "/usr/include/sys/isa_defs.h" 1 3
# 28 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 1 "/usr/include/sys/feature_tests.h" 1 3
# 29 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3




# 1 "/usr/include/sys/machtypes.h" 1 3
# 16 "/usr/include/sys/machtypes.h" 3
#pragma ident "@(#)machtypes.h	1.13	99/05/04 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 19 "/usr/include/sys/machtypes.h" 2 3
# 33 "/usr/include/sys/machtypes.h" 3
typedef struct _label_t { long val[2]; } label_t;



typedef unsigned char lock_t;
# 34 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 45 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
# 1 "/usr/include/sys/int_types.h" 1 3
# 9 "/usr/include/sys/int_types.h" 3
#pragma ident "@(#)int_types.h	1.6	97/08/20 SMI"
# 42 "/usr/include/sys/int_types.h" 3
# 1 "/usr/include/sys/isa_defs.h" 1 3
# 43 "/usr/include/sys/int_types.h" 2 3
# 62 "/usr/include/sys/int_types.h" 3
typedef char int8_t;





typedef short int16_t;
typedef int int32_t;




typedef long long int64_t;



typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;




typedef unsigned long long uint64_t;
# 94 "/usr/include/sys/int_types.h" 3
typedef int64_t intmax_t;
typedef uint64_t uintmax_t;
# 110 "/usr/include/sys/int_types.h" 3
typedef int intptr_t;
typedef unsigned int uintptr_t;







typedef char int_least8_t;





typedef short int_least16_t;
typedef int int_least32_t;




typedef long long int_least64_t;



typedef unsigned char uint_least8_t;
typedef unsigned short uint_least16_t;
typedef unsigned int uint_least32_t;




typedef unsigned long long uint_least64_t;
# 46 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 62 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long long longlong_t;
typedef unsigned long long u_longlong_t;
# 85 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long t_scalar_t;
typedef unsigned long t_uscalar_t;





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

typedef char *caddr_t;
typedef long daddr_t;
typedef short cnt_t;


typedef ulong_t paddr_t;
# 118 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef int ptrdiff_t;
# 127 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ulong_t pfn_t;
typedef ulong_t pgcnt_t;
typedef long spgcnt_t;

typedef uchar_t use_t;
typedef short sysid_t;
typedef short index_t;
typedef void *timeout_id_t;
typedef void *bufcall_id_t;
# 165 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ulong_t ino_t;
typedef long blkcnt_t;
typedef ulong_t fsblkcnt_t;
typedef ulong_t fsfilcnt_t;
# 183 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef u_longlong_t ino64_t;
typedef longlong_t blkcnt64_t;
typedef u_longlong_t fsblkcnt64_t;
typedef u_longlong_t fsfilcnt64_t;






typedef long blksize_t;





typedef enum { B_FALSE, B_TRUE } boolean_t;
# 210 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef int64_t pad64_t;
typedef uint64_t upad64_t;
# 223 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef longlong_t offset_t;
typedef u_longlong_t u_offset_t;
typedef u_longlong_t len_t;
typedef longlong_t diskaddr_t;
# 244 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef union {
        offset_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lloff_t;
# 264 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef union {
        diskaddr_t _f;
        struct {
                int32_t _u;
                int32_t _l;
        } _p;
} lldaddr_t;


typedef uint_t k_fltset_t;
# 287 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long id_t;






typedef uint_t useconds_t;



typedef long suseconds_t;
# 308 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ulong_t major_t;
typedef ulong_t minor_t;





typedef short pri_t;
# 328 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef ushort_t o_mode_t;
typedef short o_dev_t;
typedef ushort_t o_uid_t;
typedef o_uid_t o_gid_t;
typedef short o_nlink_t;
typedef short o_pid_t;
typedef ushort_t o_ino_t;





typedef int key_t;



typedef ulong_t mode_t;
# 356 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef uid_t gid_t;

typedef id_t taskid_t;
typedef id_t projid_t;






typedef unsigned int pthread_t;
typedef unsigned int pthread_key_t;

typedef struct _pthread_mutex {
        struct {
                uint16_t __pthread_mutex_flag1;
                uint8_t __pthread_mutex_flag2;
                uint8_t __pthread_mutex_ceiling;
                uint32_t __pthread_mutex_type;
        } __pthread_mutex_flags;
        union {
                struct {
                        uint8_t __pthread_mutex_pad[8];
                } __pthread_mutex_lock64;
                upad64_t __pthread_mutex_owner64;
        } __pthread_mutex_lock;
        upad64_t __pthread_mutex_data;
} pthread_mutex_t;

typedef struct _pthread_cond {
        struct {
                uint8_t __pthread_cond_flag[4];
                uint32_t __pthread_cond_type;
        } __pthread_cond_flags;
        upad64_t __pthread_cond_data;
} pthread_cond_t;




typedef struct _pthread_rwlock {
        int32_t __pthread_rwlock_readers;
        uint16_t __pthread_rwlock_type;
        uint16_t __pthread_rwlock_magic;
        upad64_t __pthread_rwlock_pad1[3];
        upad64_t __pthread_rwlock_pad2[2];
        upad64_t __pthread_rwlock_pad3[2];
} pthread_rwlock_t;




typedef struct _pthread_attr {
        void *__pthread_attrp;
} pthread_attr_t;





typedef struct _pthread_mutexattr {
        void *__pthread_mutexattrp;
} pthread_mutexattr_t;





typedef struct _pthread_condattr {
        void *__pthread_condattrp;
} pthread_condattr_t;




typedef struct _once {
        upad64_t __pthread_once_pad[4];
} pthread_once_t;





typedef struct _pthread_rwlockattr {
        void *__pthread_rwlockattrp;
} pthread_rwlockattr_t;

typedef ulong_t dev_t;





typedef ulong_t nlink_t;
typedef long pid_t;
# 481 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef long time_t;




typedef long clock_t;




typedef int clockid_t;




typedef int timer_t;






typedef unsigned char unchar;
typedef unsigned short ushort;
typedef unsigned int uint;
typedef unsigned long ulong;
# 557 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 3
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef struct _quad { int val[2]; } quad_t;
typedef quad_t quad;






# 1 "/usr/include/sys/select.h" 1 3
# 12 "/usr/include/sys/select.h" 3
#pragma ident "@(#)select.h	1.16	98/04/27 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 15 "/usr/include/sys/select.h" 2 3


# 1 "/usr/include/sys/time.h" 1 3
# 22 "/usr/include/sys/time.h" 3
#pragma ident "@(#)time.h	2.66	01/01/17 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 25 "/usr/include/sys/time.h" 2 3
# 49 "/usr/include/sys/time.h" 3
struct timeval {
        time_t tv_sec;
        suseconds_t tv_usec;
};
# 82 "/usr/include/sys/time.h" 3
struct timezone {
        int tz_minuteswest;
        int tz_dsttime;
};
# 100 "/usr/include/sys/time.h" 3
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 1 3
# 101 "/usr/include/sys/time.h" 2 3
# 155 "/usr/include/sys/time.h" 3
struct itimerval {
        struct timeval it_interval;
        struct timeval it_value;
};
# 203 "/usr/include/sys/time.h" 3
typedef longlong_t hrtime_t;
# 320 "/usr/include/sys/time.h" 3
int adjtime(struct timeval *, struct timeval *);
# 331 "/usr/include/sys/time.h" 3
int getitimer(int, struct itimerval *);
int utimes(const char *, const struct timeval *);



int setitimer(int, struct itimerval *, struct itimerval *);
# 369 "/usr/include/sys/time.h" 3
int settimeofday(struct timeval *, void *);

hrtime_t gethrtime(void);
hrtime_t gethrvtime(void);
# 389 "/usr/include/sys/time.h" 3
int gettimeofday(struct timeval *, void *);
# 410 "/usr/include/sys/time.h" 3
# 1 "/usr/include/time.h" 1 3
# 16 "/usr/include/time.h" 3
#pragma ident "@(#)time.h	1.39	99/08/10 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 19 "/usr/include/time.h" 2 3
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 1 3
# 20 "/usr/include/time.h" 2 3
# 1 "/usr/include/iso/time_iso.h" 1 3
# 28 "/usr/include/iso/time_iso.h" 3
#pragma ident "@(#)time_iso.h	1.1	99/08/09 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 31 "/usr/include/iso/time_iso.h" 2 3
# 69 "/usr/include/iso/time_iso.h" 3
struct tm {
        int tm_sec;
        int tm_min;
        int tm_hour;
        int tm_mday;
        int tm_mon;
        int tm_year;
        int tm_wday;
        int tm_yday;
        int tm_isdst;
};




extern char *asctime(const struct tm *);
extern clock_t clock(void);
extern char *ctime(const time_t *);
extern double difftime(time_t, time_t);
extern struct tm *gmtime(const time_t *);
extern struct tm *localtime(const time_t *);
extern time_t mktime(struct tm *);
extern time_t time(time_t *);
extern size_t strftime(char *, size_t, const char *, const struct tm *);
# 21 "/usr/include/time.h" 2 3
# 67 "/usr/include/time.h" 3
extern char *strptime(const char *, const char *, struct tm *);
# 83 "/usr/include/time.h" 3
# 1 "/usr/include/sys/time_impl.h" 1 3
# 15 "/usr/include/sys/time_impl.h" 3
#pragma ident "@(#)time_impl.h	1.5	99/10/05 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 18 "/usr/include/sys/time_impl.h" 2 3
# 36 "/usr/include/sys/time_impl.h" 3
typedef struct timespec {
        time_t tv_sec;
        long tv_nsec;
} timespec_t;
# 60 "/usr/include/sys/time_impl.h" 3
typedef struct timespec timestruc_t;
# 79 "/usr/include/sys/time_impl.h" 3
typedef struct itimerspec {
        struct timespec it_interval;
        struct timespec it_value;
} itimerspec_t;
# 84 "/usr/include/time.h" 2 3
# 98 "/usr/include/time.h" 3
union sigval {
        int sival_int;
        void *sival_ptr;
};




struct sigevent {
        int sigev_notify;
        int sigev_signo;
        union sigval sigev_value;
        void (*sigev_notify_function)(union sigval);
        pthread_attr_t *sigev_notify_attributes;
        int __sigev_pad2;
};


extern int clock_getres(clockid_t, struct timespec *);
extern int clock_gettime(clockid_t, struct timespec *);
extern int clock_settime(clockid_t, const struct timespec *);
extern int timer_create(clockid_t, struct sigevent *, timer_t *);
extern int timer_delete(timer_t);
extern int timer_getoverrun(timer_t);
extern int timer_gettime(timer_t, struct itimerspec *);
extern int timer_settime(timer_t, int, const struct itimerspec *,
                struct itimerspec *);
extern int nanosleep(const struct timespec *, struct timespec *);




extern void tzset(void);

extern char *tzname[2];


extern long _sysconf(int);






extern long timezone;
extern int daylight;





extern int cftime(char *, char *, const time_t *);
extern int ascftime(char *, const char *, const struct tm *);
extern long altzone;




extern struct tm *getdate(const char *);






extern int getdate_err;
# 411 "/usr/include/sys/time.h" 2 3
# 423 "/usr/include/sys/time.h" 3
# 1 "/usr/include/sys/select.h" 1 3
# 424 "/usr/include/sys/time.h" 2 3
# 18 "/usr/include/sys/select.h" 2 3
# 45 "/usr/include/sys/select.h" 3
typedef long fd_mask;

typedef long fds_mask;
# 73 "/usr/include/sys/select.h" 3
typedef struct fd_set {



        long fds_bits[(((1024)+(((sizeof (fds_mask) * 8))-1))/((sizeof (fds_mask) * 8)))];
} fd_set;
# 97 "/usr/include/sys/select.h" 3
extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *);
# 570 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 2 3
# 21 "/usr/include/unistd.h" 2 3
# 1 "/usr/include/sys/unistd.h" 1 3
# 25 "/usr/include/sys/unistd.h" 3
#pragma ident "@(#)unistd.h	1.37	98/10/28 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 28 "/usr/include/sys/unistd.h" 2 3
# 22 "/usr/include/unistd.h" 2 3
# 171 "/usr/include/unistd.h" 3
extern int access(const char *, int);


extern int acct(const char *);

extern unsigned alarm(unsigned);


extern int brk(void *);

extern int chdir(const char *);
extern int chown(const char *, uid_t, gid_t);


extern int chroot(const char *);

extern int close(int);







extern char *ctermid(char *);




extern char *cuserid(char *);
extern int dup(int);
extern int dup2(int, int);




extern int execl(const char *, const char *, ...);
extern int execle(const char *, const char *, ...);
extern int execlp(const char *, const char *, ...);
extern int execv(const char *, char *const *);
extern int execve(const char *, char *const *, char *const *);
extern int execvp(const char *, char *const *);
extern void _exit(int);







extern int fattach(int, const char *);



extern int fchdir(int);
extern int fchown(int, uid_t, gid_t);



extern int fchroot(int);



extern int fdatasync(int);
# 243 "/usr/include/unistd.h" 3
extern int fdetach(const char *);

extern pid_t fork(void);


extern pid_t fork1(void);

extern long fpathconf(int, int);


extern int fsync(int);




extern int ftruncate(int, off_t);

extern char *getcwd(char *, size_t);


extern int getdtablesize(void);

extern gid_t getegid(void);
extern uid_t geteuid(void);
extern gid_t getgid(void);
extern int getgroups(int, gid_t *);


extern long gethostid(void);





extern int gethostname(char *, int);

extern char *getlogin(void);
# 289 "/usr/include/unistd.h" 3
extern int getpagesize(void);
extern pid_t getpgid(pid_t);

extern pid_t getpid(void);
extern pid_t getppid(void);
extern pid_t getpgrp(void);


char *gettxt(const char *, const char *);



extern pid_t getsid(pid_t);

extern uid_t getuid(void);


extern char *getwd(char *);
# 315 "/usr/include/unistd.h" 3
extern int ioctl(int, int, ...);



extern int isaexec(const char *, char *const *, char *const *);

extern int isatty(int);
extern int link(const char *, const char *);


extern int lchown(const char *, uid_t, gid_t);




extern int lockf(int, int, off_t);



extern int readlink(const char *, char *, size_t);

extern off_t lseek(int, off_t, int);


extern int nice(int);

extern long pathconf(const char *, int);
extern int pause(void);
extern int pipe(int *);


extern offset_t llseek(int, offset_t, int);




extern off_t tell(int);



extern int mincore(caddr_t, size_t, char *);




extern ssize_t pread(int, void *, size_t, off_t);



extern void profil(unsigned short *, size_t, unsigned long, unsigned int);



extern int pthread_atfork(void (*) (void), void (*) (void), void (*) (void));



extern long ptrace(int, pid_t, long, long);




extern ssize_t pwrite(int, const void *, size_t, off_t);

extern ssize_t read(int, void *, size_t);


extern int rename(const char *, const char *);



extern int resolvepath(const char *, char *, size_t);

extern int rmdir(const char *);


extern void *sbrk(intptr_t);

extern int setgid(gid_t);


extern int setegid(gid_t);



extern int setgroups(int, const gid_t *);

extern int setpgid(pid_t, pid_t);


extern pid_t setpgrp(void);
extern int setregid(gid_t, gid_t);
extern int setreuid(uid_t, uid_t);

extern pid_t setsid(void);
extern int setuid(uid_t);


extern int seteuid(uid_t);

extern unsigned sleep(unsigned);


extern int stime(const time_t *);







extern int symlink(const char *, const char *);
extern void sync(void);

extern long sysconf(int);
# 438 "/usr/include/unistd.h" 3
extern pid_t tcgetpgrp(int);
extern int tcsetpgrp(int, pid_t);


extern off_t tell(int);




extern int truncate(const char *, off_t);

extern char *ttyname(int);


extern useconds_t ualarm(useconds_t, useconds_t);

extern int unlink(const char *);


extern int usleep(useconds_t);



extern pid_t vfork(void);



extern void vhangup(void);

extern ssize_t write(int, const void *, size_t);


extern void yield(void);





extern int ftruncate64(int, off64_t);
extern off64_t lseek64(int, off64_t, int);
extern ssize_t pread64(int, void *, size_t, off64_t);
extern ssize_t pwrite64(int, const void *, size_t, off64_t);
extern off64_t tell64(int);
extern int truncate64(const char *, off64_t);
extern int lockf64(int, int, off64_t);
# 782 "/usr/include/unistd.h" 3
#pragma unknown_control_flow(vfork)
# 7 "../include/blocksprogs.h" 2
# 1 "/usr/include/ctype.h" 1 3
# 16 "/usr/include/ctype.h" 3
#pragma ident "@(#)ctype.h	1.33	99/08/10 SMI"

# 1 "/usr/include/iso/ctype_iso.h" 1 3
# 28 "/usr/include/iso/ctype_iso.h" 3
#pragma ident "@(#)ctype_iso.h	1.1	99/08/09 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 31 "/usr/include/iso/ctype_iso.h" 2 3
# 63 "/usr/include/iso/ctype_iso.h" 3
extern int isalnum(int);
extern int isalpha(int);
extern int iscntrl(int);
extern int isdigit(int);
extern int isgraph(int);
extern int islower(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);
extern int toupper(int);





extern unsigned char __ctype[];
extern unsigned int *__ctype_mask;
extern int *__trans_upper;
extern int *__trans_lower;
# 19 "/usr/include/ctype.h" 2 3
# 49 "/usr/include/ctype.h" 3
extern int isascii(int);
extern int toascii(int);
extern int _tolower(int);
extern int _toupper(int);
# 8 "../include/blocksprogs.h" 2

# 1 "../include/global.h" 1
# 15 "../include/global.h"
# 1 "/usr/include/stdlib.h" 1 3
# 16 "../include/global.h" 2
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 1 3
# 17 "../include/global.h" 2
# 1 "/usr/include/string.h" 1 3
# 18 "../include/global.h" 2
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stddef.h" 1 3
# 19 "../include/global.h" 2
# 1 "/usr/include/ctype.h" 1 3
# 20 "../include/global.h" 2
# 1 "/usr/include/malloc.h" 1 3
# 11 "/usr/include/malloc.h" 3
#pragma ident "@(#)malloc.h	1.11	97/08/23 SMI"

# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/sys/types.h" 1 3
# 14 "/usr/include/malloc.h" 2 3
# 31 "/usr/include/malloc.h" 3
struct mallinfo {
        unsigned long arena;
        unsigned long ordblks;
        unsigned long smblks;
        unsigned long hblks;
        unsigned long hblkhd;
        unsigned long usmblks;
        unsigned long fsmblks;
        unsigned long uordblks;
        unsigned long fordblks;
        unsigned long keepcost;
};



void *malloc(size_t);
void free(void *);
void *realloc(void *, size_t);
int mallopt(int, int);
struct mallinfo mallinfo(void);
void *calloc(size_t, size_t);
# 21 "../include/global.h" 2
# 30 "../include/global.h"
typedef int Boolean;
# 50 "../include/global.h"
# 1 "../include/license.h" 1
# 51 "../include/global.h" 2
# 1 "../include/strutil.h" 1
# 19 "../include/strutil.h"
extern char Buffer[500];
# 36 "../include/strutil.h"
extern Boolean blank_line();
# 51 "../include/strutil.h"
extern char *eat_whitespace();
# 66 "../include/strutil.h"
extern char *remove_trailing_whitespace();
# 86 "../include/strutil.h"
extern char *get_token();
# 52 "../include/global.h" 2
# 1 "../include/errors.h" 1
# 31 "../include/errors.h"
extern char ErrorBuffer[500];
extern int ErrorLevelReport;
# 47 "../include/errors.h"
extern void set_error_file_name();
# 62 "../include/errors.h"
extern void ErrorReport();
# 90 "../include/errors.h"
extern void ABRT_signal_handler();
# 53 "../include/global.h" 2
# 1 "../include/memory.h" 1
# 104 "../include/memory.h"
extern Boolean reclaim_space();
# 117 "../include/memory.h"
extern void init_reclaim_space();
# 54 "../include/global.h" 2
# 10 "../include/blocksprogs.h" 2
# 1 "../include/errors.h" 1
# 11 "../include/blocksprogs.h" 2
# 1 "../include/memory.h" 1
# 12 "../include/blocksprogs.h" 2
# 1 "../include/residues.h" 1
# 12 "../include/residues.h"
# 1 "../include/blastapp.h" 1
# 52 "../include/blastapp.h"
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/limits.h" 1 3
# 11 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/limits.h" 3
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/syslimits.h" 1 3
# 25 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/syslimits.h" 3
#pragma ident "@(#)limits.h	1.51	99/10/08 SMI"

# 1 "/usr/include/sys/feature_tests.h" 1 3
# 28 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/syslimits.h" 2 3
# 1 "/usr/include/sys/isa_defs.h" 1 3
# 29 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/syslimits.h" 2 3
# 1 "/usr/include/iso/limits_iso.h" 1 3
# 28 "/usr/include/iso/limits_iso.h" 3
#pragma ident "@(#)limits_iso.h	1.1	99/08/09 SMI"
# 30 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/syslimits.h" 2 3
# 41 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/syslimits.h" 3
# 1 "/usr/include/sys/int_limits.h" 1 3
# 9 "/usr/include/sys/int_limits.h" 3
#pragma ident "@(#)int_limits.h	1.6	99/08/06 SMI"
# 44 "/usr/include/sys/int_limits.h" 3
# 1 "/usr/include/sys/isa_defs.h" 1 3
# 45 "/usr/include/sys/int_limits.h" 2 3
# 42 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/syslimits.h" 2 3
# 12 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/limits.h" 2 3
# 53 "../include/blastapp.h" 2
# 13 "../include/residues.h" 2
# 1 "../include/alphabet.h" 1
# 24 "../include/alphabet.h"
typedef struct degen {
                char residue;
                int ndegen;
                char *list;
        } Degen, DegenPtr;
# 14 "../include/residues.h" 2
# 1 "../include/aabet.h" 1
# 32 "../include/aabet.h"
       int aa_atob[1<<8]

        = {
        ((24 +1)+1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +3),((24 +1)+1),(24 +1),(24 +1),((24 +1)+1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +3),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),24,(24 +1),(24 +1), 0,24,(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        ((24 +1)+2), 1,21, 5, 4, 7,14, 8, 9,10,23,12,11,13, 3,23,
        15, 6, 2,16,17,23,20,18,23,19,22,(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        ((24 +1)+2), 1,21, 5, 4, 7,14, 8, 9,10,23,12,11,13, 3,23,
        15, 6, 2,16,17,23,20,18,23,19,22,(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),

        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),
        (24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1),(24 +1) }

        ;


       char aa_btoa[] = "-ARNDCQEGHILKMFPSTWYVBZX*";

       Degen aa_adegen[25]

                = {
        '-', 1, "-",
        'A', 1, "A",
        'R', 1, "R",
        'N', 1, "N",
        'D', 1, "D",
        'C', 1, "C",
        'Q', 1, "Q",
        'E', 1, "E",
        'G', 1, "G",
        'H', 1, "H",
        'I', 1, "I",
        'L', 1, "L",
        'K', 1, "K",
        'M', 1, "M",
        'F', 1, "F",
        'P', 1, "P",
        'S', 1, "S",
        'T', 1, "T",
        'W', 1, "W",
        'Y', 1, "Y",
        'V', 1, "V",
        'B', 2, "DN",
        'Z', 2, "EQ",
        'X', 20, "ARNDCQEGHILKMFPSTWYV",
        '*', 1, "*"
        }

        ;
# 97 "../include/aabet.h"
       double aafq[21]


        = {0, .081, .057, .045, .054, .015, .039, .061, .068, .022, .057,
                  .093, .056, .025, .040, .049, .068, .058, .013, .032, .067 }

        ;
# 15 "../include/residues.h" 2
# 1 "../include/ntbet.h" 1
# 38 "../include/ntbet.h"
       int nt_atob[1<<8]

        = {
        ((15 +1)+1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +3),((15 +1)+1),(15 +1),(15 +1),((15 +1)+1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +3),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),((15 +1)+2),(15 +1),(15 +1),15,(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        ((15 +1)+2), 0,10, 1,11,14,14, 2,12,14,14, 7,14, 6,14,14,
        14,14, 4, 9, 3, 3,13, 8,14, 5,14,(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        ((15 +1)+2), 0,10, 1,11,14,14, 2,12,14,14, 7,14, 6,14,14,
        14,14, 4, 9, 3, 3,13, 8,14, 5,14,(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),

        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),
        (15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1),(15 +1)
        }

        ;

       char nt_btoa[] = "ACGTRYMKWSBDHVN-";
# 105 "../include/ntbet.h"
       char nt_brevcomp[128]

        = {
                 3, 2, 1, 0, 5, 4, 7, 6, 8, 9,13,12,11,10,14,15,
                16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
                16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
                16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
                16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
                16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
                16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
                16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16
        }

        ;

       char nt_arevcomp[128]


        = {
        '?','?','?','?','?','?','?','?',
        '?','?','?','?','?','?','?','?',
        '?','?','?','?','?','?','?','?',
        '?','?','?','?','?','?','?','?',
        '?','?','?','?','?','?','?','?',
        '?','?','?','?','?', '-','?','?',
        '?','?','?','?','?','?','?','?',
        '?','?','?','?','?','?','?','?',

        '?','T', 'V', 'G', 'H', '?','?','C',

        'D', '?','?','M', '?','K', 'N', '?',

        '?','?','Y', 'S', 'A', 'A', 'B', 'W',

        'N', 'R', '?','?','?','?','?','?',

        '?','T', 'V', 'G', 'H', '?','?','C',

        'D', '?','?','M', '?','K', 'N', '?',

        '?','?','Y', 'S', 'A', 'A', 'B', 'W',

        'N', 'R', '?','?','?','?','?','?',
        }


        ;

       Degen nt_adegen[16]

                = {
        'A', 1, "A",
        'C', 1, "C",
        'G', 1, "G",
        'T', 1, "T",
        'R', 2, "AG",
        'Y', 2, "CT",
        'M', 2, "AC",
        'K', 2, "GT",
        'W', 2, "AT",
        'S', 2, "CG",
        'B', 3, "CGT",
        'D', 3, "AGT",
        'H', 3, "ACT",
        'V', 3, "ACG",
        'N', 4, "ACGT",
        '-', 1, "-"
        }

        ;

       Degen nt_bdegen[16]

                = {
        '\000', 1, "\000",
        '\001', 1, "\001",
        '\002', 1, "\002",
        '\003', 1, "\003",
        '\004', 2, "\000\002",
        '\005', 2, "\001\003",
        '\006', 2, "\000\001",
        '\007', 2, "\002\003",
        '\010', 2, "\000\003",
        '\011', 2, "\001\002",
        '\012', 3, "\001\002\003",
        '\013', 3, "\000\002\003",
        '\014', 3, "\000\001\003",
        '\015', 3, "\000\001\002",
        '\016', 4, "\000\001\002\003",
        '\017', 1, "\017"
        }

        ;
# 217 "../include/ntbet.h"
       double ntfq[4]

        = { 0.25, 0.25, 0.25, 0.25 }

        ;
# 16 "../include/residues.h" 2
# 1 "../include/gcode.h" 1
# 12 "../include/gcode.h"
typedef struct {
        char *name;
        char *code;
        char *inits;
        } GeneticCode, *GeneticCodePtr;




       GeneticCode gcodes[9]

= {
"Standard",
"FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
"0000000000000000000000000000000000010000000000000000000000000000",

"Vertebrate Mitochondrial",
"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSS**VVVVAAAADDEEGGGG",
"0000000000000000000000000000000011110000000000000000000000000000",

"Yeast Mitochondrial",
"FFLLSSSSYY**CCWWTTTTPPPPHHQQRRRRIIMMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
"0000000000000000000000000000000000010000000000000000000000000000",

"Mold Mitochondrial and Mycoplasma",
"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
"0000000000000000000000000000000000010000000000000000000000000000",

"Invertebrate Mitochondrial",
"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSSSSVVVVAAAADDEEGGGG",
"0000000000000000000000000000000010110000000000000000000000000000",

"Ciliate Macronuclear",
"FFLLSSSSYYQQCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
"0000000000000000000000000000000000010000000000000000000000000000",

"Protozoan Mitochondrial",
"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
"0011000000000000000100000000000000010000000000000000000000000000",

"Plant Mitochondrial",
"FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRWIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG",
"0000000000000000000000000000000000010000000000000000000000000000",

"Echinodermate Mitochondrial",
"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNNKSSSSVVVVAAAADDEEGGGG",
"0000000000000000000000000000000000010000000000000000000000000000"
}

        ;


void init_gcode ();
unsigned char codon2aa ();
void aa2codon ();
# 17 "../include/residues.h" 2
# 13 "../include/blocksprogs.h" 2
# 1 "../include/blocks.h" 1
# 15 "../include/blocks.h"
# 1 "../include/output.h" 1
# 16 "../include/blocks.h" 2
# 1 "../include/sequences.h" 1
# 24 "../include/sequences.h"
typedef unsigned char Residue;

struct sequence_struct {
  char name[100];
  char info[100];
  int position;

  int length;
  int max_length;
  int type;
  double weight;

  int undefined;
  double undefined_dbl;
  void *undefined_ptr;
  Residue *sequence;
};
typedef struct sequence_struct Sequence;
# 81 "../include/sequences.h"
struct db_info {
   char *type;
   char *start;
   char *desc;
   char *seq;
   char *end;
   int title_offset;
   int seq_offset;
};

extern struct db_info DbInfo[10];
# 110 "../include/sequences.h"
extern Sequence *read_a_sequence();
# 136 "../include/sequences.h"
extern int read_sequence();
# 150 "../include/sequences.h"
extern int sequence_type();
# 164 "../include/sequences.h"
extern int sequence_comparison();
# 175 "../include/sequences.h"
extern void free_sequence();
# 195 "../include/sequences.h"
extern Sequence *translate_sequence();


extern Sequence *untranslate_sequence();
# 216 "../include/sequences.h"
extern int type_dbs();
# 232 "../include/sequences.h"
extern int seq_type_dbs();
# 242 "../include/sequences.h"
extern void print_sequence();
# 253 "../include/sequences.h"
extern void output_sequence();
# 264 "../include/sequences.h"
extern void resize_sequence();
# 17 "../include/blocks.h" 2
# 28 "../include/blocks.h"
struct cluster_struct {
  int num_sequences;
  Sequence *sequences;
};
typedef struct cluster_struct Cluster;

struct block_struct {
  char id[100];
  char ac[100];
  char de[100];
  char bl[100];
  char number[100];
  char family[100];
  char motif[20];
  int width;
  int percentile;
  int strength;
  int max_sequences;
  int num_sequences;
  int max_clusters;
  int num_clusters;
  int min_prev;
  int max_prev;
  int undefined;
  double undefined_dbl;
  void *undefined_ptr;
  Cluster *clusters;
  Sequence *sequences;
  Residue **residues;
};
typedef struct block_struct Block;
# 74 "../include/blocks.h"
extern Block *read_a_block ();
extern Block *read_a_block_faster ();
extern Boolean read_to_block();
# 90 "../include/blocks.h"
extern int block_comparison();
# 101 "../include/blocks.h"
extern void free_block() ;

extern int read_block_header();
extern void read_block_body();
extern void next_cluster();
# 114 "../include/blocks.h"
extern void resize_block_sequences();

extern void resize_block_clusters();
# 126 "../include/blocks.h"
extern void print_block();
# 137 "../include/blocks.h"
extern void output_block();
# 150 "../include/blocks.h"
extern void output_block_s();
# 160 "../include/blocks.h"
extern Block *new_block();
# 14 "../include/blocksprogs.h" 2
# 1 "../include/matrix.h" 1
# 12 "../include/matrix.h"
# 1 "../include/pattern.h" 1
# 16 "../include/pattern.h"
extern Boolean UsePatterns;

typedef struct pattern_residue_struct PatternResidue;
struct pattern_residue_struct {
  int offset;


  int num_residues;
  char *residues;
  PatternResidue *next;
};


struct pattern_struct {
  int beg_offset;

  int num_residues;
  PatternResidue *pat;
};
typedef struct pattern_struct Pattern;




extern void scan_patterns();

extern Boolean pattern_matches();

extern int residue_compare_function();
# 13 "../include/matrix.h" 2





typedef double MatType;
# 36 "../include/matrix.h"
struct matrix_struct {
  Block *block;
  char id[100];
  char ac[100];
  char de[80];
  char ma[100];
  char number[20];
  char motif[20];
  int width;
  int num_sequences;

  int percentile;
  int strength;
  int max_length;
  Pattern **patterns;

  int undefined;
  void *undefined_ptr;
  MatType *weights[26];
};
typedef struct matrix_struct Matrix;
# 73 "../include/matrix.h"
extern Matrix *read_a_matrix ();
# 87 "../include/matrix.h"
extern int matrix_comparison();
# 99 "../include/matrix.h"
extern Matrix *new_matrix();
# 111 "../include/matrix.h"
extern void free_matrix();
# 122 "../include/matrix.h"
extern void print_matrix();
# 135 "../include/matrix.h"
extern void output_matrix();
# 150 "../include/matrix.h"
extern void output_matrix_s();
# 165 "../include/matrix.h"
extern void output_matrix_st();
# 15 "../include/blocksprogs.h" 2
# 1 "../include/sequences.h" 1
# 16 "../include/blocksprogs.h" 2
# 1 "../include/aabet.h" 1
# 17 "../include/blocksprogs.h" 2
# 1 "../include/ntbet.h" 1
# 18 "../include/blocksprogs.h" 2
# 1 "../include/convert.h" 1
# 22 "../include/convert.h"
extern double RTot;

struct float_qij {
  double value[21][21];
  double marg[21];
};
extern struct float_qij *Qij;

struct pb_counts {
  double diffaas;
  double naas[26];
};




extern struct float_qij *load_qij();
extern void pb_weights();
# 53 "../include/convert.h"
extern Matrix *block_to_matrix();
# 70 "../include/convert.h"
extern void original_conversion_method();
# 90 "../include/convert.h"
extern void original_conversion_method_cleaned_up();
# 108 "../include/convert.h"
extern void pre_weighted_conversion_method();


extern void pb_weights();


extern void altschul_data_dependent_conversion_method();
extern void gribskov_conversion_method();
# 19 "../include/blocksprogs.h" 2
# 1 "../include/frequency.h" 1
# 22 "../include/frequency.h"
extern double frequency[26];

extern double Codon_Usage[64];
# 40 "../include/frequency.h"
extern Boolean load_frequencies();
# 51 "../include/frequency.h"
extern Boolean load_codons();






extern void frq_qij();
# 20 "../include/blocksprogs.h" 2
# 1 "../include/files.h" 1
# 25 "../include/files.h"
extern char ExportMatrixFile[100];
extern char OutputFile[100];






struct file_list {
  FILE *fp;
  int db_type;
  int seq_type;

  int num_files;
  int max_files;

  int cur_file;
  char **file_names;
};
typedef struct file_list FileList;

extern FileList BlockFiles;
extern FileList MatrixFiles;
extern FileList DatabaseFiles;
extern FileList FrequencyFile;
extern FileList SequenceFiles;
extern FileList PatternFiles;
# 71 "../include/files.h"
extern void insert_file();
# 83 "../include/files.h"
extern FILE *get_file();
# 96 "../include/files.h"
extern void rewind_file();
# 108 "../include/files.h"
extern char *get_current_file_name();
# 121 "../include/files.h"
char *get_file_name();
# 133 "../include/files.h"
extern int number_of_files();

extern void file_assign();
# 150 "../include/files.h"
extern int get_sequence_db_seq_type();
# 164 "../include/files.h"
extern int get_sequence_db_db_type();
# 185 "../include/files.h"
extern void close_file();
# 21 "../include/blocksprogs.h" 2
# 1 "../include/protomat.h" 1
# 12 "../include/protomat.h"
# 1 "/usr/include/stdlib.h" 1 3
# 13 "../include/protomat.h" 2
# 1 "/usr/local/lib/gcc-lib/sparc-sun-solaris2.8/3.0.2/include/stdio.h" 1 3
# 14 "../include/protomat.h" 2
# 1 "/usr/include/string.h" 1 3
# 15 "../include/protomat.h" 2
# 66 "../include/protomat.h"
typedef unsigned char *aa_type[20][20][24];




struct motif_struct {
  unsigned char aa1, aa2, aa3, distance1, distance2;

  int freq, dups;




  int seq_no[400], pos[400];
  int score, scores[55], domain, mots;
  char group, sub_group;
  };


struct group_struct {
  int group_no, sub_no, position;
  };






struct merged_motif {
        int dropped;
        char aa[3];
        int nmotif;

        int nident;

        int max_score;
        int domain;

        int distance;
        int dups;
        int loffset;
        int leftpos[400];

        int cluster[400];
        int scores[55];
        int t_loffset;

        int t_domain;
        int t_score;
        int position[400];
        int maxpos;
        int minpos;
        int in_degree;
        int out_degree;
};




struct sequences {
        int num;
        int totlen;
        int *len;
        int *offlen;
        char *name;
        char *seq;
};






struct aux_seq {
        int block[50];
};

struct temp {
        int value;
        int index;
        int flag;
};
struct dtemp {
        double value;
        int index;
};






struct pair {
        int score;
        int cluster;
};
# 170 "../include/protomat.h"
struct block_list {
        int b;
        int minprev;
        int maxprev;
        struct block_list *next_block;
        struct block_list *next_best;
        struct block_list *prev_best;
};







struct path {
        int nblocks;
        int nbest;
        int naas;
        unsigned long totscore;
        int totmotif;
        int totident;
        int nseqs;
        int seqs[400];
        struct block_list *first_block;
        struct block_list *first_best;

        struct path *next_path;
};





struct matrix {
        int npos;
        int maxdiff;

        int mark;
};

struct follow_data {
        struct path *path;
        int mark[50][50];
};


struct score {
        char scores[21][21];
        int highpass;
};


struct split_name {
        int dir_len, file_len, name_len;
};

struct db_id {
   char entry[18 +1];
   char ps[2];
   char info[80];
   int len;
   int frag;
   int lst;
   int found;
   int block;
   int search;
   int rank;
   int score;
   double pvalue;
   struct db_id *next;
   struct db_id *prior;
};

struct db_id *makedbid();
struct db_id *check_entry();
int get_ids();

struct split_name *split_names();

char *dir_unix();
int kr_atoi();
void kr_itoa();

void getscore();

char *num_to_aachar();
int aachar_to_num();
void pr_num_to_aa();
void pr_num_to_aa_space();
# 22 "../include/blocksprogs.h" 2
# 51 "addseqs.c" 2

struct blocks_list {
   int nblock;
   int nseq;
   int nadd;
   int mindist;
   int maxdist;
   int bestpos;
   int endpos;
   int bestscore;
   Block *block;
   Matrix *pssm, *pssm_frq;
   struct blocks_list *next;
};

struct seqseq {
   int seq, minseq, clump;
   double maxscore, minscore;
};

struct btemp {
   double score;
   int bnum;
   struct blocks_list *blist;
};

void addseq();
void assemble_hit();
void best_pos();
void scale_weights();
void fix_ac();
void add_cluster();
void write_seq();
void order_seq();
int btempcmp();
void compute_dist();


struct blocks_list *make_blist();
void insert_blist();
void free_blist();

struct score_struct {
        double ways, prob;
};
int pssmdist();

char Version[12] = " 5/ 2/00.1";
int NumSeqs, TN995, CutOff;
double TPabove;
double QMax;






int main(argc, argv)
     int argc;
     char *argv[];
{
   FILE *fseq, *fblk, *fout, *fqij, *fdat;
   Block *block;
   Sequence *sequence;
   struct blocks_list *blist, *bcur, *bprev;
   char frqname[80], qijname[80], siminame[80];
   char infile[80], outfile[80], seqsfile[80];
   char *blimps_dir;
   int i, j, not_in, in_order, above_cut, endpos;
   int fragment;
   int maxpos, minpos;
   int seqsonly, simionly, blksonly;

   ErrorLevelReport = 2;

   printf("ADDSEQS Version %s\n", Version);
   if (argc < 3)
   {
      printf("ADDSEQS: Copyright 1999 by the Fred Hutchinson Cancer");
      printf(" Research Center\n");
      printf("Adds sequences to blocks.\n");
      printf("USAGE:  addseqs <in_block_file> <seqs_file> <out_blocks_file>\n");
      printf("                <in_block_file> = input blocks\n");
      printf("		      <seqs_file>     = fasta format sequences\n");
      printf("                <out_file>      = output file\n");
      printf("                <blks|seqs|simi>= processing option\n");
      printf("                   blks = add sequences to blocks & output blocks\n");
      printf("                   seqs = add sequences to blocks & output sequences\n");
      printf("                   simi = add sequences to blocks & do similarity analysis\n");
   }


   if (argc > 1)
      strcpy(infile, argv[1]);
   else
   {
      printf("\nEnter name of file containing blocks: ");
      gets(infile);
   }
   if ( (fblk=fopen(infile, "r")) == ((void *)0))
   {
      printf("\nCannot open file %s\n", infile);
      exit(-1);
   }


   if (argc > 2)
      strcpy(seqsfile, argv[2]);
   else
   {
      printf("\nEnter name of sequence file: ");
      gets(seqsfile);
   }
   if ( (fseq=fopen(seqsfile, "r")) == ((void *)0))
   {
      printf("\nCannot open file %s\n", seqsfile);
      exit(-1);
   }

   if (argc > 3)
      strcpy(outfile, argv[3]);
   else
   {
      printf("\nEnter name of output seqs file: ");
      gets(outfile);
   }
   if ( (fout=fopen(outfile, "w")) == ((void *)0))
   {
      printf("\nCannot open file %s\n", outfile);
      exit(-1);
   }

   blksonly = 1; seqsonly = 0; simionly = 0;
   if (argc > 4)
   {
      if (strcasecmp(argv[4], "seqs") == 0)
      {
         blksonly = 0; seqsonly = 1; simionly = 0;
      }
      else if (strcasecmp(argv[4], "simi") == 0)
      {
         blksonly = 0; seqsonly = 0; simionly = 1;
      }
   }
   CutOff = 800;






   blimps_dir = getenv("BLIMPS_DIR");
   frqname[0] = '\0';
   if (blimps_dir != ((void *)0)) sprintf(frqname, "%s/docs/", blimps_dir);
   strcat(frqname, "default.amino.frq");

   load_frequencies(frqname);
   qijname[0] = '\0';
   if (blimps_dir != ((void *)0)) sprintf(qijname, "%s/docs/", blimps_dir);
   strcat(qijname, "default.qij");
   Qij = ((void *)0);
   if ( (fqij=fopen(qijname, "r")) != ((void *)0)) Qij = load_qij(fqij);
   fclose(fqij);
   RTot = 5.0;




   blist = make_blist();
   while ((block = read_a_block(fblk)) != ((void *)0))
   {
       pb_weights(block);
       scale_weights(block, 1);
       insert_blist(blist, block);
   }
   fclose(fblk);
   if (blist->nblock == 0)
   {
      printf("No blocks found in %s .\n", infile);
      exit(-1);
   }



   NumSeqs = 0;
   while (!((fseq)->_flag & 0020) &&
      (sequence = read_a_sequence(fseq, 7, 0)) != ((void *)0))
   {
     NumSeqs += 1;
     fragment = 0;
     if (strstr(sequence->info, "FRAGMENT") != ((void *)0)) fragment = 1;


     bcur = blist->next;
     minpos = 9999; maxpos = -9999;
     endpos = -9999;
     not_in = in_order = above_cut = 1;
     while (bcur != ((void *)0) && bcur->block != ((void *)0))
     {
         for (i = 0; i < bcur->block->num_sequences; i++)
         {
            j = (int) strlen(bcur->block->sequences[i].name);
            if ((int) strlen(sequence->name) < j) j = strlen(sequence->name);
          if ((strncmp(sequence->name, bcur->block->sequences[i].name, j)) == 0)
                not_in = 0;
         }
         if (not_in)
         {

           bcur->bestpos = bcur->endpos = bcur->bestscore = -999;
           best_pos(bcur, sequence);

           if (bcur->bestscore < CutOff) above_cut = 0;
           if (bcur->bestpos < endpos)
           {
               printf(" out of order %d, previous end %d\n",
                       bcur->bestpos, endpos);
               in_order = 0;
           }
           else
           { endpos = bcur->bestpos + bcur->block->width; }

           if (bcur->bestpos < 0 || endpos > sequence->length)
                fragment = 1;

           if (bcur->bestpos < minpos) minpos = bcur->bestpos;
           if ((bcur->bestpos + bcur->block->width) > maxpos)
                maxpos = bcur->bestpos + bcur->block->width - 1;
         }
         bcur = bcur->next;
     }




     if ( (!blksonly && not_in) ||
           (blksonly && not_in && !fragment && in_order && above_cut) )
     {
        bcur = blist->next; bprev = ((void *)0);
        while (bcur != ((void *)0) && bcur->block != ((void *)0))
        {
            addseq(bprev, bcur, sequence);
            if (!blist->nadd) add_cluster(bcur->block);
            bprev = bcur;
            bcur = bcur->next;
        }
        blist->nadd += 1;


        if (!blksonly && blist->nblock > 1)
           assemble_hit(blist, &minpos, &maxpos);
     }
     if (seqsonly)
     {
        write_seq(fout, sequence, minpos, maxpos);
     }


     if (simionly) strcpy(siminame, sequence->name);
     free_sequence(sequence);
   }

   if (NumSeqs == 0)
   {
      printf("No sequences found in %s .\n", seqsfile);
      exit(-1);
   }
   fclose(fseq);
   printf("\n");



   if (!seqsonly)
   {
      bcur = blist->next;
      while (bcur != ((void *)0) && bcur->block != ((void *)0))
      {
         if (blksonly ||
             (simionly && bcur->block->undefined))
         {
            pb_weights(bcur->block);
            scale_weights(bcur->block, 0);
            fix_ac(bcur);
            output_block(bcur->block, fout);
            if (simionly)
            {
                printf("Query added to %s\n", bcur->block->number);
            }
         }
         bcur = bcur->next;
      }
   }
   fclose(fout);
   if (!simionly)
      printf("%d sequences added\n", blist->nadd);


   if (blksonly)
   {
      if ( (fdat=fopen("addseqs.dat", "a")) != ((void *)0))
      {
         fprintf(fdat, "%s %d %d %d %d\n",
              blist->next->block->number, blist->nblock, blist->nseq,
              blist->next->block->num_sequences, NumSeqs);
         fclose(fdat);
      }
   }

   exit(0);

}





void addseq(bprev, blist, seq)
struct blocks_list *bprev, *blist;
Sequence *seq;
{
   int j, pos, posj, prevdist, clmax, newseq;





      pos = blist->bestpos;
      if (blist->block->num_sequences + 1 > blist->block->max_sequences)
      {
         resize_block_sequences(blist->block);




      }

      newseq = blist->block->num_sequences;

      blist->block->sequences[newseq].position = pos + 1;
      strcpy(blist->block->sequences[newseq].name, seq->name);
      strcpy(blist->block->sequences[newseq].info, seq->info);
      blist->block->sequences[newseq].undefined = 1;
      blist->block->sequences[newseq].max_length =
             blist->block->width;



      blist->block->num_sequences += 1;

      clmax = blist->block->num_clusters - 1;
      blist->block->clusters[clmax].num_sequences += 1;
# 410 "addseqs.c"
      for (j=0; j< blist->block->width; j++)
      {
         if (blist->bestscore >= CutOff)
         {
            posj = pos + j;
            if (posj >= 0 && posj < seq->length)
               blist->block->sequences[newseq].sequence[j] =
                      seq->sequence[posj];
            else
               blist->block->sequences[newseq].sequence[j] = 23;
         }
         else
         {
            blist->block->sequences[newseq].sequence[j] = 23;
         }
      }


      prevdist = pos;
      if (bprev != ((void *)0))
      {
         prevdist -= (bprev->block->sequences[newseq].position + bprev->block->width);
      }
      if (prevdist < blist->mindist) blist->mindist = prevdist;
      if (prevdist > blist->maxdist) blist->maxdist = prevdist;

}




void scale_weights(block, stype)
Block *block;
int stype;
{
   double maxweight, minweight, sumweight, factor;
   int seq;

   sumweight = maxweight = 0.0; minweight = 999999.9;
   for (seq = 0; seq < block->num_sequences; seq++)
   {
      sumweight += block->sequences[seq].weight;
      if (block->sequences[seq].weight > maxweight)
           maxweight = block->sequences[seq].weight;
      if (block->sequences[seq].weight < minweight)
           minweight = block->sequences[seq].weight;
   }

   factor = 1.0;

   if (stype == 0) factor = 100. / maxweight;

   else if (stype == 1) factor = (double) block->num_sequences / sumweight;

        else if (stype > 1) factor = (double) stype / sumweight;

   for (seq = 0; seq < block->num_sequences; seq++)
   {
      block->sequences[seq].weight *= factor;
   }
}





void best_pos(blist, seq)
struct blocks_list *blist;
Sequence *seq;
{
  int scan_pos, seq_pos, mat_pos, best_position;
  double seq_score, max_seq_score;

  max_seq_score = 0.0;







  for (seq_pos= -blist->pssm->width+1; seq_pos < seq->length; seq_pos++) {





    seq_score = 0.0;



    for (mat_pos=0; mat_pos < blist->pssm->width; mat_pos++) {




      scan_pos = seq_pos + mat_pos;
      if ((scan_pos >= 0) && (scan_pos < seq->length)) {
        seq_score += blist->pssm->weights[seq->sequence[scan_pos]][mat_pos];
      }
      else {
        seq_score += blist->pssm->weights[aa_atob['-']][mat_pos];

      }

    }


      if (seq_score > max_seq_score) {
        max_seq_score = seq_score;
        best_position = seq_pos;
      }

  }


  if (blist->pssm->percentile > 0)
  {
     printf("%s %s calibrated ", seq->name, blist->block->number);
     max_seq_score *= 1000.0;
     max_seq_score /= (double) blist->pssm->percentile;
  }
  blist->bestpos = best_position;
  blist->endpos = best_position + blist->block->width - 1;
  blist->bestscore = ((max_seq_score >= 0.0) ? (int) (max_seq_score+0.5) : (int) (max_seq_score-0.5));
  printf("best score = %5d at %d\n", blist->bestscore, blist->bestpos);

}




struct blocks_list *make_blist()
{
   struct blocks_list *new;

   new = (struct blocks_list *) malloc (sizeof(struct blocks_list));
   new->nblock = new->nseq = new->nadd = 0;
   new->bestscore = new->bestpos = new->maxdist = -9999;
   new->mindist = 9999;
   new->block = ((void *)0);
   new->next = ((void *)0);

   return(new);
}






void insert_blist(blist, block)
struct blocks_list *blist;
Block *block;
{
   struct blocks_list *cur;
   char *ptr, ctemp[80];

   cur = blist;
   while (cur->next != ((void *)0)) cur = cur->next;
   cur->next = make_blist();
   cur->next->block = block;

   cur->next->pssm = block_to_matrix(block, 3);
   cur->next->pssm_frq = block_to_matrix(block, 2);



   strcpy(ctemp, block->ac);
   ptr = strtok(ctemp, "(");
   if (ptr != ((void *)0))
   {
      ptr = strtok(((void *)0), ",");
      if (ptr != ((void *)0))
      {
          cur->next->mindist = atoi(ptr);
          ptr = strtok(((void *)0), ")");
          if (ptr != ((void *)0))
          { cur->next->maxdist = atoi(ptr);}
      }
   }


   if (cur->next->pssm->percentile <= 0)
   {
      cur->next->pssm->percentile = pssmdist(cur->next->pssm, 0, frequency, ((void *)0));
      block->percentile = cur->next->pssm->percentile;




   }
   if (cur->next->pssm->strength <= 0)
   {
      cur->next->pssm->strength = pssmdist(cur->next->pssm, 1, frequency, cur->next->pssm_frq);
      block->strength = cur->next->pssm->strength;




   }


   blist->nblock += 1;
   blist->nseq = block->num_sequences;

}


void free_blist(blist)
struct blocks_list *blist;
{
   struct blocks_list *cur, *last;
   cur = last = blist;
   while (cur->next != ((void *)0))
   {
      last = cur; cur = cur->next;
   }
   if (cur != blist)
   {
      free(cur);
      last->next = ((void *)0);
      free_blist(last);
   }
   else free(blist);

}





int pssmdist(matrix, ftype, freqs, obs_freqs)
Matrix *matrix, *obs_freqs;
int ftype;
double *freqs;
{
  struct score_struct *last, *this, ends[6000];
  struct score_struct middle[6000], scores[2][6000];
  int col, aa, minvalue, maxvalue, minscore, maxscore, mincol, maxcol;
  int x, score, minfirst, minlast;
  double cum, aligns, report, ftemp, dtemp, probwt[60];


  if (ftype == 1) report = (double) 0.5 * 100;
  else report = (double) 0.005 * 185371;
  minscore = maxscore = 0;
  maxvalue = -1;
  minvalue = 9999;
  probwt[0] = 20.0;
  for (col = 0; col < matrix->width; col++)
  {

     if (col > 0) probwt[col] = probwt[col - 1] * 20.0;
     mincol = 9999; maxcol = -1;

     for (aa = 1; aa <= 20; aa++)
     {
        if (matrix->weights[aa][col] > maxvalue)
            maxvalue = matrix->weights[aa][col];
        if (matrix->weights[aa][col] < minvalue)
            minvalue = matrix->weights[aa][col];
        if (matrix->weights[aa][col] > maxcol)
            maxcol = matrix->weights[aa][col];
        if (matrix->weights[aa][col] < mincol)
            mincol = matrix->weights[aa][col];
     }
     maxscore += maxcol;
     minscore += mincol;
     if (col == 0) minfirst = mincol;
     if (col == (matrix->width - 1) ) minlast = mincol;
   }




   dtemp = probwt[matrix->width - 1] * 21.0 - 40.0;
   cum = 0.0;
   for (col = 0; col < matrix->width; col++)
   {
      probwt[col] = probwt[col] * 19.0 / dtemp;
      cum += probwt[col];
      if (col < matrix->width - 1) cum += probwt[col];
   }

   if (minfirst < minscore) minscore = minfirst;
   if (minlast < minscore) minscore = minlast;
# 705 "addseqs.c"
   if (maxscore > 6000) maxscore = 6000 - 1;
   last = scores[0]; this = scores[1];
   for (x = minvalue; x <= maxscore; x++)
   { last[x].ways = last[x].prob = this[x].ways = this[x].prob = 0.0;
      ends[x].ways = ends[x].prob = middle[x].ways = middle[x].prob = 0.0; }



   col = 0;

   for (aa=1; aa <= 20; aa++)
   {
      x = matrix->weights[aa][col];
      last[x].ways += 1.0;
      if (ftype == 1) ftemp = obs_freqs->weights[aa][col] / 100.;
      else ftemp = freqs[aa];
      last[x].prob += ftemp;
   }



   for (col=1; col < matrix->width; col++)
   {


      for (x=minvalue; x <= maxscore; x++)
      {
            ends[x].ways += last[x].ways;
            ends[x].prob += last[x].prob * probwt[col - 1];
      }

      for (aa=1; aa <= 20; aa++)
      {
         for (x=minvalue; x <= maxscore; x++)
         {
            if (last[x].ways > 0)
            {
               score = x + matrix->weights[aa][col];
               this[score].ways += last[x].ways;
               if (ftype == 1) ftemp = obs_freqs->weights[aa][col] / 100.;
               else ftemp = freqs[aa];
               this[score].prob += last[x].prob * ftemp;
            }
         }
      }

      if (this == scores[1])
      { last = scores[1]; this = scores[0]; }
      else
      { last = scores[0]; this = scores[1]; }
      for (x = minvalue; x <= maxscore; x++)
      { this[x].ways = this[x].prob = 0.0; }
   }






   for (x=minvalue; x <= maxscore; x++)
   {
        middle[x].ways = last[x].ways;
        middle[x].prob = last[x].prob * probwt[matrix->width - 1];
        last[x].ways = last[x].prob = 0.0;
   }



   col = matrix->width - 1;
   for (aa=1; aa <= 20; aa++)
   {
      x = matrix->weights[aa][col];
      last[x].ways += 1.0;
      if (ftype == 1) ftemp = obs_freqs->weights[aa][col] / 100.;
      else ftemp = freqs[aa];
      last[x].prob += ftemp;
   }
   for (col = matrix->width - 2; col >= 1; col--)
   {


      for (x=minvalue; x <= maxscore; x++)
      {
            ends[x].ways += last[x].ways;
            ends[x].prob += last[x].prob * probwt[matrix->width - col - 2];
      }
      for (aa=1; aa <= 20; aa++)
      {
         for (x=minvalue; x <= maxscore; x++)
         {
            if (last[x].ways > 0)
            {
               score = x + matrix->weights[aa][col];
               this[score].ways += last[x].ways;
               if (ftype == 1) ftemp = obs_freqs->weights[aa][col] / 100.;
               else ftemp = freqs[aa];
               this[score].prob += last[x].prob * ftemp;
            }
         }
      }

      if (this == scores[1])
      { last = scores[1]; this = scores[0]; }
      else
      { last = scores[0]; this = scores[1]; }
      for (x = minvalue; x <= maxscore; x++)
      { this[x].ways = this[x].prob = 0.0; }
   }


   for (x=minvalue; x <= maxscore; x++)
   {
         ends[x].ways += last[x].ways;
         ends[x].prob += last[x].prob * probwt[matrix->width - 2];
   }



   if (ftype == 1) aligns = 100;
   else aligns = (double) 58639837 + 185371 * (matrix->width - 1);


   if (ftype == 1 && TN995 > 0)
   {
      x = maxscore; TPabove = 0.0;
      while (x > TN995)
      {
         if (middle[x].prob > 0.0 || ends[x].prob > 0.0)
         {
            TPabove += (middle[x].prob + ends[x].prob) * aligns;
         }
         x--;
      }
   }


   x = maxscore; cum = 0.0;



   while (cum < report && x >= 0)
   {
       if (middle[x].prob > 0.0 || ends[x].prob > 0.0)
       {





          cum += (middle[x].prob + ends[x].prob) * aligns;
       }
       x--;
   }
   if (ftype == 1) printf("Median TP score = %d, TPabove = %f\n",
                           x, TPabove);
   else printf("99.5 TN score = %d\n", x);
   return(x);
}




void fix_ac(blist)
struct blocks_list *blist;
{
   sprintf(blist->block->ac, "%s; distance from previous block=(%d,%d)",
           blist->block->number, blist->mindist, blist->maxdist);
}




void add_cluster(block)
Block *block;
{

   if (block->num_clusters + 1 > block->max_clusters)
   {
      resize_block_clusters(block);
   }

   block->clusters[ block->num_clusters - 1 ].num_sequences -= 1;
   block->clusters[ block->num_clusters ].num_sequences = 1;
   block->clusters[ block->num_clusters ].sequences =
          &(block->sequences[ block->num_sequences - 1 ]);
   block->num_clusters += 1;
}



void write_seq(fout, seq, minpos, maxpos)
FILE *fout;
Sequence *seq;
int minpos, maxpos;
{
   int min, max, pos;

   min = 9999; max = -9999;

   if ((minpos < 0) || (maxpos > seq->length) || (maxpos < minpos))
   {
        printf("Cannot write %s of length %d from %d to %d\n",
            seq->name, seq->length, minpos, maxpos);
   }
   else
   {
      min = minpos - 10;
      if (minpos < 0) minpos = 0;
      max = maxpos + 10;
      if (maxpos > seq->length) maxpos = seq->length;
      fprintf(fout, ">%s %s from %d to %d\n",
        seq->name, seq->info, min+1, max+1);
      for (pos=min; pos < max; pos++)
      {

          fprintf(fout, "%c", aa_btoa[seq->sequence[pos]]);
          if ((pos+1)%60 == 0) { fprintf(fout, "\n"); }
      }
      fprintf(fout, "\n");
   }
}






void order_seq(sseq, b1, b2)
struct seqseq *sseq;
Block *b1, *b2;
{
   int nseq, i1, i2;

   nseq = b1->num_sequences;
   if (b2->num_sequences < nseq) nseq = b2->num_sequences;
   for (i1 = 0; i1 < nseq; i1++)
   {
      if (b1 == b2) sseq[i1].seq = i1;
      else
      {
         sseq[i1].seq = -1;
         i2 = 0;
         while (sseq[i1].seq < 0 && i2 < nseq)
         {
            if (strcmp(b1->sequences[i1].name, b2->sequences[i2].name) == 0)
               sseq[i1].seq = i2;
            i2++;
         }
      }
   }
}
# 966 "addseqs.c"
void assemble_hit(blist, minpos, maxpos)
struct blocks_list *blist;
int *minpos, *maxpos;
{
   struct blocks_list *bcur, *bprev;
   struct btemp *btemp;
   int i, j, qseq;

   btemp = (struct btemp *) malloc(blist->nblock * sizeof(struct btemp));

   bcur = blist->next; bprev = ((void *)0);
   i = 0;
   while (bcur != ((void *)0) && bcur->block != ((void *)0))
   {
      btemp[i].score = bcur->bestscore;
      btemp[i].bnum = i+1;
      btemp[i].blist = bcur;
      bcur->block->undefined = 0;
      i++;
      bprev = bcur;
      bcur = bcur->next;
   }

   qsort(btemp, blist->nblock, sizeof(struct btemp), btempcmp);


   btemp[0].blist->block->undefined = 1;
   qseq = btemp[0].blist->block->num_sequences - 1;
   for (i=1; i<blist->nblock; i++)
   {
      btemp[i].blist->block->undefined = 1;
      for (j=0; j<i; j++)
      {
         if (btemp[j].blist->block->undefined &&
             ( (btemp[j].blist->bestscore < CutOff) ||
               (btemp[i].bnum < btemp[j].bnum &&
                btemp[i].blist->endpos > btemp[j].blist->bestpos) ||
               (btemp[i].bnum > btemp[j].bnum &&
                btemp[i].blist->bestpos < btemp[j].blist->endpos) ) )
         {
               btemp[i].blist->block->sequences[qseq].undefined = 0;
               btemp[i].blist->block->undefined = 0;
         }
      }
   }

   *minpos = *maxpos; *maxpos = -999;
   bcur = blist->next;
   while (bcur != ((void *)0) && bcur->block != ((void *)0))
   {
      if (bcur->block->sequences[qseq].undefined)
      {
         if (bcur->block->sequences[qseq].position < *minpos)
                    *minpos = bcur->block->sequences[qseq].position;
         if (bcur->block->sequences[qseq].position > *maxpos)
                    *maxpos = bcur->block->sequences[qseq].position;
      }
      bcur = bcur->next;
   }

   free(btemp);
}




int btempcmp(t1, t2)
struct btemp *t1, *t2;
{
   double diff;

   diff = t2->score - t1->score;
   if (diff > 0.0) return(1);
   else if (diff < 0.0) return(-1);
   else return(0);

}
# 1061 "addseqs.c"
void compute_dist(ofp, mtype, nseq, seqs, mat)
FILE *ofp;
int mtype;
int nseq;
Sequence *seqs[1000];
struct float_qij *mat;
{
   int length, s1, s2, aa1, aa2, pos;
   double dist[1000][1000], maxdist, meandist, maxscore, dtemp;

   maxdist = -999;
   meandist = 0.0;

   for (s1=0; s1<nseq; s1++)
   {
      length = seqs[s1]->length;
      for (s2=s1; s2<nseq; s2++)
      {
         if (seqs[s2]->length < length)
         {
            printf("WARNING: sequence segments are of different lengths\n");
            printf("%s %d : %s %d\n", seqs[s1]->name, seqs[s1]->length,
                                     seqs[s2]->name, seqs[s2]->length);
            length = seqs[s2]->length;
         }
         dist[s1][s2] = maxscore = 0.0;
         for (pos=0; pos<length; pos++)
         {
            aa1 = seqs[s1]->sequence[pos];
            aa2 = seqs[s2]->sequence[pos];
            dist[s1][s2] += mat->value[aa1][aa2];
            dtemp = mat->value[aa1][aa1];
            if (mat->value[aa2][aa2] > dtemp) dtemp = mat->value[aa2][aa2];
            maxscore += dtemp;
         }
         if (mtype == 3)
         {
            dist[s1][s2] /= maxscore;

            if (dist[s1][s2] > 1.0) dist[s1][s2] = 1.0;
            if (dist[s1][s2] < -1.0) dist[s1][s2] = -1.0;
         }

      }
   }






   for (s1=0; s1<nseq; s1++)
   {
      for (s2=s1; s2<nseq; s2++)
      {
         meandist += dist[s1][s2];
         if (dist[s1][s2] > maxdist)
              maxdist = dist[s1][s2];
         if (s1 != s2)
                 dist[s2][s1] = dist[s1][s2];
      }
   }

   dtemp = (double) nseq * (nseq + 1.0) / 2.0;
   meandist /= dtemp;
   printf("Mean dissimilarity distance = %.2f\n",
           (maxdist - meandist) );



   for (s1=0; s1<nseq; s1++)
   {
      fprintf(ofp, "%s ", seqs[s1]->name);
      for (s2=0; s2<nseq; s2++)
      {
         if (mtype == 1)
            fprintf(ofp, "%.0f ", dist[s1][s2]);
         else if (mtype == 2)
            fprintf(ofp, "%.0f ", maxdist - dist[s1][s2]);
         else if (mtype == 3)
            fprintf(ofp, "%.2f ", dist[s1][s2]);
      if ((s2%25 == 0)) fprintf(ofp, "\n");
      }
      if (s2 == nseq) fprintf(ofp, "\n");
   }


}

	.file	"addseqs.i"
	.global aa_atob
	.section	".data"
	.align 4
	.type	aa_atob,#object
	.size	aa_atob,1024
aa_atob:
	.uaword	26
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	27
	.uaword	26
	.uaword	25
	.uaword	25
	.uaword	26
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	27
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	24
	.uaword	25
	.uaword	25
	.uaword	0
	.uaword	24
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	27
	.uaword	1
	.uaword	21
	.uaword	5
	.uaword	4
	.uaword	7
	.uaword	14
	.uaword	8
	.uaword	9
	.uaword	10
	.uaword	23
	.uaword	12
	.uaword	11
	.uaword	13
	.uaword	3
	.uaword	23
	.uaword	15
	.uaword	6
	.uaword	2
	.uaword	16
	.uaword	17
	.uaword	23
	.uaword	20
	.uaword	18
	.uaword	23
	.uaword	19
	.uaword	22
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	27
	.uaword	1
	.uaword	21
	.uaword	5
	.uaword	4
	.uaword	7
	.uaword	14
	.uaword	8
	.uaword	9
	.uaword	10
	.uaword	23
	.uaword	12
	.uaword	11
	.uaword	13
	.uaword	3
	.uaword	23
	.uaword	15
	.uaword	6
	.uaword	2
	.uaword	16
	.uaword	17
	.uaword	23
	.uaword	20
	.uaword	18
	.uaword	23
	.uaword	19
	.uaword	22
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.uaword	25
	.global aa_btoa
	.align 8
	.type	aa_btoa,#object
	.size	aa_btoa,26
aa_btoa:
	.asciz	"-ARNDCQEGHILKMFPSTWYVBZX*"
	.global aa_adegen
	.section	".rodata"
	.align 8
.LLC0:
	.asciz	"-"
	.align 8
.LLC1:
	.asciz	"A"
	.align 8
.LLC2:
	.asciz	"R"
	.align 8
.LLC3:
	.asciz	"N"
	.align 8
.LLC4:
	.asciz	"D"
	.align 8
.LLC5:
	.asciz	"C"
	.align 8
.LLC6:
	.asciz	"Q"
	.align 8
.LLC7:
	.asciz	"E"
	.align 8
.LLC8:
	.asciz	"G"
	.align 8
.LLC9:
	.asciz	"H"
	.align 8
.LLC10:
	.asciz	"I"
	.align 8
.LLC11:
	.asciz	"L"
	.align 8
.LLC12:
	.asciz	"K"
	.align 8
.LLC13:
	.asciz	"M"
	.align 8
.LLC14:
	.asciz	"F"
	.align 8
.LLC15:
	.asciz	"P"
	.align 8
.LLC16:
	.asciz	"S"
	.align 8
.LLC17:
	.asciz	"T"
	.align 8
.LLC18:
	.asciz	"W"
	.align 8
.LLC19:
	.asciz	"Y"
	.align 8
.LLC20:
	.asciz	"V"
	.align 8
.LLC21:
	.asciz	"DN"
	.align 8
.LLC22:
	.asciz	"EQ"
	.align 8
.LLC23:
	.asciz	"ARNDCQEGHILKMFPSTWYV"
	.align 8
.LLC24:
	.asciz	"*"
	.section	".data"
	.align 4
	.type	aa_adegen,#object
	.size	aa_adegen,300
aa_adegen:
	.byte	45
	.skip 3
	.uaword	1
	.uaword	.LLC0
	.byte	65
	.skip 3
	.uaword	1
	.uaword	.LLC1
	.byte	82
	.skip 3
	.uaword	1
	.uaword	.LLC2
	.byte	78
	.skip 3
	.uaword	1
	.uaword	.LLC3
	.byte	68
	.skip 3
	.uaword	1
	.uaword	.LLC4
	.byte	67
	.skip 3
	.uaword	1
	.uaword	.LLC5
	.byte	81
	.skip 3
	.uaword	1
	.uaword	.LLC6
	.byte	69
	.skip 3
	.uaword	1
	.uaword	.LLC7
	.byte	71
	.skip 3
	.uaword	1
	.uaword	.LLC8
	.byte	72
	.skip 3
	.uaword	1
	.uaword	.LLC9
	.byte	73
	.skip 3
	.uaword	1
	.uaword	.LLC10
	.byte	76
	.skip 3
	.uaword	1
	.uaword	.LLC11
	.byte	75
	.skip 3
	.uaword	1
	.uaword	.LLC12
	.byte	77
	.skip 3
	.uaword	1
	.uaword	.LLC13
	.byte	70
	.skip 3
	.uaword	1
	.uaword	.LLC14
	.byte	80
	.skip 3
	.uaword	1
	.uaword	.LLC15
	.byte	83
	.skip 3
	.uaword	1
	.uaword	.LLC16
	.byte	84
	.skip 3
	.uaword	1
	.uaword	.LLC17
	.byte	87
	.skip 3
	.uaword	1
	.uaword	.LLC18
	.byte	89
	.skip 3
	.uaword	1
	.uaword	.LLC19
	.byte	86
	.skip 3
	.uaword	1
	.uaword	.LLC20
	.byte	66
	.skip 3
	.uaword	2
	.uaword	.LLC21
	.byte	90
	.skip 3
	.uaword	2
	.uaword	.LLC22
	.byte	88
	.skip 3
	.uaword	20
	.uaword	.LLC23
	.byte	42
	.skip 3
	.uaword	1
	.uaword	.LLC24
	.global aafq
	.align 8
	.type	aafq,#object
	.size	aafq,168
aafq:
	.uaword	0x0 ! ~0.00000000000000000000e0
	.uaword	0x0
	.uaword	0x3fb4bc6a ! ~8.10000000000000025535e-2
	.uaword	0x7ef9db23
	.uaword	0x3fad2f1a ! ~5.70000000000000020539e-2
	.uaword	0x9fbe76c9
	.uaword	0x3fa70a3d ! ~4.49999999999999983347e-2
	.uaword	0x70a3d70a
	.uaword	0x3faba5e3 ! ~5.39999999999999993894e-2
	.uaword	0x53f7ced9
	.uaword	0x3f8eb851 ! ~1.49999999999999994449e-2
	.uaword	0xeb851eb8
	.uaword	0x3fa3f7ce ! ~3.89999999999999999445e-2
	.uaword	0xd916872b
	.uaword	0x3faf3b64 ! ~6.09999999999999986677e-2
	.uaword	0x5a1cac08
	.uaword	0x3fb16872 ! ~6.80000000000000048850e-2
	.uaword	0xb020c49c
	.uaword	0x3f96872b ! ~2.19999999999999987232e-2
	.uaword	0x20c49ba
	.uaword	0x3fad2f1a ! ~5.70000000000000020539e-2
	.uaword	0x9fbe76c9
	.uaword	0x3fb7ced9 ! ~9.29999999999999993339e-2
	.uaword	0x16872b02
	.uaword	0x3facac08 ! ~5.60000000000000011657e-2
	.uaword	0x3126e979
	.uaword	0x3f999999 ! ~2.50000000000000013878e-2
	.uaword	0x9999999a
	.uaword	0x3fa47ae1 ! ~4.00000000000000008327e-2
	.uaword	0x47ae147b
	.uaword	0x3fa91687 ! ~4.90000000000000018874e-2
	.uaword	0x2b020c4a
	.uaword	0x3fb16872 ! ~6.80000000000000048850e-2
	.uaword	0xb020c49c
	.uaword	0x3fadb22d ! ~5.80000000000000029421e-2
	.uaword	0xe560419
	.uaword	0x3f8a9fbe ! ~1.29999999999999994033e-2
	.uaword	0x76c8b439
	.uaword	0x3fa0624d ! ~3.20000000000000006661e-2
	.uaword	0xd2f1a9fc
	.uaword	0x3fb126e9 ! ~6.70000000000000039968e-2
	.uaword	0x78d4fdf4
	.global nt_atob
	.align 4
	.type	nt_atob,#object
	.size	nt_atob,1024
nt_atob:
	.uaword	17
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	18
	.uaword	17
	.uaword	16
	.uaword	16
	.uaword	17
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	18
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	18
	.uaword	16
	.uaword	16
	.uaword	15
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	18
	.uaword	0
	.uaword	10
	.uaword	1
	.uaword	11
	.uaword	14
	.uaword	14
	.uaword	2
	.uaword	12
	.uaword	14
	.uaword	14
	.uaword	7
	.uaword	14
	.uaword	6
	.uaword	14
	.uaword	14
	.uaword	14
	.uaword	14
	.uaword	4
	.uaword	9
	.uaword	3
	.uaword	3
	.uaword	13
	.uaword	8
	.uaword	14
	.uaword	5
	.uaword	14
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	18
	.uaword	0
	.uaword	10
	.uaword	1
	.uaword	11
	.uaword	14
	.uaword	14
	.uaword	2
	.uaword	12
	.uaword	14
	.uaword	14
	.uaword	7
	.uaword	14
	.uaword	6
	.uaword	14
	.uaword	14
	.uaword	14
	.uaword	14
	.uaword	4
	.uaword	9
	.uaword	3
	.uaword	3
	.uaword	13
	.uaword	8
	.uaword	14
	.uaword	5
	.uaword	14
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.uaword	16
	.global nt_btoa
	.align 8
	.type	nt_btoa,#object
	.size	nt_btoa,17
nt_btoa:
	.asciz	"ACGTRYMKWSBDHVN-"
	.global nt_brevcomp
	.align 8
	.type	nt_brevcomp,#object
	.size	nt_brevcomp,128
nt_brevcomp:
	.byte	3
	.byte	2
	.byte	1
	.byte	0
	.byte	5
	.byte	4
	.byte	7
	.byte	6
	.byte	8
	.byte	9
	.byte	13
	.byte	12
	.byte	11
	.byte	10
	.byte	14
	.byte	15
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.byte	16
	.global nt_arevcomp
	.align 8
	.type	nt_arevcomp,#object
	.size	nt_arevcomp,128
nt_arevcomp:
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	45
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	84
	.byte	86
	.byte	71
	.byte	72
	.byte	63
	.byte	63
	.byte	67
	.byte	68
	.byte	63
	.byte	63
	.byte	77
	.byte	63
	.byte	75
	.byte	78
	.byte	63
	.byte	63
	.byte	63
	.byte	89
	.byte	83
	.byte	65
	.byte	65
	.byte	66
	.byte	87
	.byte	78
	.byte	82
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	84
	.byte	86
	.byte	71
	.byte	72
	.byte	63
	.byte	63
	.byte	67
	.byte	68
	.byte	63
	.byte	63
	.byte	77
	.byte	63
	.byte	75
	.byte	78
	.byte	63
	.byte	63
	.byte	63
	.byte	89
	.byte	83
	.byte	65
	.byte	65
	.byte	66
	.byte	87
	.byte	78
	.byte	82
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.byte	63
	.global nt_adegen
	.section	".rodata"
	.align 8
.LLC25:
	.asciz	"AG"
	.align 8
.LLC26:
	.asciz	"CT"
	.align 8
.LLC27:
	.asciz	"AC"
	.align 8
.LLC28:
	.asciz	"GT"
	.align 8
.LLC29:
	.asciz	"AT"
	.align 8
.LLC30:
	.asciz	"CG"
	.align 8
.LLC31:
	.asciz	"CGT"
	.align 8
.LLC32:
	.asciz	"AGT"
	.align 8
.LLC33:
	.asciz	"ACT"
	.align 8
.LLC34:
	.asciz	"ACG"
	.align 8
.LLC35:
	.asciz	"ACGT"
	.section	".data"
	.align 4
	.type	nt_adegen,#object
	.size	nt_adegen,192
nt_adegen:
	.byte	65
	.skip 3
	.uaword	1
	.uaword	.LLC1
	.byte	67
	.skip 3
	.uaword	1
	.uaword	.LLC5
	.byte	71
	.skip 3
	.uaword	1
	.uaword	.LLC8
	.byte	84
	.skip 3
	.uaword	1
	.uaword	.LLC17
	.byte	82
	.skip 3
	.uaword	2
	.uaword	.LLC25
	.byte	89
	.skip 3
	.uaword	2
	.uaword	.LLC26
	.byte	77
	.skip 3
	.uaword	2
	.uaword	.LLC27
	.byte	75
	.skip 3
	.uaword	2
	.uaword	.LLC28
	.byte	87
	.skip 3
	.uaword	2
	.uaword	.LLC29
	.byte	83
	.skip 3
	.uaword	2
	.uaword	.LLC30
	.byte	66
	.skip 3
	.uaword	3
	.uaword	.LLC31
	.byte	68
	.skip 3
	.uaword	3
	.uaword	.LLC32
	.byte	72
	.skip 3
	.uaword	3
	.uaword	.LLC33
	.byte	86
	.skip 3
	.uaword	3
	.uaword	.LLC34
	.byte	78
	.skip 3
	.uaword	4
	.uaword	.LLC35
	.byte	45
	.skip 3
	.uaword	1
	.uaword	.LLC0
	.global nt_bdegen
	.section	".rodata"
	.align 8
.LLC36:
	.asciz	""
	.asciz	""
	.align 8
.LLC37:
	.asciz	"\001"
	.align 8
.LLC38:
	.asciz	"\002"
	.align 8
.LLC39:
	.asciz	"\003"
	.align 8
.LLC40:
	.asciz	""
	.asciz	"\002"
	.align 8
.LLC41:
	.asciz	"\001\003"
	.align 8
.LLC42:
	.asciz	""
	.asciz	"\001"
	.align 8
.LLC43:
	.asciz	"\002\003"
	.align 8
.LLC44:
	.asciz	""
	.asciz	"\003"
	.align 8
.LLC45:
	.asciz	"\001\002"
	.align 8
.LLC46:
	.asciz	"\001\002\003"
	.align 8
.LLC47:
	.asciz	""
	.asciz	"\002\003"
	.align 8
.LLC48:
	.asciz	""
	.asciz	"\001\003"
	.align 8
.LLC49:
	.asciz	""
	.asciz	"\001\002"
	.align 8
.LLC50:
	.asciz	""
	.asciz	"\001\002\003"
	.align 8
.LLC51:
	.asciz	"\017"
	.section	".data"
	.align 4
	.type	nt_bdegen,#object
	.size	nt_bdegen,192
nt_bdegen:
	.byte	0
	.skip 3
	.uaword	1
	.uaword	.LLC36
	.byte	1
	.skip 3
	.uaword	1
	.uaword	.LLC37
	.byte	2
	.skip 3
	.uaword	1
	.uaword	.LLC38
	.byte	3
	.skip 3
	.uaword	1
	.uaword	.LLC39
	.byte	4
	.skip 3
	.uaword	2
	.uaword	.LLC40
	.byte	5
	.skip 3
	.uaword	2
	.uaword	.LLC41
	.byte	6
	.skip 3
	.uaword	2
	.uaword	.LLC42
	.byte	7
	.skip 3
	.uaword	2
	.uaword	.LLC43
	.byte	8
	.skip 3
	.uaword	2
	.uaword	.LLC44
	.byte	9
	.skip 3
	.uaword	2
	.uaword	.LLC45
	.byte	10
	.skip 3
	.uaword	3
	.uaword	.LLC46
	.byte	11
	.skip 3
	.uaword	3
	.uaword	.LLC47
	.byte	12
	.skip 3
	.uaword	3
	.uaword	.LLC48
	.byte	13
	.skip 3
	.uaword	3
	.uaword	.LLC49
	.byte	14
	.skip 3
	.uaword	4
	.uaword	.LLC50
	.byte	15
	.skip 3
	.uaword	1
	.uaword	.LLC51
	.global ntfq
	.align 8
	.type	ntfq,#object
	.size	ntfq,32
ntfq:
	.uaword	0x3fd00000 ! ~2.50000000000000000000e-1
	.uaword	0x0
	.uaword	0x3fd00000 ! ~2.50000000000000000000e-1
	.uaword	0x0
	.uaword	0x3fd00000 ! ~2.50000000000000000000e-1
	.uaword	0x0
	.uaword	0x3fd00000 ! ~2.50000000000000000000e-1
	.uaword	0x0
	.global gcodes
	.section	".rodata"
	.align 8
.LLC52:
	.asciz	"Standard"
	.align 8
.LLC53:
	.asciz	"FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG"
	.align 8
.LLC54:
	.asciz	"0000000000000000000000000000000000010000000000000000000000000000"
	.align 8
.LLC55:
	.asciz	"Vertebrate Mitochondrial"
	.align 8
.LLC56:
	.asciz	"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSS**VVVVAAAADDEEGGGG"
	.align 8
.LLC57:
	.asciz	"0000000000000000000000000000000011110000000000000000000000000000"
	.align 8
.LLC58:
	.asciz	"Yeast Mitochondrial"
	.align 8
.LLC59:
	.asciz	"FFLLSSSSYY**CCWWTTTTPPPPHHQQRRRRIIMMTTTTNNKKSSRRVVVVAAAADDEEGGGG"
	.align 8
.LLC60:
	.asciz	"Mold Mitochondrial and Mycoplasma"
	.align 8
.LLC61:
	.asciz	"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG"
	.align 8
.LLC62:
	.asciz	"Invertebrate Mitochondrial"
	.align 8
.LLC63:
	.asciz	"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIMMTTTTNNKKSSSSVVVVAAAADDEEGGGG"
	.align 8
.LLC64:
	.asciz	"0000000000000000000000000000000010110000000000000000000000000000"
	.align 8
.LLC65:
	.asciz	"Ciliate Macronuclear"
	.align 8
.LLC66:
	.asciz	"FFLLSSSSYYQQCC*WLLLLPPPPHHQQRRRRIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG"
	.align 8
.LLC67:
	.asciz	"Protozoan Mitochondrial"
	.align 8
.LLC68:
	.asciz	"0011000000000000000100000000000000010000000000000000000000000000"
	.align 8
.LLC69:
	.asciz	"Plant Mitochondrial"
	.align 8
.LLC70:
	.asciz	"FFLLSSSSYY**CC*WLLLLPPPPHHQQRRRWIIIMTTTTNNKKSSRRVVVVAAAADDEEGGGG"
	.align 8
.LLC71:
	.asciz	"Echinodermate Mitochondrial"
	.align 8
.LLC72:
	.asciz	"FFLLSSSSYY**CCWWLLLLPPPPHHQQRRRRIIIMTTTTNNNKSSSSVVVVAAAADDEEGGGG"
	.section	".data"
	.align 4
	.type	gcodes,#object
	.size	gcodes,108
gcodes:
	.uaword	.LLC52
	.uaword	.LLC53
	.uaword	.LLC54
	.uaword	.LLC55
	.uaword	.LLC56
	.uaword	.LLC57
	.uaword	.LLC58
	.uaword	.LLC59
	.uaword	.LLC54
	.uaword	.LLC60
	.uaword	.LLC61
	.uaword	.LLC54
	.uaword	.LLC62
	.uaword	.LLC63
	.uaword	.LLC64
	.uaword	.LLC65
	.uaword	.LLC66
	.uaword	.LLC54
	.uaword	.LLC67
	.uaword	.LLC61
	.uaword	.LLC68
	.uaword	.LLC69
	.uaword	.LLC70
	.uaword	.LLC54
	.uaword	.LLC71
	.uaword	.LLC72
	.uaword	.LLC54
	.global Version
	.align 8
	.type	Version,#object
	.size	Version,12
Version:
	.asciz	" 5/ 2/00.1"
	.skip 1
	.section	".rodata"
	.align 8
.LLC73:
	.asciz	"ADDSEQS Version %s\n"
	.align 8
.LLC74:
	.asciz	"ADDSEQS: Copyright 1999 by the Fred Hutchinson Cancer"
	.align 8
.LLC75:
	.asciz	" Research Center"
	.align 8
.LLC76:
	.asciz	"Adds sequences to blocks."
	.align 8
.LLC77:
	.asciz	"USAGE:  addseqs <in_block_file> <seqs_file> <out_blocks_file>"
	.align 8
.LLC78:
	.asciz	"                <in_block_file> = input blocks"
	.align 8
.LLC79:
	.asciz	"\t\t      <seqs_file>     = fasta format sequences"
	.align 8
.LLC80:
	.asciz	"                <out_file>      = output file"
	.align 8
.LLC81:
	.asciz	"                <blks|seqs|simi>= processing option"
	.align 8
.LLC82:
	.asciz	"                   blks = add sequences to blocks & output blocks"
	.align 8
.LLC83:
	.asciz	"                   seqs = add sequences to blocks & output sequences"
	.align 8
.LLC84:
	.asciz	"                   simi = add sequences to blocks & do similarity analysis"
	.align 8
.LLC85:
	.asciz	"\nEnter name of file containing blocks: "
	.align 8
.LLC86:
	.asciz	"r"
	.align 8
.LLC88:
	.asciz	"\nEnter name of sequence file: "
	.align 8
.LLC89:
	.asciz	"\nEnter name of output seqs file: "
	.align 8
.LLC90:
	.asciz	"w"
	.align 8
.LLC91:
	.asciz	"seqs"
	.align 8
.LLC92:
	.asciz	"simi"
	.align 8
.LLC93:
	.asciz	"BLIMPS_DIR"
	.align 8
.LLC94:
	.asciz	"%s/docs/"
	.align 8
.LLC95:
	.asciz	"default.amino.frq"
	.align 8
.LLC96:
	.asciz	"default.qij"
	.align 8
.LLC103:
	.asciz	"%d sequences added\n"
	.align 8
.LLC104:
	.asciz	"addseqs.dat"
	.align 8
.LLC105:
	.asciz	"a"
	.align 8
.LLC106:
	.asciz	"%s %d %d %d %d\n"
	.align 8
.LLC102:
	.asciz	"Query added to %s\n"
	.align 8
.LLC99:
	.asciz	"FRAGMENT"
	.align 8
.LLC100:
	.asciz	" out of order %d, previous end %d\n"
	.align 8
.LLC87:
	.asciz	"\nCannot open file %s\n"
	.align 8
.LLC98:
	.asciz	"No blocks found in %s .\n"
	.align 8
.LLC101:
	.asciz	"No sequences found in %s .\n"
	.align 8
.LLC97:
	.uaword	0x40140000 ! ~5.00000000000000000000e0
	.uaword	0x0
	.align 4
.LLC126:
	.uaword	-9999
	.section	".text"
	.align 4
	.global main
	.type	main,#function
	.proc	04
main:
	!#PROLOGUE# 0
	save	%sp, -624, %sp
	!#PROLOGUE# 1
	mov	2, %o1
	sethi	%hi(ErrorLevelReport), %o0
	st	%o1, [%o0+%lo(ErrorLevelReport)]
	sethi	%hi(.LLC73), %o0
	sethi	%hi(Version), %o1
	or	%o0, %lo(.LLC73), %o0
	call	printf, 0
	or	%o1, %lo(Version), %o1
	cmp	%i0, 2
	bg	.LL105
	cmp	%i0, 1
	sethi	%hi(.LLC74), %o0
	call	printf, 0
	or	%o0, %lo(.LLC74), %o0
	sethi	%hi(.LLC75), %o0
	call	puts, 0
	or	%o0, %lo(.LLC75), %o0
	sethi	%hi(.LLC76), %o0
	call	puts, 0
	or	%o0, %lo(.LLC76), %o0
	sethi	%hi(.LLC77), %o0
	call	puts, 0
	or	%o0, %lo(.LLC77), %o0
	sethi	%hi(.LLC78), %o0
	call	puts, 0
	or	%o0, %lo(.LLC78), %o0
	sethi	%hi(.LLC79), %o0
	call	puts, 0
	or	%o0, %lo(.LLC79), %o0
	sethi	%hi(.LLC80), %o0
	call	puts, 0
	or	%o0, %lo(.LLC80), %o0
	sethi	%hi(.LLC81), %o0
	call	puts, 0
	or	%o0, %lo(.LLC81), %o0
	sethi	%hi(.LLC82), %o0
	call	puts, 0
	or	%o0, %lo(.LLC82), %o0
	sethi	%hi(.LLC83), %o0
	call	puts, 0
	or	%o0, %lo(.LLC83), %o0
	sethi	%hi(.LLC84), %o0
	call	puts, 0
	or	%o0, %lo(.LLC84), %o0
	cmp	%i0, 1
.LL105:
	ble	.LL3
	sethi	%hi(.LLC85), %o0
	add	%fp, -336, %l5
	ld	[%i1+4], %o1
	call	strcpy, 0
	mov	%l5, %o0
	sethi	%hi(.LLC86), %l3
.LL104:
	mov	%l5, %o0
	call	fopen, 0
	or	%l3, %lo(.LLC86), %o1
	orcc	%o0, 0, %l4
	be	.LL79
	cmp	%i0, 2
	ble	.LL6
	sethi	%hi(.LLC88), %o0
	add	%fp, -496, %o2
	ld	[%i1+8], %o1
	call	strcpy, 0
	mov	%o2, %o0
	add	%fp, -496, %o2
.LL103:
	mov	%o2, %o0
	call	fopen, 0
	or	%l3, %lo(.LLC86), %o1
	cmp	%o0, 0
	be	.LL80
	st	%o0, [%fp-508]
	cmp	%i0, 3
	ble	.LL9
	sethi	%hi(.LLC89), %o0
	add	%fp, -416, %l0
	ld	[%i1+12], %o1
	call	strcpy, 0
	mov	%l0, %o0
	sethi	%hi(.LLC90), %o1
.LL102:
	or	%o1, %lo(.LLC90), %o1
	call	fopen, 0
	mov	%l0, %o0
	cmp	%o0, 0
	be	.LL81
	st	%o0, [%fp-512]
	cmp	%i0, 4
	mov	1, %i4
	st	%g0, [%fp-516]
	ble	.LL12
	st	%g0, [%fp-520]
	ld	[%i1+16], %o0
	sethi	%hi(.LLC91), %o1
	call	strcasecmp, 0
	or	%o1, %lo(.LLC91), %o1
	cmp	%o0, 0
	be	.LL82
	sethi	%hi(.LLC92), %o1
	ld	[%i1+16], %o0
	call	strcasecmp, 0
	or	%o1, %lo(.LLC92), %o1
	cmp	%o0, 0
	be	.LL83
	mov	1, %o1
.LL12:
	mov	800, %o0
	sethi	%hi(CutOff), %o2
	st	%o0, [%o2+%lo(CutOff)]
	sethi	%hi(.LLC93), %o0
	call	getenv, 0
	or	%o0, %lo(.LLC93), %o0
	orcc	%o0, 0, %l0
	be	.LL77
	stb	%g0, [%fp-96]
	add	%fp, -96, %l1
	sethi	%hi(.LLC94), %o1
	or	%o1, %lo(.LLC94), %o1
	mov	%l1, %o0
	call	sprintf, 0
	mov	%l0, %o2
.LL16:
	sethi	%hi(.LLC95), %o1
	or	%o1, %lo(.LLC95), %o1
	call	strcat, 0
	mov	%l1, %o0
	call	load_frequencies, 0
	mov	%l1, %o0
	cmp	%l0, 0
	be	.LL78
	stb	%g0, [%fp-176]
	add	%fp, -176, %l1
	sethi	%hi(.LLC94), %o1
	or	%o1, %lo(.LLC94), %o1
	mov	%l0, %o2
	call	sprintf, 0
	mov	%l1, %o0
.LL17:
	sethi	%hi(.LLC96), %o1
	or	%o1, %lo(.LLC96), %o1
	call	strcat, 0
	mov	%l1, %o0
	sethi	%hi(Qij), %l2
	st	%g0, [%l2+%lo(Qij)]
	mov	%l1, %o0
	call	fopen, 0
	or	%l3, %lo(.LLC86), %o1
	orcc	%o0, 0, %l0
	be	.LL18
	nop
	call	load_qij, 0
	 nop
	st	%o0, [%l2+%lo(Qij)]
.LL18:
	call	fclose, 0
	mov	%l0, %o0
	sethi	%hi(.LLC97), %o0
	ldd	[%o0+%lo(.LLC97)], %f2
	sethi	%hi(RTot), %o0
	call	make_blist, 0
	std	%f2, [%o0+%lo(RTot)]
	mov	%o0, %l3
.LL19:
	call	read_a_block, 0
	mov	%l4, %o0
	orcc	%o0, 0, %i0
	be	.LL84
	nop
	call	pb_weights, 0
	 nop
	mov	%i0, %o0
	call	scale_weights, 0
	mov	1, %o1
	mov	%l3, %o0
	call	insert_blist, 0
	mov	%i0, %o1
	b,a	.LL19
.LL84:
	call	fclose, 0
	mov	%l4, %o0
	ld	[%l3], %o1
	cmp	%o1, 0
	be	.LL85
	sethi	%hi(NumSeqs), %i5
	st	%g0, [%i5+%lo(NumSeqs)]
	ld	[%fp-508], %o2
.LL99:
	ldub	[%o2+12], %o0
	andcc	%o0, 16, %g0
	be	.LL86
	mov	%o2, %o0
.LL25:
	ld	[%i5+%lo(NumSeqs)], %o0
	cmp	%o0, 0
	be	.LL87
	add	%fp, -496, %o2
	call	fclose, 0
	ld	[%fp-508], %o0
	call	putchar, 0
	mov	10, %o0
	ld	[%fp-516], %o0
	cmp	%o0, 0
	be,a	.LL88
	ld	[%l3+44], %i1
.LL63:
	call	fclose, 0
	ld	[%fp-512], %o0
	ld	[%fp-520], %o2
	cmp	%o2, 0
	be	.LL89
	sethi	%hi(.LLC103), %o0
	cmp	%i4, 0
.LL97:
	be	.LL73
	sethi	%hi(.LLC104), %o0
	sethi	%hi(.LLC105), %o1
	or	%o0, %lo(.LLC104), %o0
	call	fopen, 0
	or	%o1, %lo(.LLC105), %o1
	orcc	%o0, 0, %l0
	be	.LL73
	ld	[%i5+%lo(NumSeqs)], %o3
	ld	[%l3+44], %o1
	ld	[%o1+32], %o2
	sethi	%hi(.LLC106), %o1
	ld	[%o2+636], %o5
	or	%o1, %lo(.LLC106), %o1
	ld	[%l3+4], %o4
	add	%o2, 400, %o2
	st	%o3, [%sp+92]
	call	fprintf, 0
	ld	[%l3], %o3
	call	fclose, 0
	mov	%l0, %o0
	b,a	.LL73
.LL89:
	ld	[%l3+8], %o1
	call	printf, 0
	or	%o0, %lo(.LLC103), %o0
	b	.LL97
	cmp	%i4, 0
.LL88:
	cmp	%i1, 0
	be	.LL63
	nop
	ld	[%i1+32], %o1
	cmp	%o1, 0
	be	.LL63
	sethi	%hi(.LLC102), %l0
	cmp	%i4, 0
.LL106:
	be	.LL90
	mov	%o1, %o0
.LL69:
	call	pb_weights, 0
	 nop
	ld	[%i1+32], %o0
	call	scale_weights, 0
	mov	0, %o1
	call	fix_ac, 0
	mov	%i1, %o0
	ld	[%i1+32], %o0
	call	output_block, 0
	ld	[%fp-512], %o1
	ld	[%fp-520], %o1
	cmp	%o1, 0
	be	.LL68
	or	%l0, %lo(.LLC102), %o0
	ld	[%i1+32], %o1
	call	printf, 0
	add	%o1, 400, %o1
.LL68:
	ld	[%i1+44], %i1
.LL98:
	cmp	%i1, 0
	be	.LL63
	nop
	ld	[%i1+32], %o0
	orcc	%o0, 0, %o1
	bne	.LL106
	cmp	%i4, 0
	b,a	.LL63
.LL90:
	ld	[%fp-520], %o2
	cmp	%o2, 0
	be,a	.LL98
	ld	[%i1+44], %i1
	ld	[%o1+656], %o1
	cmp	%o1, 0
	bne	.LL69
	nop
	b	.LL98
	ld	[%i1+44], %i1
.LL86:
	mov	7, %o1
	call	read_a_sequence, 0
	mov	0, %o2
	orcc	%o0, 0, %l2
	be	.LL25
	ld	[%i5+%lo(NumSeqs)], %o2
	sethi	%hi(.LLC99), %o1
	add	%o2, 1, %o2
	add	%l2, 100, %o0
	st	%o2, [%i5+%lo(NumSeqs)]
	call	strstr, 0
	or	%o1, %lo(.LLC99), %o1
	cmp	%o0, 0
	be	.LL28
	mov	0, %l7
	mov	1, %l7
.LL28:
	ld	[%l3+44], %i1
	sethi	%hi(9216), %o1
	sethi	%hi(-10240), %o2
	sethi	%hi(.LLC126), %o0
	or	%o1, 783, %o1
	or	%o2, 241, %o2
	ld	[%o0+%lo(.LLC126)], %l4
	st	%o1, [%fp-500]
	st	%o2, [%fp-504]
	cmp	%i1, 0
	mov	1, %i3
	mov	1, %i2
	be	.LL30
	mov	1, %l5
	ld	[%i1+32], %o1
	cmp	%o1, 0
	be	.LL107
	cmp	%i4, 0
	mov	-999, %l6
	ld	[%o1+636], %o0
.LL113:
	mov	0, %l1
	cmp	%l1, %o0
	bge	.LL108
	cmp	%l5, 0
	mov	0, %l0
	ld	[%o1+680], %o0
.LL109:
	add	%l1, 1, %l1
	call	strlen, 0
	add	%o0, %l0, %o0
	mov	%o0, %i0
	call	strlen, 0
	mov	%l2, %o0
	cmp	%o0, %i0
	bge	.LL37
	mov	%l2, %o0
	call	strlen, 0
	 nop
	mov	%o0, %i0
.LL37:
	ld	[%i1+32], %o3
	mov	%i0, %o2
	ld	[%o3+680], %o1
	mov	%l2, %o0
	call	strncmp, 0
	add	%o1, %l0, %o1
	cmp	%o0, 0
	be	.LL91
	add	%l0, 248, %l0
.LL35:
	ld	[%i1+32], %o1
	ld	[%o1+636], %o0
	cmp	%l1, %o0
	bl,a	.LL109
	ld	[%o1+680], %o0
	cmp	%l5, 0
.LL108:
	be	.LL40
	mov	%i1, %o0
	mov	%l2, %o1
	st	%l6, [%i1+28]
	st	%l6, [%i1+24]
	call	best_pos, 0
	st	%l6, [%i1+20]
	sethi	%hi(CutOff), %o2
	ld	[%i1+28], %o1
	ld	[%o2+%lo(CutOff)], %o0
	cmp	%o1, %o0
	bl,a	.LL41
	mov	0, %i3
.LL41:
	ld	[%i1+20], %o3
	cmp	%o3, %l4
	bge,a	.LL42
	ld	[%i1+32], %o0
	sethi	%hi(.LLC100), %o0
	mov	%o3, %o1
	or	%o0, %lo(.LLC100), %o0
	call	printf, 0
	mov	%l4, %o2
	ld	[%i1+20], %o3
	mov	0, %i2
.LL43:
	cmp	%o3, 0
	bl,a	.LL44
	mov	1, %l7
	ld	[%l2+204], %o0
	cmp	%l4, %o0
	ble	.LL110
	ld	[%fp-500], %o0
	mov	1, %l7
.LL44:
	ld	[%fp-500], %o0
.LL110:
	cmp	%o3, %o0
	bge,a	.LL111
	ld	[%i1+32], %o0
	st	%o3, [%fp-500]
	ld	[%i1+20], %o3
	ld	[%i1+32], %o0
.LL111:
	ld	[%o0+620], %o1
	ld	[%fp-504], %o2
	add	%o3, %o1, %o0
	cmp	%o0, %o2
	ble,a	.LL112
	ld	[%i1+44], %i1
	add	%o0, -1, %o0
	st	%o0, [%fp-504]
.LL40:
	ld	[%i1+44], %i1
.LL112:
	cmp	%i1, 0
	be	.LL107
	cmp	%i4, 0
	ld	[%i1+32], %o1
	cmp	%o1, 0
	bne,a	.LL113
	ld	[%o1+636], %o0
.LL30:
	cmp	%i4, 0
.LL107:
	be	.LL92
	cmp	%l5, 0
	be	.LL49
	cmp	%l7, 0
	be	.LL93
	cmp	%i2, 0
.LL49:
	ld	[%fp-516], %o0
.LL100:
	cmp	%o0, 0
	be	.LL59
	ld	[%fp-500], %o2
	mov	%l2, %o1
	ld	[%fp-512], %o0
	call	write_seq, 0
	ld	[%fp-504], %o3
.LL59:
	ld	[%fp-520], %o1
	cmp	%o1, 0
	be	.LL60
	add	%fp, -256, %o0
	call	strcpy, 0
	mov	%l2, %o1
.LL60:
	call	free_sequence, 0
	mov	%l2, %o0
	b	.LL99
	ld	[%fp-508], %o2
.LL93:
	be	.LL49
	cmp	%i3, 0
	be	.LL100
	ld	[%fp-516], %o0
	ld	[%l3+44], %i1
.LL115:
	b	.LL96
	mov	0, %o1
.LL54:
	mov	%i1, %o1
	call	addseq, 0
	mov	%l2, %o2
	ld	[%l3+8], %o0
	cmp	%o0, 0
	be	.LL94
	nop
	mov	%i1, %o1
.LL101:
	ld	[%i1+44], %i1
.LL96:
	cmp	%i1, 0
	be,a	.LL114
	ld	[%l3+8], %o0
	ld	[%i1+32], %o0
	cmp	%o0, 0
	bne	.LL54
	mov	%o1, %o0
	ld	[%l3+8], %o0
.LL114:
	cmp	%i4, 0
	add	%o0, 1, %o0
	bne	.LL49
	st	%o0, [%l3+8]
	ld	[%l3], %o0
	cmp	%o0, 1
	ble,a	.LL100
	ld	[%fp-516], %o0
	mov	%l3, %o0
	add	%fp, -500, %o1
	call	assemble_hit, 0
	add	%fp, -504, %o2
	b	.LL100
	ld	[%fp-516], %o0
.LL94:
	call	add_cluster, 0
	ld	[%i1+32], %o0
	b	.LL101
	mov	%i1, %o1
.LL92:
	bne,a	.LL115
	ld	[%l3+44], %i1
	b	.LL100
	ld	[%fp-516], %o0
.LL42:
	ld	[%o0+620], %o1
	b	.LL43
	add	%o3, %o1, %l4
.LL91:
	b	.LL35
	mov	0, %l5
.LL78:
	b	.LL17
	add	%fp, -176, %l1
.LL77:
	b	.LL16
	add	%fp, -96, %l1
.LL83:
	mov	0, %i4
	st	%g0, [%fp-516]
	b	.LL12
	st	%o1, [%fp-520]
.LL82:
	mov	0, %i4
	mov	1, %o0
	st	%o0, [%fp-516]
	b	.LL12
	st	%i4, [%fp-520]
.LL9:
	call	printf, 0
	or	%o0, %lo(.LLC89), %o0
	add	%fp, -416, %l0
	call	gets, 0
	mov	%l0, %o0
	b	.LL102
	sethi	%hi(.LLC90), %o1
.LL6:
	call	printf, 0
	or	%o0, %lo(.LLC88), %o0
	add	%fp, -496, %o1
	call	gets, 0
	mov	%o1, %o0
	b	.LL103
	add	%fp, -496, %o2
.LL3:
	call	printf, 0
	or	%o0, %lo(.LLC85), %o0
	add	%fp, -336, %l5
	call	gets, 0
	mov	%l5, %o0
	b	.LL104
	sethi	%hi(.LLC86), %l3
.LL79:
	sethi	%hi(.LLC87), %o0
	or	%o0, %lo(.LLC87), %o0
	call	printf, 0
	mov	%l5, %o1
	call	exit, 0
	mov	-1, %o0
.LL80:
	add	%fp, -496, %o2
	sethi	%hi(.LLC87), %o0
	or	%o0, %lo(.LLC87), %o0
	call	printf, 0
	mov	%o2, %o1
	call	exit, 0
	mov	-1, %o0
.LL81:
	sethi	%hi(.LLC87), %o0
	or	%o0, %lo(.LLC87), %o0
	call	printf, 0
	mov	%l0, %o1
	call	exit, 0
	mov	-1, %o0
.LL85:
	sethi	%hi(.LLC98), %o0
	or	%o0, %lo(.LLC98), %o0
	call	printf, 0
	mov	%l5, %o1
	call	exit, 0
	mov	-1, %o0
.LL87:
	sethi	%hi(.LLC101), %o0
	or	%o0, %lo(.LLC101), %o0
	call	printf, 0
	mov	%o2, %o1
	call	exit, 0
	mov	-1, %o0
.LL73:
	call	exit, 0
	mov	0, %o0
.LLfe1:
	.size	main,.LLfe1-main
	.align 4
	.global addseq
	.type	addseq,#function
	.proc	020
addseq:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	ld	[%i1+32], %o4
	ld	[%o4+636], %o0
	ld	[%o4+632], %o1
	add	%o0, 1, %o0
	cmp	%o0, %o1
	ble	.LL117
	ld	[%i1+20], %l1
	call	resize_block_sequences, 0
	mov	%o4, %o0
	ld	[%i1+32], %o4
.LL117:
	ld	[%o4+636], %l2
	add	%l1, 1, %o3
	sll	%l2, 5, %l3
	ld	[%o4+680], %o0
	sub	%l3, %l2, %o1
	sll	%o1, 3, %l0
	add	%o0, %l0, %o0
	st	%o3, [%o0+200]
	ld	[%i1+32], %o2
	mov	%i2, %o1
	ld	[%o2+680], %o0
	call	strcpy, 0
	add	%o0, %l0, %o0
	ld	[%i1+32], %o2
	add	%i2, 100, %o1
	ld	[%o2+680], %o0
	add	%o0, %l0, %o0
	call	strcpy, 0
	add	%o0, 100, %o0
	ld	[%i1+32], %o1
	mov	0, %o5
	ld	[%o1+680], %o0
	mov	1, %o1
	add	%o0, %l0, %o0
	st	%o1, [%o0+224]
	ld	[%i1+32], %o2
	ld	[%o2+680], %o0
	ld	[%o2+620], %o1
	add	%o0, %l0, %o0
	st	%o1, [%o0+208]
	ld	[%i1+32], %o3
	ld	[%o3+636], %o0
	add	%o0, 1, %o0
	st	%o0, [%o3+636]
	ld	[%i1+32], %o2
	ld	[%o2+644], %o1
	ld	[%o2+676], %o3
	add	%o1, -1, %o1
	sll	%o1, 3, %o1
	ld	[%o3+%o1], %o0
	add	%o0, 1, %o0
	st	%o0, [%o3+%o1]
	ld	[%i1+32], %o4
	mov	%o4, %o2
	ld	[%o2+620], %o0
	cmp	%o5, %o0
	bge	.LL131
	cmp	%i0, 0
	mov	%l0, %o7
	sethi	%hi(CutOff), %g1
	mov	23, %l0
.LL121:
	ld	[%i1+28], %o1
	ld	[%g1+%lo(CutOff)], %o0
	cmp	%o1, %o0
	bl,a	.LL132
	ld	[%o4+680], %o0
	addcc	%l1, %o5, %o3
	bneg,a	.LL132
	ld	[%o4+680], %o0
	ld	[%i2+204], %o0
	cmp	%o3, %o0
	bge,a	.LL122
	ld	[%o4+680], %o0
	ld	[%o2+680], %o1
	ld	[%i2+244], %o2
	add	%o1, %o7, %o1
	ldub	[%o2+%o3], %o3
	ld	[%o1+244], %o0
	stb	%o3, [%o0+%o5]
.LL120:
	ld	[%i1+32], %o2
	add	%o5, 1, %o5
	ld	[%o2+620], %o0
	cmp	%o5, %o0
	bl	.LL121
	mov	%o2, %o4
	cmp	%i0, 0
.LL131:
	be	.LL127
	mov	%l1, %o4
	ld	[%i0+32], %o3
	sub	%l3, %l2, %o0
	ld	[%o3+680], %o1
	sll	%o0, 3, %o0
	add	%o1, %o0, %o1
	ld	[%o1+200], %o2
	ld	[%o3+620], %o0
	add	%o2, %o0, %o2
	sub	%o4, %o2, %o4
.LL127:
	ld	[%i1+12], %o0
	cmp	%o4, %o0
	bl,a	.LL128
	st	%o4, [%i1+12]
.LL128:
	ld	[%i1+16], %o0
	cmp	%o4, %o0
	bg,a	.LL129
	st	%o4, [%i1+16]
	b,a	.LL129
.LL122:
.LL132:
	add	%o0, %o7, %o0
	ld	[%o0+244], %o1
	b	.LL120
	stb	%l0, [%o1+%o5]
.LL129:
	ret
	restore
.LLfe2:
	.size	addseq,.LLfe2-addseq
	.section	".rodata"
	.align 8
.LLC127:
	.uaword	0x0 ! ~0.00000000000000000000e0
	.uaword	0x0
	.align 8
.LLC128:
	.uaword	0x412e847f ! ~9.99999900000000023283e5
	.uaword	0xcccccccd
	.align 8
.LLC129:
	.uaword	0x3ff00000 ! ~1.00000000000000000000e0
	.uaword	0x0
	.align 8
.LLC130:
	.uaword	0x40590000 ! ~1.00000000000000000000e2
	.uaword	0x0
	.section	".text"
	.align 4
	.global scale_weights
	.type	scale_weights,#function
	.proc	020
scale_weights:
	!#PROLOGUE# 0
	save	%sp, -120, %sp
	!#PROLOGUE# 1
	sethi	%hi(.LLC127), %o0
	ldd	[%o0+%lo(.LLC127)], %f4
	mov	%i0, %i4
	fmovs	%f4, %f8
	ld	[%i4+636], %i3
	sethi	%hi(.LLC128), %o0
	ldd	[%o0+%lo(.LLC128)], %f6
	cmp	%i3, 0
	ble	.LL153
	fmovs	%f5, %f9
	ld	[%i4+680], %i0
	mov	%i3, %i2
	add	%i0, 216, %i0
	ldd	[%i0], %f2
.LL158:
	addcc	%i2, -1, %i2
	faddd	%f4, %f2, %f4
	fcmped	%f2, %f8
	nop
	fbule	.LL138
	add	%i0, 248, %i0
	fmovs	%f2, %f8
	fmovs	%f3, %f9
.LL138:
	fcmped	%f2, %f6
	nop
	fbuge	.LL136
	nop
	fmovs	%f2, %f6
	fmovs	%f3, %f7
.LL136:
	bne,a	.LL158
	ldd	[%i0], %f2
.LL153:
	sethi	%hi(.LLC129), %o0
	cmp	%i1, 0
	be	.LL155
	ldd	[%o0+%lo(.LLC129)], %f6
	cmp	%i1, 1
	be,a	.LL157
	st	%i3, [%fp-20]
	ble	.LL159
	mov	0, %i2
	st	%i1, [%fp-20]
.LL157:
	ld	[%fp-20], %f6
	fitod	%f6, %f2
	fdivd	%f2, %f4, %f6
.LL144:
	mov	0, %i2
.LL159:
	cmp	%i2, %i3
	bge	.LL154
	mov	0, %i3
.LL151:
	ld	[%i4+680], %i0
	add	%i2, 1, %i2
	add	%i0, %i3, %i0
	ldd	[%i0+216], %f2
	fmuld	%f2, %f6, %f2
	std	%f2, [%i0+216]
	ld	[%i4+636], %i1
	cmp	%i2, %i1
	bl	.LL151
	add	%i3, 248, %i3
	b,a	.LL154
.LL155:
	sethi	%hi(.LLC130), %o0
	ldd	[%o0+%lo(.LLC130)], %f2
	b	.LL144
	fdivd	%f2, %f8, %f6
.LL154:
	ret
	restore
.LLfe3:
	.size	scale_weights,.LLfe3-scale_weights
	.section	".rodata"
	.align 8
.LLC135:
	.asciz	"%s %s calibrated "
	.align 8
.LLC138:
	.asciz	"best score = %5d at %d\n"
	.align 8
.LLC134:
	.uaword	0x0 ! ~0.00000000000000000000e0
	.uaword	0x0
	.align 8
.LLC136:
	.uaword	0x408f4000 ! ~1.00000000000000000000e3
	.uaword	0x0
	.align 8
.LLC137:
	.uaword	0x3fe00000 ! ~5.00000000000000000000e-1
	.uaword	0x0
	.section	".text"
	.align 4
	.global best_pos
	.type	best_pos,#function
	.proc	020
best_pos:
	!#PROLOGUE# 0
	save	%sp, -120, %sp
	!#PROLOGUE# 1
	ld	[%i0+36], %i2
	mov	1, %o0
	ld	[%i2+424], %o1
	sub	%o0, %o1, %o4
	ld	[%i1+204], %l1
	sethi	%hi(.LLC134), %o0
	cmp	%o4, %l1
	bge	.LL179
	ldd	[%o0+%lo(.LLC134)], %f6
	mov	%o1, %l6
	mov	%i2, %l5
	mov	%l1, %l4
	sethi	%hi(aa_atob), %l7
	sethi	%hi(.LLC134), %o0
.LL184:
	mov	0, %o2
	ldd	[%o0+%lo(.LLC134)], %f4
	cmp	%o2, %l6
	bge	.LL180
	mov	%l5, %o5
	mov	%l1, %l0
	mov	%i2, %g1
	or	%l7, %lo(aa_atob), %l2
.LL168:
	addcc	%o4, %o2, %o0
	bneg	.LL169
	sll	%o2, 3, %o7
	cmp	%o0, %l0
	bge	.LL169
	mov	%o7, %o3
	ld	[%i1+244], %o1
	ldub	[%o1+%o0], %o0
	sll	%o0, 2, %o0
	add	%o0, 456, %o0
	ld	[%o5+%o0], %o1
	ldd	[%o1+%o3], %f8
.LL182:
	fmovs	%f8, %f2
	fmovs	%f9, %f3
	faddd	%f4, %f2, %f4
	ld	[%i2+424], %o0
	add	%o2, 1, %o2
	cmp	%o2, %o0
	bl	.LL168
	mov	%i2, %o5
.LL180:
	fcmped	%f4, %f6
	nop
	fbule,a	.LL183
	add	%o4, 1, %o4
	fmovs	%f4, %f6
	mov	%o4, %l3
	fmovs	%f5, %f7
	add	%o4, 1, %o4
.LL183:
	cmp	%o4, %l4
	bl	.LL184
	sethi	%hi(.LLC134), %o0
.LL179:
	ld	[%i2+432], %o0
	cmp	%o0, 0
	ble,a	.LL185
	ld	[%i0+32], %o0
	ld	[%i0+32], %o2
	sethi	%hi(.LLC135), %o0
	mov	%i1, %o1
	std	%f6, [%fp-24]
	add	%o2, 400, %o2
	call	printf, 0
	or	%o0, %lo(.LLC135), %o0
	sethi	%hi(.LLC136), %o0
	ldd	[%o0+%lo(.LLC136)], %f2
	ldd	[%fp-24], %f6
	fmuld	%f6, %f2, %f6
	ld	[%i0+36], %o1
	ld	[%o1+432], %f4
	fitod	%f4, %f2
	fdivd	%f6, %f2, %f6
	ld	[%i0+32], %o0
.LL185:
	st	%l3, [%i0+20]
	ld	[%o0+620], %o1
	sethi	%hi(.LLC134), %o0
	add	%l3, %o1, %o1
	ldd	[%o0+%lo(.LLC134)], %f2
	add	%o1, -1, %o1
	fcmped	%f6, %f2
	nop
	fbul	.LL176
	st	%o1, [%i0+24]
	sethi	%hi(.LLC137), %o0
	ldd	[%o0+%lo(.LLC137)], %f2
	b	.LL181
	faddd	%f6, %f2, %f2
.LL176:
	sethi	%hi(.LLC137), %o0
	ldd	[%o0+%lo(.LLC137)], %f2
	fsubd	%f6, %f2, %f2
.LL181:
	fdtoi	%f2, %f4
	b	.LL177
	st	%f4, [%i0+28]
.LL169:
	ld	[%l2+180], %o0
	sll	%o0, 2, %o0
	add	%o0, 456, %o0
	ld	[%g1+%o0], %o1
	b	.LL182
	ldd	[%o1+%o7], %f8
.LL177:
	ld	[%i0+20], %i2
	ld	[%i0+28], %i1
	sethi	%hi(.LLC138), %i0
	call	printf, 0
	 restore %i0, %lo(.LLC138), %o0
.LLfe4:
	.size	best_pos,.LLfe4-best_pos
	.align 4
	.global make_blist
	.type	make_blist,#function
	.proc	0110
make_blist:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	call	malloc, 0
	mov	48, %o0
	sethi	%hi(-10240), %o2
	sethi	%hi(9216), %o1
	or	%o2, 241, %o2
	or	%o1, 783, %o1
	st	%o2, [%o0+28]
	st	%o1, [%o0+12]
	st	%g0, [%o0+8]
	st	%g0, [%o0+4]
	st	%g0, [%o0]
	st	%o2, [%o0+16]
	st	%o2, [%o0+20]
	st	%g0, [%o0+32]
	st	%g0, [%o0+44]
	ret
	restore %g0, %o0, %o0
.LLfe5:
	.size	make_blist,.LLfe5-make_blist
	.section	".rodata"
	.align 8
.LLC145:
	.asciz	"("
	.align 8
.LLC146:
	.asciz	","
	.align 8
.LLC147:
	.asciz	")"
	.section	".text"
	.align 4
	.global insert_blist
	.type	insert_blist,#function
	.proc	020
insert_blist:
	!#PROLOGUE# 0
	save	%sp, -192, %sp
	!#PROLOGUE# 1
	ld	[%i0+44], %o0
	cmp	%o0, 0
	be	.LL197
	mov	%i0, %l2
	mov	%o0, %o1
	mov	%o1, %l2
.LL199:
	ld	[%l2+44], %o1
	cmp	%o1, 0
	bne,a	.LL199
	mov	%o1, %l2
.LL197:
	call	make_blist, 0
	 nop
	st	%o0, [%l2+44]
	st	%i1, [%o0+32]
	ld	[%l2+44], %l0
	mov	3, %o1
	call	block_to_matrix, 0
	mov	%i1, %o0
	st	%o0, [%l0+36]
	ld	[%l2+44], %l1
	mov	2, %o1
	call	block_to_matrix, 0
	mov	%i1, %o0
	add	%fp, -96, %l0
	st	%o0, [%l1+40]
	add	%i1, 100, %o1
	call	strcpy, 0
	mov	%l0, %o0
	sethi	%hi(.LLC145), %o1
	or	%o1, %lo(.LLC145), %o1
	call	strtok, 0
	mov	%l0, %o0
	orcc	%o0, 0, %o1
	be	.LL192
	sethi	%hi(.LLC146), %o1
	or	%o1, %lo(.LLC146), %o1
	call	strtok, 0
	mov	0, %o0
	orcc	%o0, 0, %o1
	be,a	.LL200
	ld	[%l2+44], %o1
	call	atoi, 0
	ld	[%l2+44], %l0
	st	%o0, [%l0+12]
	sethi	%hi(.LLC147), %o1
	or	%o1, %lo(.LLC147), %o1
	call	strtok, 0
	mov	0, %o0
	orcc	%o0, 0, %o1
	be,a	.LL200
	ld	[%l2+44], %o1
	call	atoi, 0
	ld	[%l2+44], %l0
	st	%o0, [%l0+16]
.LL192:
	ld	[%l2+44], %o1
.LL200:
	ld	[%o1+36], %l0
	ld	[%l0+432], %o0
	cmp	%o0, 0
	ble	.LL198
	sethi	%hi(frequency), %o2
.LL195:
	ld	[%o1+36], %l0
	ld	[%l0+436], %o0
	cmp	%o0, 0
	bg,a	.LL201
	ld	[%i0], %o0
	ld	[%o1+40], %o3
	sethi	%hi(frequency), %o2
	or	%o2, %lo(frequency), %o2
	mov	1, %o1
	call	pssmdist, 0
	mov	%l0, %o0
	st	%o0, [%l0+436]
	ld	[%l2+44], %o0
	ld	[%o0+36], %o1
	ld	[%o1+436], %o2
	b	.LL196
	st	%o2, [%i1+628]
.LL198:
	or	%o2, %lo(frequency), %o2
	mov	0, %o1
	mov	%l0, %o0
	call	pssmdist, 0
	mov	0, %o3
	st	%o0, [%l0+432]
	ld	[%l2+44], %o0
	ld	[%o0+36], %o1
	ld	[%o1+432], %o2
	st	%o2, [%i1+624]
	b	.LL195
	ld	[%l2+44], %o1
.LL196:
	ld	[%i0], %o0
.LL201:
	add	%o0, 1, %o0
	st	%o0, [%i0]
	ld	[%i1+636], %o1
	st	%o1, [%i0+4]
	ret
	restore
.LLfe6:
	.size	insert_blist,.LLfe6-insert_blist
	.align 4
	.global free_blist
	.type	free_blist,#function
	.proc	020
free_blist:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
.LL208:
	ld	[%i0+44], %o0
	mov	%i0, %l0
	cmp	%o0, 0
	be	.LL210
	mov	%i0, %o1
	mov	%o1, %l0
.LL211:
	ld	[%l0+44], %o1
	ld	[%o1+44], %o0
	cmp	%o0, 0
	bne,a	.LL211
	mov	%o1, %l0
.LL210:
	cmp	%o1, %i0
	be	.LL207
	nop
	call	free, 0
	mov	%o1, %o0
	st	%g0, [%l0+44]
	b	.LL208
	mov	%l0, %i0
.LL207:
	call	free, 0
	 restore
.LLfe7:
	.size	free_blist,.LLfe7-free_blist
	.global .umul
	.section	".rodata"
	.align 8
.LLC159:
	.asciz	"99.5 TN score = %d\n"
	.align 8
.LLC158:
	.asciz	"Median TP score = %d, TPabove = %f\n"
	.align 8
.LLC148:
	.uaword	0x40490000 ! ~5.00000000000000000000e1
	.uaword	0x0
	.align 8
.LLC149:
	.uaword	0x408cf6d7 ! ~9.26855000000000018190e2
	.uaword	0xa3d70a4
	.align 8
.LLC150:
	.uaword	0x40340000 ! ~2.00000000000000000000e1
	.uaword	0x0
	.align 8
.LLC151:
	.uaword	0x40350000 ! ~2.10000000000000000000e1
	.uaword	0x0
	.align 8
.LLC152:
	.uaword	0x40440000 ! ~4.00000000000000000000e1
	.uaword	0x0
	.align 8
.LLC153:
	.uaword	0x0 ! ~0.00000000000000000000e0
	.uaword	0x0
	.align 8
.LLC154:
	.uaword	0x40330000 ! ~1.90000000000000000000e1
	.uaword	0x0
	.align 8
.LLC155:
	.uaword	0x3ff00000 ! ~1.00000000000000000000e0
	.uaword	0x0
	.align 8
.LLC156:
	.uaword	0x40590000 ! ~1.00000000000000000000e2
	.uaword	0x0
	.align 8
.LLC157:
	.uaword	0x418bf62e ! ~5.86398370000000000000e7
	.uaword	0xe8000000
	.section	".text"
	.align 4
	.global pssmdist
	.type	pssmdist,#function
	.proc	04
pssmdist:
	!#PROLOGUE# 0
	sethi	%hi(-384608), %g1
	or	%g1, %lo(-384608), %g1
	save	%sp, %g1, %sp
	!#PROLOGUE# 1
	mov	%i1, %i4
	mov	%i0, %l5
	cmp	%i4, 1
	be	.LL375
	mov	%i2, %i5
	sethi	%hi(.LLC149), %o1
	ldd	[%o1+%lo(.LLC149)], %f16
.LL214:
	sethi	%hi(.LLC150), %o3
	ldd	[%o3+%lo(.LLC150)], %f2
	sethi	%hi(-385024), %o0
	fmovs	%f2, %f4
	ld	[%l5+424], %o2
	or	%o0, 544, %o0
	add	%fp, -16, %i2
	mov	-1, %o3
	fmovs	%f3, %f5
	sethi	%hi(9216), %o1
	mov	0, %l3
	cmp	%l3, %o2
	mov	0, %l0
	std	%f4, [%i2+%o0]
	st	%o3, [%fp-16]
	ld	[%fp-16], %f10
	or	%o1, 783, %o3
	st	%o3, [%fp-16]
	ld	[%fp-16], %f12
	bge	.LL355
	mov	0, %l1
	fmovs	%f2, %f14
	add	%i2, %o0, %o5
	mov	%o1, %l4
	mov	0, %o4
	fmovs	%f3, %f15
.LL218:
	cmp	%l1, 0
	ble	.LL388
	or	%l4, 783, %o0
	mov	%o4, %o3
	add	%o3, -8, %o0
	ldd	[%o5+%o0], %f4
	fmovs	%f4, %f2
	ld	[%l5+424], %o2
	fmovs	%f5, %f3
	fmuld	%f2, %f14, %f2
	std	%f2, [%o5+%o3]
	or	%l4, 783, %o0
.LL388:
	st	%o0, [%fp-16]
	ld	[%fp-16], %f8
	mov	-1, %o1
	st	%o1, [%fp-16]
	ld	[%fp-16], %f9
	mov	%o4, %o3
	add	%l5, 460, %o1
	mov	19, %o7
	ld	[%o1], %o0
.LL389:
	fitod	%f10, %f2
	ldd	[%o0+%o3], %f6
	addcc	%o7, -1, %o7
	add	%o1, 4, %o1
	fmovs	%f6, %f4
	fmovs	%f7, %f5
	fcmped	%f4, %f2
	nop
	fbule	.LL224
	fitod	%f12, %f6
	fdtoi	%f4, %f10
.LL224:
	fcmped	%f4, %f6
	fitod	%f9, %f2
	nop
	fbuge	.LL226
	fitod	%f8, %f6
	fdtoi	%f4, %f12
.LL226:
	fcmped	%f4, %f2
	nop
	fbg,a	.LL228
	fdtoi	%f4, %f9
.LL228:
	fcmped	%f4, %f6
	nop
	fbl,a	.LL222
	fdtoi	%f4, %f8
.LL222:
	bpos,a	.LL389
	ld	[%o1], %o0
	st	%f9, [%fp-16]
	ld	[%fp-16], %o0
	cmp	%l1, 0
	st	%f8, [%fp-16]
	ld	[%fp-16], %o1
	add	%l3, %o0, %l3
	be	.LL376
	add	%l0, %o1, %l0
.LL233:
	add	%o2, -1, %o0
	cmp	%l1, %o0
	be,a	.LL217
	st	%f8, [%fp-16]
.LL217:
	add	%l1, 1, %l1
	cmp	%l1, %o2
	bl	.LL218
	add	%o4, 8, %o4
.LL355:
	sethi	%hi(-385024), %o0
	sll	%o2, 3, %o1
	or	%o0, 544, %o0
	add	%o1, -8, %o1
	add	%i2, %o0, %o0
	ldd	[%o0+%o1], %f2
	mov	0, %l1
	fmovs	%f2, %f4
	sethi	%hi(.LLC151), %o1
	cmp	%l1, %o2
	sethi	%hi(.LLC152), %o2
	fmovs	%f3, %f5
	ldd	[%o1+%lo(.LLC151)], %f2
	fmuld	%f4, %f2, %f4
	ldd	[%o2+%lo(.LLC152)], %f2
	bge	.LL357
	fsubd	%f4, %f2, %f4
	sethi	%hi(.LLC154), %o3
	ld	[%l5+424], %o2
	mov	%o0, %o1
	ldd	[%o3+%lo(.LLC154)], %f6
.LL239:
	sll	%l1, 3, %o0
	ldd	[%o1+%o0], %f8
	add	%l1, 1, %l1
	fmovs	%f8, %f2
	cmp	%l1, %o2
	fmovs	%f9, %f3
	fmuld	%f2, %f6, %f2
	fdivd	%f2, %f4, %f2
	bl	.LL239
	std	%f2, [%o1+%o0]
.LL357:
	sethi	%hi(5120), %o1
	or	%o1, 880, %o0
	cmp	%l3, %o0
	bg,a	.LL244
	or	%o1, 879, %l3
.LL244:
	sethi	%hi(-384000), %o0
	add	%i2, %o0, %o5
	sethi	%hi(95232), %o1
	or	%o1, 768, %o0
	st	%f12, [%fp-16]
	ld	[%fp-16], %o1
	mov	%o1, %i0
	cmp	%i0, %l3
	bg	.LL358
	add	%o5, %o0, %g1
	sub	%i2, %o0, %o3
	sethi	%hi(-192512), %o0
	or	%o0, 512, %o0
	add	%i2, %o0, %o2
	sethi	%hi(.LLC153), %o0
	sll	%i0, 4, %o1
	ldd	[%o0+%lo(.LLC153)], %f2
	add	%o1, 8, %o1
	fmovs	%f2, %f4
.LL408:
	sll	%i0, 4, %o0
	add	%i0, 1, %i0
	cmp	%i0, %l3
	fmovs	%f3, %f5
	fmovs	%f2, %f6
	std	%f4, [%o1+%g1]
	fmovs	%f3, %f7
	fmovs	%f2, %f8
	std	%f6, [%g1+%o0]
	fmovs	%f3, %f9
	fmovs	%f2, %f14
	std	%f8, [%o1+%o5]
	fmovs	%f3, %f15
	std	%f14, [%o5+%o0]
	std	%f4, [%o2+%o1]
	std	%f6, [%o2+%o0]
	std	%f8, [%o3+%o1]
	std	%f14, [%o3+%o0]
	ble	.LL408
	add	%o1, 16, %o1
.LL358:
	sethi	%hi(.LLC155), %o0
	sethi	%hi(.LLC156), %o1
	ldd	[%o0+%lo(.LLC155)], %f8
	mov	1, %o7
	ldd	[%o1+%lo(.LLC156)], %f4
	mov	0, %o3
	mov	0, %o4
	mov	460, %o2
.LL253:
	ld	[%o2+%l5], %o0
	cmp	%i4, 1
	ldd	[%o0+%o4], %f6
	fmovs	%f7, %f3
	sll	%o7, 3, %o0
	fmovs	%f6, %f2
	fdtoi	%f2, %f2
	st	%f2, [%fp-16]
	ld	[%fp-16], %i0
	sll	%i0, 4, %o1
	ldd	[%o5+%o1], %f14
	fmovs	%f14, %f2
	fmovs	%f15, %f3
	faddd	%f2, %f8, %f2
	be	.LL378
	std	%f2, [%o5+%o1]
	ldd	[%i5+%o0], %f14
	fmovs	%f14, %f6
	fmovs	%f15, %f7
.LL255:
	add	%o5, %o1, %o0
	ldd	[%o0+8], %f2
	add	%o7, 1, %o7
	faddd	%f2, %f6, %f2
	add	%o2, 4, %o2
	cmp	%o7, 20
	ble	.LL253
	std	%f2, [%o0+8]
	ld	[%l5+424], %o2
	mov	1, %l1
	cmp	%l1, %o2
	bge	.LL390
	st	%f12, [%fp-16]
	ld	[%fp-16], %o1
	sethi	%hi(-385024), %o0
	or	%o0, 524, %o0
	sll	%o1, 4, %o1
	add	%o0, %fp, %o0
	mov	8, %l2
	mov	0, %i1
	mov	%i2, %l4
	st	%o1, [%o0]
.LL260:
	st	%f12, [%fp-16]
	ld	[%fp-16], %o2
	mov	%o2, %i0
	cmp	%i0, %l3
	bg	.LL391
	sethi	%hi(.LLC153), %o0
	sethi	%hi(-96256), %o3
	or	%o3, 256, %o3
	sethi	%hi(-385024), %o0
	or	%o0, 544, %o0
	add	%l4, %o3, %o2
	add	%l4, %o0, %o3
	sethi	%hi(-385024), %o0
	or	%o0, 524, %o0
	add	%o0, %fp, %o0
	ld	[%o0], %o0
	mov	%i1, %o4
	add	%o0, 8, %o1
.LL264:
	sll	%i0, 4, %o0
	ldd	[%o5+%o0], %f2
	add	%i0, 1, %i0
	fmovs	%f2, %f4
	ldd	[%o2+%o0], %f6
	cmp	%i0, %l3
	fmovs	%f3, %f5
	fmovs	%f6, %f2
	fmovs	%f7, %f3
	faddd	%f2, %f4, %f2
	std	%f2, [%o2+%o0]
	ldd	[%o1+%o5], %f8
	ldd	[%o3+%o4], %f14
	fmovs	%f8, %f6
	fmovs	%f14, %f4
	fmovs	%f15, %f5
	fmovs	%f9, %f7
	fmuld	%f6, %f4, %f6
	ldd	[%o2+%o1], %f4
	fmovs	%f4, %f2
	fmovs	%f5, %f3
	faddd	%f2, %f6, %f2
	std	%f2, [%o2+%o1]
	ble	.LL264
	add	%o1, 16, %o1
	sethi	%hi(.LLC153), %o0
.LL391:
	sethi	%hi(.LLC156), %o1
	or	%o0, %lo(.LLC153), %l7
	or	%o1, %lo(.LLC156), %l6
	mov	1, %o7
	st	%f12, [%fp-16]
.LL394:
	ld	[%fp-16], %o0
	mov	%o0, %i0
	cmp	%i0, %l3
	bg,a	.LL392
	add	%o7, 1, %o7
	ldd	[%l7], %f10
	sll	%o7, 2, %l0
	ldd	[%l6], %f8
	sll	%o7, 3, %o4
	sll	%i0, 4, %o3
.LL393:
	ldd	[%o5+%o3], %f2
	add	%l0, 456, %o2
	fmovs	%f2, %f6
	fmovs	%f3, %f7
	fcmped	%f6, %f10
	nop
	fbule	.LL272
	cmp	%i4, 1
	st	%i0, [%fp-16]
	ld	[%fp-16], %f3
	fitod	%f3, %f4
	ld	[%l5+%o2], %o0
	ldd	[%o0+%l2], %f14
	fmovs	%f14, %f2
	fmovs	%f15, %f3
	faddd	%f4, %f2, %f4
	fdtoi	%f4, %f4
	st	%f4, [%fp-16]
	ld	[%fp-16], %o0
	sll	%o0, 4, %o1
	ldd	[%g1+%o1], %f4
	fmovs	%f4, %f2
	fmovs	%f5, %f3
	faddd	%f2, %f6, %f2
	be	.LL379
	std	%f2, [%g1+%o1]
	ldd	[%i5+%o4], %f14
	fmovs	%f14, %f6
	fmovs	%f15, %f7
.LL277:
	add	%o5, %o3, %o0
	ldd	[%o0+8], %f2
	add	%g1, %o1, %o1
	fmuld	%f2, %f6, %f2
	ldd	[%o1+8], %f4
	faddd	%f4, %f2, %f4
	std	%f4, [%o1+8]
.LL272:
	add	%i0, 1, %i0
	cmp	%i0, %l3
	ble	.LL393
	sll	%i0, 4, %o3
	add	%o7, 1, %o7
.LL392:
	cmp	%o7, 20
	ble,a	.LL394
	st	%f12, [%fp-16]
	sethi	%hi(-384000), %o1
	sethi	%hi(95232), %o2
	add	%l4, %o1, %o0
	or	%o2, 768, %o2
	add	%o0, %o2, %o1
	cmp	%g1, %o1
	be	.LL380
	mov	%g1, %o5
	mov	%o0, %o5
	mov	%o1, %g1
.LL281:
	st	%f12, [%fp-16]
	ld	[%fp-16], %o3
	mov	%o3, %i0
	cmp	%i0, %l3
	bg,a	.LL395
	ld	[%l5+424], %o2
	sethi	%hi(.LLC153), %o0
	or	%o0, %lo(.LLC153), %o0
	ldd	[%o0], %f2
	fmovs	%f2, %f4
.LL409:
	sll	%i0, 4, %o1
	add	%g1, %o1, %o0
	std	%f2, [%o0+8]
	add	%i0, 1, %i0
	fmovs	%f3, %f5
	cmp	%i0, %l3
	ble	.LL409
	std	%f4, [%g1+%o1]
	ld	[%l5+424], %o2
.LL395:
	add	%l1, 1, %l1
	cmp	%l1, %o2
	add	%l2, 8, %l2
	bl	.LL260
	add	%i1, 8, %i1
	st	%f12, [%fp-16]
.LL390:
	ld	[%fp-16], %o0
	mov	%o0, %i0
	cmp	%i0, %l3
	bg,a	.LL396
	add	%o2, -1, %l1
	sethi	%hi(-385024), %o1
	or	%o1, 544, %o1
	add	%i2, %o1, %o4
	sethi	%hi(-192512), %o0
	sethi	%hi(.LLC153), %o1
	or	%o0, 512, %o0
	ldd	[%o1+%lo(.LLC153)], %f6
	add	%i2, %o0, %o3
.LL291:
	sll	%i0, 4, %o1
	ldd	[%o5+%o1], %f4
	add	%o5, %o1, %o2
	fmovs	%f4, %f2
	ld	[%l5+424], %o0
	add	%i0, 1, %i0
	sll	%o0, 3, %o0
	add	%o0, -8, %o0
	fmovs	%f5, %f3
	cmp	%i0, %l3
	std	%f2, [%o3+%o1]
	ldd	[%o4+%o0], %f8
	fmovs	%f6, %f14
	ldd	[%o2+8], %f2
	add	%o1, 8, %o0
	fmovs	%f8, %f4
	fmovs	%f9, %f5
	fmuld	%f2, %f4, %f2
	fmovs	%f7, %f15
	std	%f2, [%o3+%o0]
	std	%f6, [%o2+8]
	ble	.LL291
	std	%f14, [%o5+%o1]
	ld	[%l5+424], %o2
	add	%o2, -1, %l1
.LL396:
	sethi	%hi(.LLC155), %o0
	sethi	%hi(.LLC156), %o1
	sll	%l1, 3, %o3
	ldd	[%o0+%lo(.LLC155)], %f8
	mov	1, %o7
	ldd	[%o1+%lo(.LLC156)], %f4
	mov	%o3, %o4
	mov	460, %o2
.LL296:
	ld	[%o2+%l5], %o0
	cmp	%i4, 1
	ldd	[%o0+%o4], %f6
	fmovs	%f7, %f3
	sll	%o7, 3, %o0
	fmovs	%f6, %f2
	fdtoi	%f2, %f2
	st	%f2, [%fp-16]
	ld	[%fp-16], %i0
	sll	%i0, 4, %o1
	ldd	[%o5+%o1], %f14
	fmovs	%f14, %f2
	fmovs	%f15, %f3
	faddd	%f2, %f8, %f2
	be	.LL381
	std	%f2, [%o5+%o1]
	ldd	[%i5+%o0], %f14
	fmovs	%f14, %f6
	fmovs	%f15, %f7
.LL298:
	add	%o5, %o1, %o0
	ldd	[%o0+8], %f2
	add	%o7, 1, %o7
	faddd	%f2, %f6, %f2
	add	%o2, 4, %o2
	cmp	%o7, 20
	ble	.LL296
	std	%f2, [%o0+8]
	ld	[%l5+424], %o0
	add	%o0, -2, %l1
	cmp	%l1, 0
	ble	.LL397
	st	%f12, [%fp-16]
	ld	[%fp-16], %o0
	mov	%i2, %l4
	sll	%o0, 4, %i1
	st	%f12, [%fp-16]
.LL403:
	ld	[%fp-16], %o1
	mov	%o1, %i0
	cmp	%i0, %l3
	bg	.LL398
	sethi	%hi(.LLC153), %o0
	ld	[%l5+424], %o0
	sethi	%hi(-96256), %o3
	sub	%o0, %l1, %o0
	sll	%o0, 3, %o0
	add	%o0, -16, %o4
	or	%o3, 256, %o3
	sethi	%hi(-385024), %o0
	add	%l4, %o3, %o2
	or	%o0, 544, %o0
	add	%l4, %o0, %o3
	add	%i1, 8, %o1
.LL307:
	sll	%i0, 4, %o0
	ldd	[%o5+%o0], %f2
	add	%i0, 1, %i0
	fmovs	%f2, %f4
	ldd	[%o2+%o0], %f6
	cmp	%i0, %l3
	fmovs	%f3, %f5
	fmovs	%f6, %f2
	fmovs	%f7, %f3
	faddd	%f2, %f4, %f2
	std	%f2, [%o2+%o0]
	ldd	[%o1+%o5], %f8
	ldd	[%o3+%o4], %f14
	fmovs	%f8, %f6
	fmovs	%f14, %f4
	fmovs	%f15, %f5
	fmovs	%f9, %f7
	fmuld	%f6, %f4, %f6
	ldd	[%o2+%o1], %f4
	fmovs	%f4, %f2
	fmovs	%f5, %f3
	faddd	%f2, %f6, %f2
	std	%f2, [%o2+%o1]
	ble	.LL307
	add	%o1, 16, %o1
	sethi	%hi(.LLC153), %o0
.LL398:
	sethi	%hi(.LLC156), %o1
	or	%o0, %lo(.LLC153), %l7
	or	%o1, %lo(.LLC156), %l6
	mov	1, %o7
	st	%f12, [%fp-16]
.LL401:
	ld	[%fp-16], %o0
	mov	%o0, %i0
	cmp	%i0, %l3
	bg,a	.LL399
	add	%o7, 1, %o7
	ldd	[%l7], %f10
	sll	%o7, 2, %l2
	ldd	[%l6], %f8
	sll	%o7, 3, %l0
	sll	%i0, 4, %o4
.LL400:
	ldd	[%o5+%o4], %f2
	add	%l2, 456, %o2
	fmovs	%f2, %f6
	sll	%l1, 3, %o3
	fmovs	%f3, %f7
	fcmped	%f6, %f10
	nop
	fbule	.LL315
	cmp	%i4, 1
	st	%i0, [%fp-16]
	ld	[%fp-16], %f3
	fitod	%f3, %f4
	ld	[%l5+%o2], %o0
	ldd	[%o0+%o3], %f14
	fmovs	%f14, %f2
	fmovs	%f15, %f3
	faddd	%f4, %f2, %f4
	fdtoi	%f4, %f4
	st	%f4, [%fp-16]
	ld	[%fp-16], %o0
	sll	%o0, 4, %o1
	ldd	[%g1+%o1], %f4
	fmovs	%f4, %f2
	fmovs	%f5, %f3
	faddd	%f2, %f6, %f2
	be	.LL382
	std	%f2, [%g1+%o1]
	ldd	[%i5+%l0], %f14
	fmovs	%f14, %f6
	fmovs	%f15, %f7
.LL320:
	add	%o5, %o4, %o0
	ldd	[%o0+8], %f2
	add	%g1, %o1, %o1
	fmuld	%f2, %f6, %f2
	ldd	[%o1+8], %f4
	faddd	%f4, %f2, %f4
	std	%f4, [%o1+8]
.LL315:
	add	%i0, 1, %i0
	cmp	%i0, %l3
	ble,a	.LL400
	sll	%i0, 4, %o4
	add	%o7, 1, %o7
.LL399:
	cmp	%o7, 20
	ble,a	.LL401
	st	%f12, [%fp-16]
	sethi	%hi(-384000), %o1
	sethi	%hi(95232), %o2
	add	%l4, %o1, %o0
	or	%o2, 768, %o2
	add	%o0, %o2, %o1
	cmp	%g1, %o1
	be	.LL383
	mov	%g1, %o5
	mov	%o0, %o5
	mov	%o1, %g1
.LL324:
	st	%f12, [%fp-16]
	ld	[%fp-16], %o3
	mov	%o3, %i0
	cmp	%i0, %l3
	bg,a	.LL402
	add	%l1, -1, %l1
	sethi	%hi(.LLC153), %o0
	or	%o0, %lo(.LLC153), %o0
	ldd	[%o0], %f2
	fmovs	%f2, %f4
.LL410:
	sll	%i0, 4, %o1
	add	%g1, %o1, %o0
	std	%f2, [%o0+8]
	add	%i0, 1, %i0
	fmovs	%f3, %f5
	cmp	%i0, %l3
	ble	.LL410
	std	%f4, [%g1+%o1]
	add	%l1, -1, %l1
.LL402:
	cmp	%l1, 0
	bg	.LL403
	st	%f12, [%fp-16]
.LL397:
	ld	[%fp-16], %o0
	mov	%o0, %i0
	cmp	%i0, %l3
	bg	.LL404
	cmp	%i4, 1
	sethi	%hi(-96256), %o0
	or	%o0, 256, %o0
	ld	[%l5+424], %o1
	add	%i2, %o0, %o3
	sethi	%hi(-385024), %o0
	sll	%o1, 3, %o1
	sll	%i0, 4, %o2
	or	%o0, 544, %o0
	add	%o1, -16, %o1
	add	%i2, %o0, %o4
	add	%o2, 8, %o2
.LL334:
	sll	%i0, 4, %o0
	ldd	[%o5+%o0], %f2
	add	%i0, 1, %i0
	fmovs	%f2, %f4
	ldd	[%o3+%o0], %f6
	cmp	%i0, %l3
	fmovs	%f3, %f5
	fmovs	%f6, %f2
	fmovs	%f7, %f3
	faddd	%f2, %f4, %f2
	std	%f2, [%o3+%o0]
	ldd	[%o2+%o5], %f8
	ldd	[%o4+%o1], %f12
	fmovs	%f8, %f6
	ldd	[%o3+%o2], %f14
	fmovs	%f9, %f7
	fmovs	%f12, %f4
	fmovs	%f13, %f5
	fmuld	%f6, %f4, %f6
	fmovs	%f14, %f2
	fmovs	%f15, %f3
	faddd	%f2, %f6, %f2
	std	%f2, [%o3+%o2]
	ble	.LL334
	add	%o2, 16, %o2
	cmp	%i4, 1
.LL404:
	be	.LL384
	sethi	%hi(.LLC156), %o0
	sethi	%hi(-385024), %o2
	or	%o2, 512, %o2
	add	%o2, %fp, %o2
	ld	[%l5+424], %o0
	sethi	%hi(185344), %o1
	or	%o1, 27, %o1
	call	.umul, 0
	std	%f16, [%o2]
	sethi	%hi(-186368), %o1
	or	%o1, 997, %o1
	add	%o0, %o1, %o0
	st	%o0, [%fp-16]
	ld	[%fp-16], %f2
	sethi	%hi(.LLC157), %o0
	fitod	%f2, %f4
	sethi	%hi(-385024), %o1
	or	%o1, 512, %o1
	add	%o1, %fp, %o1
	ldd	[%o1], %f16
	ldd	[%o0+%lo(.LLC157)], %f2
	faddd	%f4, %f2, %f4
.LL337:
	cmp	%i4, 1
	be	.LL385
	sethi	%hi(TN995), %o0
.LL338:
	sethi	%hi(.LLC153), %o0
.LL407:
	ldd	[%o0+%lo(.LLC153)], %f8
	fcmped	%f8, %f16
	nop
	fbuge	.LL346
	mov	%l3, %i0
	cmp	%i0, 0
	bl	.LL346
	fmovs	%f8, %f10
	sethi	%hi(-96256), %o1
	sethi	%hi(-192512), %o2
	sll	%i0, 4, %o0
	or	%o1, 256, %o1
	fmovs	%f9, %f11
	or	%o2, 512, %o2
	add	%i2, %o1, %o1
	add	%i2, %o2, %o2
	add	%o0, 8, %o0
	ldd	[%o2+%o0], %f2
.LL406:
	add	%i0, -1, %i0
	fmovs	%f2, %f6
	fmovs	%f3, %f7
	fcmped	%f6, %f10
	nop
	fbg	.LL351
	cmp	%i0, 0
	ldd	[%o1+%o0], %f12
	fmovs	%f12, %f2
	fmovs	%f13, %f3
	fcmped	%f2, %f10
	nop
	fbule,a	.LL405
	fcmped	%f8, %f16
.LL351:
	ldd	[%o1+%o0], %f14
	fmovs	%f14, %f2
	fmovs	%f15, %f3
	faddd	%f6, %f2, %f2
	fmuld	%f2, %f4, %f2
	faddd	%f8, %f2, %f8
	fcmped	%f8, %f16
.LL405:
	nop
	fbuge	.LL346
	add	%o0, -16, %o0
	bge,a	.LL406
	ldd	[%o2+%o0], %f2
.LL346:
	cmp	%i4, 1
	be	.LL386
	sethi	%hi(TPabove), %o0
	sethi	%hi(.LLC159), %o0
	or	%o0, %lo(.LLC159), %o0
	call	printf, 0
	mov	%i0, %o1
	b,a	.LL354
.LL386:
	ldd	[%o0+%lo(TPabove)], %o2
	mov	%i0, %o1
	sethi	%hi(.LLC158), %o0
	call	printf, 0
	or	%o0, %lo(.LLC158), %o0
	b,a	.LL354
.LL385:
	ld	[%o0+%lo(TN995)], %o3
	cmp	%o3, 0
	ble	.LL407
	sethi	%hi(.LLC153), %o0
	sethi	%hi(.LLC153), %o2
	ldd	[%o2+%lo(.LLC153)], %f2
	mov	%l3, %i0
	sethi	%hi(TPabove), %o5
	cmp	%i0, %o3
	ble	.LL407
	std	%f2, [%o5+%lo(TPabove)]
	fmovs	%f2, %f10
	sethi	%hi(-192512), %o1
	or	%o1, 512, %o1
	sethi	%hi(-96256), %o2
	or	%o2, 256, %o2
	fmovs	%f3, %f11
	add	%i2, %o1, %o4
	sll	%i0, 4, %o0
	add	%i2, %o2, %o1
	mov	%o3, %o2
	fmovs	%f10, %f8
	add	%o0, 8, %o0
	fmovs	%f11, %f9
.LL341:
	ldd	[%o4+%o0], %f2
	add	%i0, -1, %i0
	fmovs	%f2, %f6
	fmovs	%f3, %f7
	fcmped	%f6, %f10
	nop
	fbg	.LL343
	cmp	%i0, %o2
	ldd	[%o1+%o0], %f12
	fmovs	%f12, %f2
	fmovs	%f13, %f3
	fcmped	%f2, %f10
	nop
	fbule	.LL342
	nop
.LL343:
	ldd	[%o1+%o0], %f14
	fmovs	%f14, %f2
	fmovs	%f15, %f3
	faddd	%f6, %f2, %f2
	fmuld	%f2, %f4, %f2
	faddd	%f8, %f2, %f8
.LL342:
	bg	.LL341
	add	%o0, -16, %o0
	b	.LL338
	std	%f8, [%o5+%lo(TPabove)]
.LL384:
	b	.LL337
	ldd	[%o0+%lo(.LLC156)], %f4
.LL383:
	b	.LL324
	mov	%o0, %g1
.LL382:
	ld	[%i3+%o2], %o0
	ldd	[%o0+%o3], %f6
	fmovs	%f6, %f2
	fmovs	%f7, %f3
	b	.LL320
	fdivd	%f2, %f8, %f6
.LL381:
	ld	[%o2+%i3], %o0
	ldd	[%o0+%o3], %f6
	fmovs	%f6, %f2
	fmovs	%f7, %f3
	b	.LL298
	fdivd	%f2, %f4, %f6
.LL380:
	b	.LL281
	mov	%o0, %g1
.LL379:
	ld	[%i3+%o2], %o0
	ldd	[%o0+%l2], %f6
	fmovs	%f6, %f2
	fmovs	%f7, %f3
	b	.LL277
	fdivd	%f2, %f8, %f6
.LL378:
	ld	[%o2+%i3], %o0
	ldd	[%o0+%o3], %f6
	fmovs	%f6, %f2
	fmovs	%f7, %f3
	b	.LL255
	fdivd	%f2, %f4, %f6
.LL376:
	b	.LL233
	mov	%o1, %l2
.LL375:
	sethi	%hi(.LLC148), %o0
	b	.LL214
	ldd	[%o0+%lo(.LLC148)], %f16
.LL354:
	ret
	restore
.LLfe8:
	.size	pssmdist,.LLfe8-pssmdist
	.section	".rodata"
	.align 8
.LLC174:
	.asciz	"%s; distance from previous block=(%d,%d)"
	.section	".text"
	.align 4
	.global fix_ac
	.type	fix_ac,#function
	.proc	020
fix_ac:
	!#PROLOGUE# 0
	!#PROLOGUE# 1
	ld	[%o0+32], %o1
	ld	[%o0+16], %o4
	add	%o1, 400, %o2
	ld	[%o0+12], %o3
	add	%o1, 100, %o1
	mov	%o1, %o0
	sethi	%hi(.LLC174), %o1
	or	%o1, %lo(.LLC174), %o1
	or	%o7, %g0, %g1
	call	sprintf, 0
	 or	%g1, %g0, %o7
.LLfe9:
	.size	fix_ac,.LLfe9-fix_ac
	.align 4
	.global add_cluster
	.type	add_cluster,#function
	.proc	020
add_cluster:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	ld	[%i0+644], %o3
	ld	[%i0+640], %o2
	add	%o3, 1, %o1
	cmp	%o1, %o2
	ble	.LL413
	mov	%i0, %o0
	call	resize_block_clusters, 0
	 nop
	ld	[%i0+644], %o3
.LL413:
	ld	[%i0+676], %o1
	sll	%o3, 3, %o2
	add	%o1, %o2, %o1
	ld	[%o1-8], %o0
	add	%o0, -1, %o0
	st	%o0, [%o1-8]
	ld	[%i0+644], %o2
	mov	1, %o0
	ld	[%i0+676], %o3
	sll	%o2, 3, %o2
	st	%o0, [%o3+%o2]
	ld	[%i0+636], %o1
	sll	%o1, 5, %o0
	sub	%o0, %o1, %o0
	ld	[%i0+644], %o3
	sll	%o0, 3, %o0
	ld	[%i0+680], %o1
	sll	%o3, 3, %o3
	ld	[%i0+676], %o2
	add	%o1, %o0, %o1
	add	%o2, %o3, %o2
	add	%o1, -248, %o1
	st	%o1, [%o2+4]
	ld	[%i0+644], %o0
	add	%o0, 1, %o0
	st	%o0, [%i0+644]
	ret
	restore
.LLfe10:
	.size	add_cluster,.LLfe10-add_cluster
	.global .rem
	.section	".rodata"
	.align 8
.LLC175:
	.asciz	"Cannot write %s of length %d from %d to %d\n"
	.align 8
.LLC176:
	.asciz	">%s %s from %d to %d\n"
	.section	".text"
	.align 4
	.global write_seq
	.type	write_seq,#function
	.proc	020
write_seq:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	orcc	%i2, 0, %o4
	bl	.LL427
	mov	%i3, %i4
	ld	[%i1+204], %o0
	cmp	%i4, %o0
	bg	.LL416
	mov	%o0, %i2
	cmp	%i4, %o4
	bge	.LL415
	add	%o4, -10, %l0
.LL416:
	sethi	%hi(.LLC175), %i0
	or	%i0, %lo(.LLC175), %i0
	call	printf, 0
	 restore %g0, %o4, %o3
.LL415:
	add	%i4, 10, %i3
	sethi	%hi(.LLC176), %o1
	add	%o4, -9, %o4
	add	%i1, 100, %o3
	add	%i3, 1, %o5
	or	%o1, %lo(.LLC176), %o1
	mov	%i0, %o0
	call	fprintf, 0
	mov	%i1, %o2
	mov	%l0, %i2
	cmp	%i2, %i3
	bge,a	.LL426
	mov	%i0, %i1
	sethi	%hi(aa_btoa), %o0
	or	%o0, %lo(aa_btoa), %i4
	ld	[%i1+244], %o0
.LL431:
	mov	%i0, %o1
	ldub	[%o0+%i2], %o2
	add	%i2, 1, %l0
	ldsb	[%i4+%o2], %o0
	call	fputc, 0
	mov	%l0, %i2
	mov	60, %o1
	call	.rem, 0
	mov	%l0, %o0
	mov	%o0, %o2
	mov	10, %o0
	cmp	%o2, 0
	be	.LL428
	mov	%i0, %o1
	cmp	%i2, %i3
.LL430:
	bl,a	.LL431
	ld	[%i1+244], %o0
	b	.LL429
	mov	%i0, %i1
.LL428:
	call	fputc, 0
	 nop
	b	.LL430
	cmp	%i2, %i3
.LL427:
	b	.LL416
	ld	[%i1+204], %i2
.LL426:
.LL429:
	call	fputc, 0
	 restore %g0, 10, %o0
.LLfe11:
	.size	write_seq,.LLfe11-write_seq
	.align 4
	.global order_seq
	.type	order_seq,#function
	.proc	020
order_seq:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	ld	[%i1+636], %l2
	ld	[%i2+636], %o0
	cmp	%o0, %l2
	bl,a	.LL433
	mov	%o0, %l2
.LL433:
	mov	0, %l6
	cmp	%l6, %l2
	bge	.LL447
	mov	-1, %i3
	mov	0, %l7
	mov	0, %l3
.LL437:
	cmp	%i1, %i2
	be,a	.LL436
	st	%l6, [%l3+%i0]
	mov	0, %l0
	st	%i3, [%l3+%i0]
	cmp	%l0, %l2
	bge	.LL436
	mov	%l3, %l5
	mov	0, %l1
	mov	%l3, %l4
	ld	[%i1+680], %o0
.LL452:
	ld	[%i2+680], %o1
	add	%o0, %l7, %o0
	call	strcmp, 0
	add	%o1, %l1, %o1
	cmp	%o0, 0
	be	.LL449
	add	%l1, 248, %l1
.LL444:
	ld	[%i0+%l4], %o0
	cmp	%o0, 0
	bl	.LL450
	add	%l0, 1, %l0
.LL436:
	add	%l6, 1, %l6
.LL451:
	cmp	%l6, %l2
	add	%l7, 248, %l7
	bl	.LL437
	add	%l3, 32, %l3
	b,a	.LL447
.LL450:
	cmp	%l0, %l2
	bl,a	.LL452
	ld	[%i1+680], %o0
	b	.LL451
	add	%l6, 1, %l6
.LL449:
	b	.LL444
	st	%l0, [%i0+%l5]
.LL447:
	ret
	restore
.LLfe12:
	.size	order_seq,.LLfe12-order_seq
	.align 4
	.global assemble_hit
	.type	assemble_hit,#function
	.proc	020
assemble_hit:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	mov	%i0, %l7
	ld	[%l7], %o0
	mov	%i1, %i4
	call	malloc, 0
	sll	%o0, 4, %o0
	ld	[%l7+44], %o3
	mov	%o0, %i0
	mov	%i2, %i3
	cmp	%o3, 0
	b	.LL482
	mov	0, %l3
.LL456:
	sll	%l3, 4, %o0
	fitod	%f2, %f4
	add	%i0, %o0, %o2
	add	%l3, 1, %o1
	mov	%o1, %l3
	std	%f4, [%i0+%o0]
	st	%o3, [%o2+12]
	st	%o1, [%o2+8]
	ld	[%o3+32], %o0
	st	%g0, [%o0+656]
	ld	[%o3+44], %o3
	cmp	%o3, 0
.LL482:
	be,a	.LL483
	ld	[%l7], %o1
	ld	[%o3+32], %o0
	cmp	%o0, 0
	bne,a	.LL456
	ld	[%o3+28], %f2
	ld	[%l7], %o1
.LL483:
	sethi	%hi(btempcmp), %o3
	mov	%i0, %o0
	mov	16, %o2
	call	qsort, 0
	or	%o3, %lo(btempcmp), %o3
	ld	[%i0+12], %o0
	mov	1, %l3
	ld	[%o0+32], %o2
	mov	1, %o0
	st	%o0, [%o2+656]
	ld	[%i0+12], %o1
	ld	[%o1+32], %o0
	ld	[%l7], %o1
	ld	[%o0+636], %o2
	cmp	%l3, %o1
	bge	.LL480
	add	%o2, -1, %i1
	sethi	%hi(CutOff), %o0
	ld	[%o0+%lo(CutOff)], %i5
	add	%i0, 16, %l2
	mov	16, %i2
.LL462:
	ld	[%l2+12], %o1
	cmp	%l3, 0
	ld	[%o1+32], %o0
	mov	1, %o1
	ble	.LL481
	st	%o1, [%o0+656]
	sll	%i1, 5, %o0
	sub	%o0, %i1, %o0
	sll	%o0, 3, %l6
	mov	%i5, %l5
	mov	%i2, %l4
	mov	%l2, %l1
	mov	%i0, %g1
	mov	%l3, %l0
.LL466:
	ld	[%g1+12], %o7
	ld	[%o7+32], %o0
	ld	[%o0+656], %o1
	cmp	%o1, 0
	be,a	.LL484
	addcc	%l0, -1, %l0
	ld	[%o7+28], %o0
	cmp	%o0, %l5
	bl	.LL468
	add	%i0, %l4, %o5
	ld	[%g1+8], %o4
	ld	[%o5+8], %o3
	cmp	%o3, %o4
	bge	.LL485
	nop
	ld	[%o5+12], %o0
	ld	[%o7+20], %o2
	ld	[%o0+24], %o1
	cmp	%o1, %o2
	bg,a	.LL486
	ld	[%l1+12], %o1
	cmp	%o3, %o4
.LL485:
	ble,a	.LL484
	addcc	%l0, -1, %l0
	ld	[%o5+12], %o0
	ld	[%o7+24], %o2
	ld	[%o0+20], %o1
	cmp	%o1, %o2
	bge,a	.LL484
	addcc	%l0, -1, %l0
.LL468:
	ld	[%l1+12], %o1
.LL486:
	ld	[%o1+32], %o2
	ld	[%o2+680], %o0
	add	%o0, %l6, %o0
	st	%g0, [%o0+224]
	ld	[%l1+12], %o1
	ld	[%o1+32], %o0
	st	%g0, [%o0+656]
	addcc	%l0, -1, %l0
.LL484:
	bne	.LL466
	add	%g1, 16, %g1
.LL481:
	ld	[%l7], %o0
	add	%l3, 1, %l3
	cmp	%l3, %o0
	add	%l2, 16, %l2
	bl	.LL462
	add	%i2, 16, %i2
.LL480:
	ld	[%i3], %o1
	mov	-999, %o0
	ld	[%l7+44], %o3
	st	%o1, [%i4]
	cmp	%o3, 0
	be	.LL473
	st	%o0, [%i3]
	ld	[%o3+32], %o4
	cmp	%o4, 0
	be	.LL473
	sll	%i1, 5, %o0
	sub	%o0, %i1, %o0
	sll	%o0, 3, %o2
	ld	[%o4+680], %o0
.LL489:
	add	%o0, %o2, %o0
	ld	[%o0+224], %o1
	cmp	%o1, 0
	be,a	.LL487
	ld	[%o3+44], %o3
	ld	[%o0+200], %o1
	ld	[%i4], %o0
	cmp	%o1, %o0
	bge,a	.LL488
	ld	[%o4+680], %o0
	ld	[%o3+32], %o4
	st	%o1, [%i4]
	ld	[%o4+680], %o0
.LL488:
	add	%o0, %o2, %o0
	ld	[%i3], %o1
	ld	[%o0+200], %o0
	cmp	%o0, %o1
	bg,a	.LL476
	st	%o0, [%i3]
.LL476:
	ld	[%o3+44], %o3
.LL487:
	cmp	%o3, 0
	be	.LL473
	nop
	ld	[%o3+32], %o0
	orcc	%o0, 0, %o4
	bne,a	.LL489
	ld	[%o4+680], %o0
.LL473:
	call	free, 0
	 restore
.LLfe13:
	.size	assemble_hit,.LLfe13-assemble_hit
	.section	".rodata"
	.align 8
.LLC177:
	.uaword	0x0 ! ~0.00000000000000000000e0
	.uaword	0x0
	.section	".text"
	.align 4
	.global btempcmp
	.type	btempcmp,#function
	.proc	04
btempcmp:
	!#PROLOGUE# 0
	save	%sp, -112, %sp
	!#PROLOGUE# 1
	ldd	[%i0], %f2
	sethi	%hi(.LLC177), %o0
	ldd	[%i1], %f4
	fsubd	%f4, %f2, %f4
	ldd	[%o0+%lo(.LLC177)], %f6
	fcmped	%f4, %f6
	nop
	fbg	.LL490
	mov	1, %i0
	fcmped	%f4, %f6
	nop
	fbl	.LL490
	mov	-1, %i0
	mov	0, %i0
.LL490:
	ret
	restore
.LLfe14:
	.size	btempcmp,.LLfe14-btempcmp



>Fix:
	Don't use -O options
>Release-Note:
>Audit-Trail:
>Unformatted:
 To: gcc-gnats@gcc.gnu.org
 Subject: gcc 3.0.2 problem 
 From: jorja@fhcrc.org
 Reply-To: jorja@fhcrc.org
 Cc: 
 X-send-pr-version: 3.113
 X-GNATS-Notify: 
 
 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]