[gnu.g++.bug] Sun 4.0.3 assembler error in making libg++.a

edwards@uab.edu (John Edwards) (12/20/89)

INFO:
John Edwards, jr. sys. prog., UAB, edwards%uab.edu@relay.cs.net
gcc version 1.36.1 (based on GCC 1.36)
Used m68k.md and tm-sun3.h.
Compiled on Sun 3/280 running SunOS 4.0.3
Note:I included as much info in this mail as possible w/o sending you the works
     and w/ limited space/time I have to work with.

SYNOPSIS:

When compiling libg++.a, got 'invalid operand' error from Sun 'as' for '.stab'
symbol table directives in builtin, BitString, EH, Rational, String, and stream.

Here's script of compilation where error occurred:

Script started on Tue Dec  5 09:43:36 198
cisa(12)% make src/libg++.a
(cd src; make GXX="/export/root/c++/bin/g++"  GXXFLAGS=" -I/export/root/c++/libg++/g++-include -g -O -fstrength-reduce  -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized  -Wall -v  " GXXLDFLAGS="-L/export/root/c++/libg++/src -lg++ -lm
 " LIBDIR="/export/root/c++/lib" SRCIDIR="/export/root/c++/libg++/g++-include" CC="/export/root/c++/bin/gcc" CFLAGS=" -I/export/root/c++/lib/gcc-include -I/usr/include -I/export/root/c++/libg++/g++-include -g -O -fstrength-reduce -fdelayed-branch  -Wall -
v  " RANLIB="ranlib" LDXX="/export/root/c++/lib/gcc-ld" GXXCRT1="/export/root/c++/lib/crt1+.o" MAKE="make" prefix="/export/root/c++" )
/export/root/c++/bin/g++ -I/export/root/c++/libg++/g++-include -g -O -fstrength-reduce  -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized  -Wall -v   -c  builtin.cc
gcc version 1.36.1 (based on GCC 1.36)
 /export/root/c++/lib/gcc-cpp -+ -v -I/export/root/c++/libg++/g++-include -undef -D__GNUC__ -D__GNUG__ -D__cplusplus -Dmc68000 -Dsun -Dunix -D__mc68000__ -D__sun__ -D__unix__ -D__OPTIMIZE__ -Wall -D__HAVE_68881__ -Dmc68020 builtin.cc /usr/tmp/cca20040.cpp

GNU CPP version 1.36
 /export/root/c++/lib/gcc-cc1plus /usr/tmp/cca20040.cpp -quiet -dumpbase builtin.cc -fstrength-reduce -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized -g -O -Wall -version -o /usr/tmp/cca20040.s
GNU C++ version 1.36.1 (based on GCC 1.36) (68k, MIT syntax) compiled by GNU C version 1.36.
default target switches: -m68020 -mc68020 -m68881 -mbitfield
builtin.cc: In function char *dtoa (double, char (=  103 ), int (=  0 ), int (=  6 )):
builtin.cc:499: warning: unused variable `carry'
builtin.cc:386: warning: unused variable `fworkend'
/export/root/c++/libg++/g++-include/time.h: At top level:
In file included from /export/root/c++/libg++/g++-include/osfcn.h:4, from builtin.cc:763:
/export/root/c++/libg++/g++-include/time.h:60: warning: type declaration of timezone shadows previous declaration
/export/root/c++/libg++/g++-include/time.h:60: warning: `timezone' was declared `extern' and later `static'
builtin.cc:848: warning: structure has no data members
 as -mc68020 -o builtin.o /usr/tmp/cca20040.s
as: error (/usr/tmp/cca20040.s:2415): Invalid operand
as: error (/usr/tmp/cca20040.s:2442): Invalid operand
*** Error code 1
make: Fatal error: Command failed for target `builtin.o'
Current working directory /export/root/c++/libg++/src
*** Error code 1
make: Fatal error: Command failed for target `src/libg++.a'
13.0u 2.7s 0:26 58% 0+384k 85+37io 203pf+0w
cisa(13)% exit
cisa(14)%
script done on Tue Dec  5 09:44:21 198

Here's script of separate compilation of 'trouble' files.

Script started on Tue Dec 19 14:58:46 198
cisa(41)% as -mc68020 -o Bitstring.o BitString.s
as: error (BitString.s:5464): Invalid operand
as: error (BitString.s:5474): Invalid operand
cisa(42)% as -mc68020 -o EH.o EH.s
as: error (EH.s:81): Invalid operand
as: error (EH.s:92): Invalid operand
cisa(43)% as -mc68020 -o Rational.o Rational.s
as: error (Rational.s:2929): Invalid operand
as: error (Rational.s:2945): Invalid operand
cisa(44)% as -mc68020 -o String.o String.s
as: error (String.s:5092): Invalid operand
as: error (String.s:5186): Invalid operand
cisa(45)% as -mc68020 -o stream.o stream.s
as: error (stream.s:2275): Invalid operand
as: error (stream.s:2299): Invalid operand
cisa(46)% exit
cisa(47)%
script done on Tue Dec 19 15:01:10 198

Here's the Makefile in libg++ I made a few changes to possibly:

# Makefile for g++ library version 1.36.1
#   Copyright (C) 1989 Free Software Foundation, Inc.
#   written by Doug Lea (dl@rocky.oswego.edu)

#This file is part of GNU libg++.

#GNU libg++ is free software; you can redistribute it and/or modify
#it under the terms of the GNU General Public License as published by
#the Free Software Foundation; either version 1, or (at your option)
#any later version.

#GNU libg++ is distributed in the hope that it will be useful,
#but WITHOUT ANY WARRANTY; without even the implied warranty of
#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#GNU General Public License for more details.

#You should have received a copy of the GNU General Public License
#along with GNU libg++; see the file COPYING.  If not, write to
#the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

###########################################################################
#
# Directories, paths, compilation flags and program names.
#
# Please make sure these are correct.
#

# ------ source locations

# Manually set PWD to *this* directory if you are not using gnu make
# source include directory 
SRCIDIR= /export/root/c++/libg++/g++-include

# ------ installation destinations
# ------ You will require write-permission on the destination directories
# ------ in order to `make install'

# set `prefix' to something else if you want to install things
# in nonstandard places

prefix =/export/root/c++

# libg++.a destination
LIBDIR = $(prefix)/lib

# executables directory: location to install the genclass class generator
BINDIR = $(prefix)/bin

# location to install include file directory
IDIR = $(prefix)/lib/g++-include


# ------- System-dependent defines
# ------- use the second form of each for SystemV (USG)

# g++ flags
OSFLAG= -Dsun3
#OSFLAG = -DUSG
# use this only if you have a strange stdio implementation
# -- recommended for DGUX and HPUX
#OSFLAG = -DDEFAULT_filebuf
# use this if you do not want gnulib3 in libg++.a
#OSFLAG = -DNO_GNULIB3

# ld or ld++ flags
OSLDFLAG =
#OSLDFLAG= -lPW

# how to install
INSTALL=install -c
#INSTALL=cp

# ranlib if necessary
RANLIB=ranlib
#RANLIB=echo

# which make?
MAKE=make

# not used, but convenient for those who preprocess things while compiling
SHELL=/bin/sh


# ------ compiler names

# GNU C++ compiler name
GXX = /export/root/c++/bin/g++
#GXX=gcc

# GNU CC compiler name (needed for some .c files in libg++.a)
CC = /export/root/c++/bin/gcc

# GNU loader
LDXX = $(LIBDIR)/gcc-ld
#LDXX = $(LIBDIR)/gcc-ld++

# crt0+.o location (for dynamic loading tests)
GXXCRT1=$(LIBDIR)/crt1+.o

# ------ Other compilation flags
# ------ modify as you like -- the ones here are sheer overkill

#GXX_OPTIMIZATION_FLAGS= -O -fstrength-reduce  -felide-constructors -fschedule-insns -fdelayed-branch -fsave-memoized 
GXX_OPTIMIZATION_FLAGS= -O

#GCC_OPTIMIZATION_FLAGS= -O -fstrength-reduce -fdelayed-branch 
GCC_OPTIMIZATION_FLAGS= -O

DEBUG_FLAGS=

#use this only if you like to look at lots of useless messages
#VERBOSITY_FLAGS= -v
VERBOSITY_FLAGS= -Wall -v

GXX_INCLUDE_DIRS= -I$(SRCIDIR)

GCC_INCLUDE_DIRS= -I$(prefix)/lib/gcc-include -I/usr/include -I$(SRCIDIR)
# Don't want pipe if using as
#PIPE_AS= -pipe

# Flags for all C++ compiles
GXXFLAGS = $(OSFLAG) $(GXX_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GXX_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)

# Flags for all C compiles
CFLAGS= $(OSFLAG) $(GCC_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GCC_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)

# g++ load time flags 
GXXLDFLAGS = -L/export/root/c++/libg++/src -lg++ -lm $(OSLDFLAG)


###########################################################################
#
# compilation actions
#


src/libg++.a:
	(cd src; $(MAKE) GXX="$(GXX)"  GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)" )

.PHONY: tests etc gperf clean

tests: src/libg++.a
	(cd tests;	$(MAKE) checktests GXX="$(GXX)"  GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)")

etc: 
	(cd etc;	$(MAKE) GXX="$(GXX)"  GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" MAKE="$(MAKE)" prefix="$(prefix)")

gperf:
	(cd gperf;	$(MAKE) GXX="$(GXX)"  GXXFLAGS="$(GXXFLAGS)" GXXLDFLAGS="$(GXXLDFLAGS)" LIBDIR="$(LIBDIR)" SRCIDIR="$(SRCIDIR)" CC="$(CC)" CFLAGS="$(CFLAGS)" RANLIB="$(RANLIB)" LDXX="$(LDXX)" GXXCRT1="$(GXXCRT1)" prefix="$(prefix)")

genclass: genclass.sh
	echo "/^PROTODIR=/c\\" > sedscript
	echo "PROTODIR=$(IDIR)" >> sedscript
	sed < genclass.sh > genclass -f sedscript
	chmod 0755 genclass
	rm -f sedscript


###########################################################################
#
# Installation
#


all: src/libg++.a install tests etc gperf

install:  install-libg++.a install-genclass install-include-files 

install-libg++.a: src/libg++.a
	(cd src; $(INSTALL) libg++.a $(LIBDIR))
	$(RANLIB) $(LIBDIR)/libg++.a

install-genclass: genclass
	$(INSTALL) genclass $(BINDIR)

install-include-files:
	-mkdir $(IDIR)
	-mkdir $(IDIR)/sys
	-cd $(SRCIDIR); \
	FILES=`find . -type f -print`; \
	cd $(IDIR); \
	rm -fr $$FILES; \
	rm -f Stack.ccP Queue.ccP Deque.ccP; \
	cd $(SRCIDIR); \
	FILES=`find . -type f -print`; \
	for file in $$FILES; do \
		rm -f $(IDIR)/$$file; \
		cp $$file $(IDIR)/$$file; \
		chmod 0444 $(IDIR)/$$file; \
		echo $$file installed; \
	done

###########################################################################
#
# Destructors
#

clean:
	(cd src; $(MAKE) clean)
	(cd tests; $(MAKE) clean)
	(cd etc; $(MAKE) clean)
	(cd gperf; $(MAKE) realclean)
	-rm -f genclass libg++.info* libg++.?? libg++.??s libg++.log libg++.toc libg++.*aux
	-rm -f *.orig src/*.orig tests/*.orig etc/*.orig g++-include/*.orig g++-include/sys/*.orig
	-rm -f *~ src/*~ tests/*~ etc/*~ g++-include/*~ g++-include/sys/*~
	-rm -f a.out src/a.out tests/a.out etc/a.out 
	-rm -f *.s src/*.s tests/*.s etc/*.s 



###########################################################################
#
# Some helpful things for folks on Suns, from Ron Guilmette
# NOTE: these do not refer to libg++, but might be helpful in configuration
# with MCC/ESKIT systems

SUN_INCLUDE_SUBDIRS=\
	arpa \
	pixrect \
	rpcsvc \
	sun \
	sundev \
	suntool \
	sunwindow \
	sys

# WARNING! If you add sys/time.h to the list below, it will mess up the generation
# of the sun-incl-patches file (see below).

SUN_INCLUDE_FILES=\
	netdb.h \
	signal.h \
	strings.h \
	time.h \
	arpa/inet.h \
	pixrect/memvar.h \
	pixrect/pixfont.h \
	pixrect/pixrect.h \
	pixrect/pixrect_hs.h \
	pixrect/traprop.h \
	rpcsvc/rstat.h \
	sun/fbio.h \
	sundev/kbio.h \
	sundev/msio.h \
	sundev/vuid_event.h \
	suntool/canvas.h \
	suntool/icon.h \
	suntool/icon_load.h \
	suntool/panel.h \
	suntool/scrollbar.h \
	suntool/sunview.h \
	suntool/walkmenu.h \
	suntool/window.h \
	suntool/wmgr.h \
	sunwindow/attr.h \
	sunwindow/notify.h \
	sunwindow/pixwin.h \
	sunwindow/win_cursor.h \
	sys/dir.h \
	sys/fcntl.h \
	sys/ioctl.h \
	sys/stat.h \
	sys/vfs.h \
	sys/wait.h \
	sys/resource.h \
	sys/ttychars.h \
	sys/types.h \
	sys/param.h

sun-include-files:
	cd g++-include; \
	rm -fr $(SUN_INCLUDE_SUBDIRS); \
	mkdir $(SUN_INCLUDE_SUBDIRS); \
	for file in $(SUN_INCLUDE_FILES); do \
		cp /usr/include/$$file ./$$file; \
	done; \
	sh -x ../sun-incl-patches

# Note that there is a problem if you use "diff -re".  The problem is that if
# there are sundirectories, the shell script which is produced fails to have
# the whole (relative) pathname of the files to be edited in the "ed - "
# command lines.  Thus, we have to edit the patches file to put these full
# relative pathnames in.  This is done automagically below.

sun-incl-patches:
	-rm -fr sun-include
	-mkdir sun-include
	cd sun-include; \
	for DIR in $(SUN_INCLUDE_SUBDIRS); do \
		mkdir $$DIR; \
	done
	for FILE in $(SUN_INCLUDE_FILES); do \
		ln g++-include/$$FILE sun-include/$$FILE; \
	done
	-rm -f /tmp/sun-incl-patches /tmp/patches-patches ./sun-incl-patches
	-cd sun-include; \
	diff -re /usr/include . > /tmp/sun-incl-patches
	-rm -fr sun-include
	touch /tmp/patches-patches
	for PATH in $(SUN_INCLUDE_FILES); do \
		BASE=`/usr/bin/basename $$PATH`; \
		echo 's%^ed - '$$BASE'%ed - '$$PATH'%' >> /tmp/patches-patches; \
	done
	sed -f /tmp/patches-patches /tmp/sun-incl-patches > ./sun-incl-patches
	-rm -f /tmp/sun-incl-patches /tmp/patches-patches

	**********************************************************************

Here's Makefile from libg++/src I might have changed a little.

# Makefile for libg++.a

# Copyright (C) 1988 Free Software Foundation
#   written by Doug Lea (dl@rocky.oswego.edu)

# This file is part of GNU CC.

# GNU CC is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY.  No author or distributor
# accepts responsibility to anyone for the consequences of using it
# or for whether it serves any particular purpose or works at all,
# unless he says so in writing.  Refer to the GNU CC General Public
# License for full details.

# Everyone is granted permission to copy, modify and redistribute
# GNU CC, but only under the conditions described in the
# GNU CC General Public License.   A copy of this license is
# supposed to have been given to you along with GNU CC so you
# can know your rights and responsibilities.  It should be in a
# file named COPYING.  Among other things, the copyright notice
# and this notice must be preserved on all copies.

# make parameters -- these should normally be inherited from parent make

# ------ source locations

# source directory for libg++.a
SRCDIR = ../src

# source include directory 
SRCIDIR= ../g++-include

# ------ installation destinations
# ------ You will require write-permission on the destination directories
# ------ in order to `make install'


prefix =/export/root/c++

# libg++.a destination
LIBDIR = $(prefix)/lib

# executables directory: location to install the genclass class generator
BINDIR = $(prefix)/bin

# location to install include file directory
IDIR = $(prefix)/lib/g++-include


# ------- System-dependent defines
# ------- use the second form of each for SystemV (USG)

# g++ flags
OSFLAG=
#OSFLAG = -DUSG
# use this only if you have a strange stdio implementation
#OSFLAG = -DDEFAULT_filebuf

# ld or ld++ flags
OSLDFLAG =
#OSLDFLAG= -lPW

# how to install
INSTALL=install -c
#INSTALL=cp

# ranlib if necessary
RANLIB=ranlib
#RANLIB=echo

# which make?
MAKE=make

# not used, but convenient for those who preprocess things while compiling
SHELL=/bin/sh


# ------ compiler names

# GNU C++ compiler name
GXX = /export/root/c++/bin/g++
#GXX=gcc

# GNU CC compiler name (needed for some .c files in libg++.a)
CC = /export/root/c++/bin/gcc

# GNU loader
LDXX = $(LIBDIR)/gcc-ld++

# crt0+.o location (for dynamic loading tests)
GXXCRT1=$(LIBDIR)/crt1+.o

# ------ Other compilation flags
# ------ modify as you like -- the ones here are sheer overkill

#GXX_OPTIMIZATION_FLAGS= -O -fstrength-reduce  -felide-constructors -fschedule-insns -fdelayed-branch  -fsave-memoized 
GXX_OPTIMIZATION_FLAGS= -O

#GCC_OPTIMIZATION_FLAGS= -O -fstrength-reduce -fdelayed-branch 
GCC_OPTIMIZATION_FLAGS= -O

DEBUG_FLAGS=

#use this only if you like to look at lots of useless messages
VERBOSITY_FLAGS= -Wall -v

GXX_INCLUDE_DIRS= -I$(SRCIDIR)

GCC_INCLUDE_DIRS= -I$(prefix)/lib/gcc-include -I/usr/include -I$(SRCIDIR)

# Don't want pipe when using as
#PIPE_AS= -pipe

# Flags for all C++ compiles
GXXFLAGS = $(OSFLAG) $(GXX_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GXX_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)

# Flags for all C compiles
CFLAGS= $(OSFLAG) $(GCC_INCLUDE_DIRS) $(DEBUG_FLAGS) $(GCC_OPTIMIZATION_FLAGS) $(VERBOSITY_FLAGS) $(PIPE_AS)

# g++ load time flags 
GXXLDFLAGS = -L$(SRCDIR) -lg++ -lm $(OSLDFLAG)

# these flags tell test0 where ld++ and crt1+.o are
TFLAGS = -DLDXX=\"$(LDXX)\" -DCRT1X=\"$(GXXCRT1)\"

# g++ files should have extension .cc
.SUFFIXES: .cc
.cc.o:
	$(GXX) $(GXXFLAGS) -c  $<

###########################################################################
# 
# declarations from here on should not normally need to be changed 
# in order to compile libg++.a
#

# library sources 
SRCS = AllocQueue.cc builtin.cc  File.cc \
 stream.cc streambuf.cc PlotFile.cc SFile.cc \
 Obstack.cc regex.cc String.cc Integer.cc Rational.cc Complex.cc \
 BitSet.cc BitString.cc Random.cc RNG.cc ACG.cc MLCG.cc Sample.cc \
 Fix.cc Fix16.cc Fix24.cc Curses.cc GetOpt.cc gnulib3.c EH.cc

OBJS = AllocQueue.o builtin.o File.o  stream.o streambuf.o \
 PlotFile.o  SFile.o \
 Obstack.o  regex.o String.o  Integer.o Rational.o Complex.o \
 BitSet.o BitString.o Random.o  RNG.o ACG.o MLCG.o Sample.o \
 Fix.o Fix16.o Fix24.o Curses.o GetOpt.o gnulib3.o EH.o

###########################################################################
#
# compilation actions
#

all: libg++.a

libg++.a: $(OBJS)
	ar r libg++.a $(OBJS)
	$(RANLIB) libg++.a

clean:
	rm -f *.o core libg++.a C++.hack*


###########################################################################
#
#  dependencies
#

regex.o: $(SRCIDIR)/regex.h
File.o:    $(SRCIDIR)/File.h $(SRCIDIR)/std.h $(SRCIDIR)/stddef.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h
stream.o: $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h $(SRCIDIR)/streambuf.h
streambuf.o:  $(SRCIDIR)/File.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h $(SRCIDIR)/streambuf.h
PlotFile.o: $(SRCIDIR)/PlotFile.h $(SRCIDIR)/File.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h
SFile.o: $(SRCIDIR)/SFile.h $(SRCIDIR)/File.h $(SRCIDIR)/std.h $(SRCIDIR)/stddef.h $(SRCIDIR)/stdio.h $(SRCIDIR)/builtin.h
Obstack.o: $(SRCIDIR)/Obstack.h $(SRCIDIR)/builtin.h
String.o: $(SRCIDIR)/String.h $(SRCIDIR)/stream.h $(SRCIDIR)/regex.h $(SRCIDIR)/std.h $(SRCIDIR)/builtin.h $(SRCIDIR)/File.h
Integer.o: $(SRCIDIR)/Integer.h $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/builtin.h
Rational.o: $(SRCIDIR)/Rational.h $(SRCIDIR)/Integer.h $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/builtin.h
Complex.o: $(SRCIDIR)/Complex.h $(SRCIDIR)/stream.h $(SRCIDIR)/File.h $(SRCIDIR)/builtin.h
BitSet.o: $(SRCIDIR)/BitSet.h $(SRCIDIR)/stream.h $(SRCIDIR)/builtin.h $(SRCIDIR)/File.h
BitString.o: $(SRCIDIR)/BitString.h $(SRCIDIR)/stream.h $(SRCIDIR)/builtin.h $(SRCIDIR)/File.h
AllocQueue.o: $(SRCIDIR)/AllocQueue.h
builtin.o: $(SRCIDIR)/builtin.h $(SRCIDIR)/math.h $(SRCIDIR)/AllocQueue.h
RNG.o: $(SRCIDIR)/assert.h $(SRCIDIR)/RNG.h
MLCG.o: $(SRCIDIR)/RNG.h $(SRCIDIR)/MLCG.h
ACG.o: $(SRCIDIR)/assert.h $(SRCIDIR)/RNG.h $(SRCIDIR)/ACG.h
Random.o: $(SRCIDIR)/Random.h $(SRCIDIR)/RNG.h \
 $(SRCIDIR)/Binomial.h  $(SRCIDIR)/Erlang.h $(SRCIDIR)/Geometric.h \
 $(SRCIDIR)/HyperGeometric.h $(SRCIDIR)/NegativeExpntl.h  $(SRCIDIR)/Normal.h \
 $(SRCIDIR)/LogNormal.h $(SRCIDIR)/Poisson.h $(SRCIDIR)/DiscreteUniform.h \
 $(SRCIDIR)/Uniform.h  $(SRCIDIR)/Weibull.h 
Sample.o: $(SRCIDIR)/SampleStatistic.h  $(SRCIDIR)/SampleHistogram.h $(SRCIDIR)/File.h
Fix.cc: $(SRCIDIR)/Fix.h $(SRCIDIR)/File.h 
Fix16.cc: $(SRCIDIR)/Fix16.h $(SRCIDIR)/File.h 
Fix24.cc: $(SRCIDIR)/Fix24.h $(SRCIDIR)/File.h 
Curses.o: $(SRCIDIR)/curses.h $(SRCIDIR)/CursesWindow.h
GetOpt.o: $(SRCIDIR)/std.h $(SRCIDIR)/GetOpt.h

============ Listing of BitString.cc ============ 	PAGE 1


    1 /* 
    2 Copyright (C) 1988 Free Software Foundation
    3     written by Doug Lea (dl@rocky.oswego.edu)
    4 
    5 This file is part of GNU CC.
    6 
    7 GNU CC is distributed in the hope that it will be useful,
    8 but WITHOUT ANY WARRANTY.  No author or distributor
    9 accepts responsibility to anyone for the consequences of using it
   10 or for whether it serves any particular purpose or works at all,
   11 unless he says so in writing.  Refer to the GNU CC General Public
   12 License for full details.
   13 
   14 Everyone is granted permission to copy, modify and redistribute
   15 GNU CC, but only under the conditions described in the
   16 GNU CC General Public License.   A copy of this license is
   17 supposed to have been given to you along with GNU CC so you
   18 can know your rights and responsibilities.  It should be in a
   19 file named COPYING.  Among other things, the copyright notice
   20 and this notice must be preserved on all copies.  
   21 */
   22 
   23 /* 
   24   BitString class implementation
   25  */
   26 
   27 #include <BitString.h>
   28 #include <std.h>
   29 #include <values.h>
   30 #include <Obstack.h>
   31 #include <AllocQueue.h>
   32 
   33 void BitString::error(char* msg)
   34 {
   35   (*lib_error_handler)("BitString", msg);
   36 }
   37 
   38 //  globals
   39 
   40 BitStrRep    _nilBitStrRep = {  0, 1, {0} };
   41 
   42 static BitString _nil_BitString;
   43 
   44 
   45 #define MINBitStrRep_SIZE  8
   46 #define MAXBitStrRep_SIZE  (1 << (SHORTBITS - 1) - 1)
   47 #define MALLOC_OVERHEAD    4
   48 
   49 #define ONES  ((unsigned short)(~0L))
   50 #define MAXBIT  (1 << (BITSTRBITS - 1))
   51 
   52 /*
   53  *  bit manipulation utilities
   54 */
   55 
============ Listing of BitString.cc ============	PAGE 2

   56 // break things up into .s indices and positions
   57 
   58 inline static int BitStr_len(int l)
   59 {
   60   return (unsigned)(l) / BITSTRBITS + 1;
   61 }
   62 
   63 
   64 // mask out low bits
   65 
   66 static inline unsigned short lmask(int p)
   67 {
   68   if (p <= 0)
   69     return ONES;
   70   else
   71     return ONES << p;
   72 }
   73 
   74 // mask out high bits
   75 
   76 static inline unsigned short rmask(int p)
   77 {
   78   int s = BITSTRBITS - 1 - p;
   79   if (s <= 0)
   80     return ONES;
   81   else
   82     return ONES >> s;
   83 }
   84 
   85 
   86 // mask out unused bits in last word of rep
   87 
   88 inline static void check_last(BitStrRep* r)
   89 {
   90   r->s[r->len / BITSTRBITS] &= ONES >> (BITSTRBITS - (r->len & (BITSTRBITS - 1)));
   91 }
   92 
   93 // merge bits from next word
   94 
   95 static inline unsigned short borrow_hi(unsigned short a[], int ind, 
   96                                       int maxind, int p)
   97 {
   98   if (ind < maxind)
   99     return (a[ind] >> p) | (a[ind+1] << (BITSTRBITS - p));
  100   else
  101     return (a[ind] >> p);
  102 }
  103 
  104 // merge bits from prev word
  105 
  106 static inline unsigned short borrow_lo(unsigned short a[], int ind, 
  107                                       int minind, int p)
  108 {
  109   if (ind > minind)
  110     return (a[ind] << (BITSTRBITS - 1 - p)) | (a[ind-1] >> (p + 1));
============ Listing of BitString.cc ============	PAGE 3

  111   else
  112     return (a[ind] << (BITSTRBITS - 1 - p));
  113 }
  114 
  115 // same with bounds check (for masks shorter than patterns)
  116 
  117 static inline unsigned short safe_borrow_hi(unsigned short a[], int ind, 
  118                                            int maxind, int p)
  119 {
  120   if (ind > maxind)
  121     return 0;
  122   else if (ind == maxind)
  123     return(a[ind] >> p);
  124   else
  125     return (a[ind] >> p) | (a[ind+1] << (BITSTRBITS - p));
  126 }
  127 
  128 
  129 static inline unsigned short safe_borrow_lo(unsigned short a[], int ind, 
  130                                       int minind, int p)
  131 {
  132   if (ind < minind)
  133     return 0;
  134   else if (ind == minind)
  135     return (a[ind] << (BITSTRBITS - 1 - p));
  136   else
  137     return (a[ind] << (BITSTRBITS - 1 - p)) | (a[ind-1] >> (p + 1));
  138 }
  139 
  140 // copy bits from a word boundary
  141 
  142 static inline void bit_copy(unsigned short* ss, unsigned short* ds, int nbits)
  143 {
  144   if (ss != ds)
  145   {
  146     int n = (unsigned)(nbits) / BITSTRBITS;
  147     if (n > 0) bcopy((void*)ss, (void*)ds, n * sizeof(short));
  148     unsigned short m = ONES << (nbits & (BITSTRBITS - 1));
  149     ds[n] = (ss[n] & ~m) | (ds[n] & m);
  150   }
  151 }
  152 
  153 // clear bits from a word boundary
  154 
  155 static inline void bit_clear(unsigned short* ds, int nbits)
  156 {
  157   int n = (unsigned)(nbits) / BITSTRBITS;
  158   if (n > 0) bzero((void*)ds, n * sizeof(short));
  159   ds[n] &= ONES << (nbits & (BITSTRBITS - 1));
  160 }
  161 
  162   
  163 
  164 // copy ss from starts to fences-1 into ds starting at startd
  165 // this will work even if ss & ds are the same 
============ Listing of BitString.cc ============	PAGE 4

  166 // The g++ optimizer does very good things with the messy shift expressions!
  167 
  168 static void bit_transfer(unsigned short* ss, int starts, int fences,
  169                          unsigned short* ds, int startd)
  170 {
  171   if (starts >= fences || ss == 0 || (ss == ds && starts == startd))
  172     return;
  173 
  174   int sind = BitStr_index(starts);
  175   int spos = BitStr_pos(starts);
  176   int dind = BitStr_index(startd);
  177   int dpos = BitStr_pos(startd);
  178 
  179   if (spos == 0 && dpos == 0)
  180   {
  181     bit_copy(&ss[sind], &ds[dind], fences - starts);
  182     return;
  183   }
  184 
  185   int ends = fences - 1;
  186   int endsind = BitStr_index(ends);
  187   int endspos = BitStr_pos(ends);
  188   int endd = startd + (ends - starts);
  189   int enddind = BitStr_index(endd);
  190   int enddpos = BitStr_pos(endd);
  191 
  192   if (dind == enddind)
  193   {
  194     if (sind == endsind)
  195       ds[dind] = (ds[dind] & ((ONES >> (BITSTRBITS - dpos)) | 
  196                               (ONES << (enddpos + 1)))) | 
  197         (((ss[sind] >> spos) << dpos) & 
  198          ~((ONES >> (BITSTRBITS - dpos)) | (ONES << (enddpos + 1))));
  199     else
  200       ds[dind] = (ds[dind] & ((ONES >> (BITSTRBITS - dpos)) | 
  201                               (ONES << (enddpos + 1)))) | 
  202         ((((ss[sind] >> spos) | (ss[sind+1] << (BITSTRBITS - spos))) << dpos) & 
  203          ~((ONES >> (BITSTRBITS - dpos)) | (ONES << (enddpos + 1))));
  204     return;
  205   }
  206   else if (sind == endsind)
  207   {
  208     unsigned short saveend = (ds[enddind] & (ONES << (enddpos + 1))) | 
  209         (((ss[sind] << (BITSTRBITS - 1 - endspos)) >> 
  210           (BITSTRBITS - 1 - enddpos)) & ~(ONES << (enddpos + 1)));
  211     ds[dind] = (ds[dind] & (ONES >> (BITSTRBITS - dpos))) |
  212         (((ss[sind] >> spos) << dpos) & ~(ONES >> (BITSTRBITS - dpos)));
  213     ds[enddind] = saveend;
  214     return;
  215   }
  216 
  217   unsigned short saveend = (ds[enddind] & (ONES << (enddpos + 1))) | 
  218     ((((ss[endsind] << (BITSTRBITS - 1 - endspos)) |
  219        (ss[endsind-1] >> (endspos + 1))) >> 
  220       (BITSTRBITS - 1 - enddpos)) & ~(ONES << (enddpos + 1)));
============ Listing of BitString.cc ============	PAGE 5

  221   unsigned short savestart = (ds[dind] & (ONES >> (BITSTRBITS - dpos))) |
  222     ((((ss[sind] >> spos) | (ss[sind+1] << (BITSTRBITS - spos))) << dpos) 
  223      & ~(ONES >> (BITSTRBITS - dpos)));
  224 
  225 
  226   if (ds != ss || startd < starts)
  227   {
  228     int pos = spos - dpos;
  229     if (pos < 0)
  230       pos += BITSTRBITS;
  231     else
  232       ++sind;
  233     
  234     for (;;)                    // lag by one in case of overlaps
  235     {
  236       if (dind == enddind - 1)
  237       {
  238         ds[dind] = savestart;
  239         ds[enddind] = saveend;
  240         return;
  241       }
  242       else
  243       {
  244         unsigned short tmp = ss[sind] >> pos;
  245         if (++sind <= endsind) tmp |= ss[sind] << (BITSTRBITS - pos);
  246         ds[dind++] = savestart;
  247         savestart = tmp;
  248       }
  249     }
  250   }
  251   else
  252   {
  253     int pos = endspos - enddpos;
  254     if (pos <= 0)
  255     {
  256       pos += BITSTRBITS;
  257       --endsind;
  258     }
  259     for (;;)
  260     {
  261       if (enddind == dind + 1)
  262       {
  263         ds[enddind] = saveend;
  264         ds[dind] = savestart;
  265         return;
  266       }
  267       else
  268       {
  269         unsigned short tmp = ss[endsind] << (BITSTRBITS - pos);
  270         if (--endsind >= sind) tmp |= ss[endsind] >> pos;
  271         ds[enddind--] = saveend;
  272         saveend = tmp;
  273       }
  274     }
  275   }
============ Listing of BitString.cc ============	PAGE 6

  276 }
  277   
  278 
  279 inline static BitStrRep* BSnew(int newlen)
  280 {
  281   unsigned int siz = sizeof(BitStrRep) + BitStr_len(newlen) * sizeof(short) 
  282     + MALLOC_OVERHEAD;
  283   unsigned int allocsiz = MINBitStrRep_SIZE;;
  284   while (allocsiz < siz) allocsiz <<= 1;
  285   allocsiz -= MALLOC_OVERHEAD;
  286   if (allocsiz >= MAXBitStrRep_SIZE * sizeof(short))
  287     (*lib_error_handler)("BitString", "Requested length out of range");
  288     
  289   BitStrRep* rep = (BitStrRep *) new char[allocsiz];
  290   bzero(rep, allocsiz);
  291   rep->sz = (allocsiz - sizeof(BitStrRep) + sizeof(short)) / sizeof(short);
  292   return rep;
  293 }
  294 
  295 BitStrRep* BStr_alloc(BitStrRep* old, unsigned short* src,
  296                               int startpos, int endp, int newlen)
  297 {
  298   if (old == &_nilBitStrRep) old = 0; 
  299   if (newlen < 0) newlen = 0;
  300   int news = BitStr_len(newlen);
  301   BitStrRep* rep;
  302   if (old == 0 || news > old->sz)
  303     rep = BSnew(newlen);
  304   else
  305     rep = old;
  306   rep->len = newlen;
  307 
  308   if (src != 0 && endp > 0 && (src != rep->s || startpos > 0)) 
  309     bit_transfer(src, startpos, endp, rep->s, 0);
  310 
  311   check_last(rep);
  312 
  313   if (old != rep && old != 0) delete old;
  314 
  315   return rep;
  316 }
  317 
  318 BitStrRep* BStr_resize(BitStrRep* old, int newlen)
  319 {
  320   BitStrRep* rep;
  321   if (newlen < 0) newlen = 0;
  322   int news = BitStr_len(newlen);
  323   if (old == 0 || old == &_nilBitStrRep)
  324   {
  325     rep = BSnew(newlen);
  326   }
  327   else if (news > old->sz)
  328   {
  329     rep = BSnew(newlen);
  330     bcopy(old->s, rep->s, BitStr_len(old->len) * sizeof(short));
============ Listing of BitString.cc ============	PAGE 7

  331     delete old;
  332   }
  333   else
  334     rep = old;
  335 
  336   rep->len = newlen;
  337   check_last(rep);
  338   return rep;
  339 }
  340 
  341 BitStrRep* BStr_copy(BitStrRep* old, BitStrRep* src)
  342 {
  343   if (old == src) return old; 
  344   BitStrRep* rep;
  345   if (old == &_nilBitStrRep) old = 0;
  346   if (src == &_nilBitStrRep) src = 0;
  347   if (src == 0)
  348   {
  349     if (old == 0)
  350       rep = BSnew(0);
  351     else
  352       rep = old;
  353     rep->len = 0;
  354   }
  355   else 
  356   {
  357     int newlen = src->len;
  358     int news = BitStr_len(newlen);
  359     if (old == 0 || news  > old->sz)
  360     {
  361       rep = BSnew(newlen);
  362       if (old != 0) delete old;
  363     }
  364     else
  365       rep = old;
  366     
  367     bcopy(src->s, rep->s, news * sizeof(short));
  368     rep->len = newlen;
  369   }
  370   check_last(rep);
  371   return rep;
  372 }
  373 
  374 
  375 int operator == (BitString& x, BitString& y)
  376 {
  377   return x.rep->len == y.rep->len && 
  378     bcmp((void*)x.rep->s, (void*)y.rep->s, 
  379          BitStr_len(x.rep->len) * sizeof(short)) == 0;
  380 }
  381 
  382 int operator <= (BitString& x, BitString& y)
  383 {
  384   unsigned int  xl = x.rep->len;
  385   unsigned int  yl = y.rep->len;
============ Listing of BitString.cc ============	PAGE 8

  386   if (xl > yl)
  387     return 0;
  388 
  389   unsigned short* xs = x.rep->s;
  390   unsigned short* ys = y.rep->s;
  391   unsigned short* topx = &(xs[BitStr_len(xl)]);
  392 
  393   while (xs < topx)
  394   {
  395     unsigned short a = *xs++;
  396     unsigned short b = *ys++;
  397     if ((a | b) != b)
  398       return 0;
  399   }
  400   return 1;
  401 }
  402 
  403 int operator < (BitString& x, BitString& y)
  404 {
  405   unsigned short xl = x.rep->len;
  406   unsigned short yl = y.rep->len;
  407   if (xl > yl)
  408     return 0;
  409 
  410   unsigned short* xs = x.rep->s;
  411   unsigned short* ys = y.rep->s;
  412   unsigned short* topx = &(xs[BitStr_len(xl)]);
  413   unsigned short* topy = &(ys[BitStr_len(yl)]);
  414   int one_diff = 0;
  415   while (xs < topx)
  416   {
  417     unsigned short a = *xs++;
  418     unsigned short b = *ys++;
  419     unsigned short c = a | b;
  420     if (c != b)
  421       return 0;
  422     else if (c != a)
  423       one_diff = 1;
  424   }
  425   if (one_diff)
  426     return 1;
  427   else
  428   {
  429     while (ys < topy)
  430       if (*ys++ != 0)
  431         return 1;
  432     return 0;
  433   }
  434 }
  435 
  436 int lcompare(BitString& x, BitString& y)
  437 {
  438   unsigned int  xl = x.rep->len;
  439   unsigned int  yl = y.rep->len;
  440 
============ Listing of BitString.cc ============	PAGE 9

  441   unsigned short* xs = x.rep->s;
  442   unsigned short* topx = &(xs[BitStr_len(xl)]);
  443   unsigned short* ys = y.rep->s;
  444   unsigned short* topy = &(ys[BitStr_len(yl)]);
  445 
  446   while (xs < topx && ys < topy)
  447   {
  448     unsigned short a = *xs++;
  449     unsigned short b = *ys++;
  450     if (a != b)
  451     {
  452       unsigned short mask = 1;
  453       for (;;)
  454       {
  455         unsigned short abit = (a & mask) != 0;
  456         unsigned short bbit = (b & mask) != 0;
  457         int diff = abit - bbit;
  458         if (diff != 0)
  459           return diff;
  460         else
  461           mask <<= 1;
  462       }
  463     }
  464   }
  465   return xl - yl;
  466 }
  467 
  468 int BitString::count(int b = 1)
  469 {
  470   check_last(rep);
  471   int xwds = BitStr_len(rep->len);
  472   int xlast = BitStr_pos(rep->len);
  473   int l = 0;
  474   unsigned short* s = rep->s;
  475   unsigned short* tops = &(s[xwds - 1]);
  476   unsigned short a;
  477   int i;
  478   if (b != 0)
  479   {
  480     while (s < tops)
  481     {
  482       a = *s++;
  483       for (i = 0; i < BITSTRBITS && a != 0; ++i)
  484       {
  485         if (a & 1)
  486           ++l;
  487         a >>= 1;
  488       }
  489     }
  490     a = *s;
  491     for (i = 0; i < xlast && a != 0; ++i)
  492     {
  493       if (a & 1)
  494         ++l;
  495       a >>= 1;
============ Listing of BitString.cc ============	PAGE 10

  496     }
  497   }
  498   else
  499   {
  500     unsigned short maxbit = 1 << (BITSTRBITS - 1);
  501     while (s < tops)
  502     {
  503       a = *s++;
  504       for (i = 0; i < BITSTRBITS; ++i)
  505       {
  506         if ((a & maxbit) == 0)
  507           ++l;
  508         a <<= 1;
  509       }
  510     }
  511     maxbit = 1 << (xlast - 1);
  512     a = *s;
  513     for (i = 0; i < xlast; ++i)
  514     {
  515       if ((a & maxbit) == 0)
  516         ++l;
  517       a <<= 1;
  518     }
  519   }
  520   return l;
  521 }
  522 
  523 
  524 BitStrRep* cmpl(BitStrRep* src, BitStrRep* r)
  525 {
  526   r = BStr_copy(r, src);
  527   unsigned short* rs = r->s;
  528   unsigned short* topr = &(rs[BitStr_len(r->len)]);
  529   while (rs < topr)
  530   {
  531     unsigned short cmp = ~(*rs);
  532     *rs++ = cmp;
  533   }
  534   check_last(r);
  535   return r;
  536 }
  537 
  538 
  539 
  540 BitStrRep* and(BitStrRep* x, BitStrRep* y, BitStrRep* r)
  541 {
  542   int xrsame = x == r;
  543   int yrsame = y == r;
  544 
  545   unsigned int  rl = x->len <? y->len;
  546   r = BStr_resize(r, rl);
  547 
  548   unsigned short* rs = r->s;
  549   unsigned short* topr = &(rs[BitStr_len(rl)]);
  550   unsigned short* xs = (xrsame)? rs : x->s;
============ Listing of BitString.cc ============	PAGE 11

  551   unsigned short* ys = (yrsame)? rs : y->s;
  552 
  553   while (rs < topr) *rs++ = *xs++ & *ys++;
  554   check_last(r);
  555   return r;
  556 }
  557 
  558 BitStrRep* or(BitStrRep* x, BitStrRep* y, BitStrRep* r)
  559 {
  560   unsigned int  xl = x->len;
  561   unsigned int  yl = y->len;
  562   unsigned int  rl = xl >? yl;
  563   int xrsame = x == r;
  564   int yrsame = y == r;
  565 
  566   r = BStr_resize(r, rl);
  567 
  568   unsigned short* rs = r->s;
  569   unsigned short* xs = (xrsame)? rs : x->s;
  570   unsigned short* topx = &(xs[BitStr_len(xl)]);
  571   unsigned short* ys = (yrsame)? rs : y->s;
  572   unsigned short* topy = &(ys[BitStr_len(yl)]);
  573 
  574   if (xl <= yl)
  575   {
  576     while (xs < topx) *rs++ = *xs++ | *ys++;
  577     if (rs != ys) while (ys < topy) *rs++ = *ys++;
  578   }
  579   else
  580   {
  581     while (ys < topy) *rs++ = *xs++ | *ys++;
  582     if (rs != xs) while (xs < topx) *rs++ = *xs++;
  583   }
  584   check_last(r);
  585   return r;
  586 }
  587 
  588 
  589 BitStrRep* xor(BitStrRep* x, BitStrRep* y, BitStrRep* r)
  590 {
  591   unsigned int  xl = x->len;
  592   unsigned int  yl = y->len;
  593   unsigned int  rl = xl >? yl;
  594   int xrsame = x == r;
  595   int yrsame = y == r;
  596 
  597   r = BStr_resize(r, rl);
  598 
  599   unsigned short* rs = r->s;
  600   unsigned short* xs = (xrsame)? rs : x->s;
  601   unsigned short* topx = &(xs[BitStr_len(xl)]);
  602   unsigned short* ys = (yrsame)? rs : y->s;
  603   unsigned short* topy = &(ys[BitStr_len(yl)]);
  604 
  605   if (xl <= yl)
============ Listing of BitString.cc ============	PAGE 12

  606   {
  607     while (xs < topx) *rs++ = *xs++ ^ *ys++;
  608     if (rs != ys) while (ys < topy) *rs++ = *ys++;
  609   }
  610   else
  611   {
  612     while (ys < topy) *rs++ = *xs++ ^ *ys++;
  613     if (rs != xs) while (xs < topx) *rs++ = *xs++;
  614   }
  615   check_last(r);
  616   return r;
  617 }
  618 
  619 
  620 BitStrRep* difference(BitStrRep* x, BitStrRep* y, BitStrRep* r)
  621 {
  622   unsigned int  xl = x->len;
  623   unsigned int  yl = y->len;
  624   int xrsame = x == y;
  625   int yrsame = y == r;
  626 
  627   r = BStr_resize(r, xl);
  628 
  629   unsigned short* rs = r->s;
  630   unsigned short* xs = (xrsame)? rs : x->s;
  631   unsigned short* topx = &(xs[BitStr_len(xl)]);
  632   unsigned short* ys = (yrsame)? rs : y->s;
  633   unsigned short* topy = &(ys[BitStr_len(yl)]);
  634 
  635   if (xl <= yl)
  636   {
  637     while (xs < topx) *rs++ = *xs++ & ~(*ys++);
  638   }
  639   else
  640   {
  641     while (ys < topy) *rs++ = *xs++ & ~(*ys++);
  642     if (rs != xs) while (xs < topx) *rs++ = *xs++;
  643   }
  644   check_last(r);
  645   return r;
  646 }
  647 
  648 
  649 BitStrRep* concat(BitStrRep* x, BitStrRep* y, BitStrRep* r)
  650 {
  651   unsigned int  xl = x->len;
  652   unsigned int  yl = y->len;
  653   unsigned int  rl = xl + yl;
  654   int xrsame = x == r;
  655   int yrsame = y == r;
  656 
  657   if (yrsame)
  658   {
  659     if (xrsame)
  660     {
============ Listing of BitString.cc ============	PAGE 13

  661       r = BStr_resize(r, rl);
  662       bit_transfer(r->s, 0, yl, r->s, xl);
  663     }
  664     else
  665     {
  666       BitStrRep* tmp = BStr_copy(0, y);
  667       r = BStr_resize(r, rl);
  668       bit_copy(x->s, r->s, xl);
  669       bit_transfer(tmp->s, 0, yl, r->s, xl);
  670       delete tmp;
  671     }
  672   }
  673   else
  674   {
  675     r = BStr_resize(r, rl);
  676     if (!xrsame) bit_copy(x->s, r->s, xl);
  677     bit_transfer(y->s, 0, yl, r->s, xl);
  678   }
  679   check_last(r);
  680   return r;
  681 }
  682 
  683 BitStrRep* concat(BitStrRep* x, int bit, BitStrRep* r)
  684 {
  685   unsigned int  xl = x->len;
  686   int xrsame = x == r;
  687   r = BStr_resize(r, xl+1);
  688   if (!xrsame) bit_copy(x->s, r->s, xl);
  689   if (bit)
  690     r->s[BitStr_index(xl)] |= (1 << (BitStr_pos(xl)));
  691   else
  692     r->s[BitStr_index(xl)] &= ~(1 << (BitStr_pos(xl)));
  693   check_last(r);
  694   return r;
  695 }
  696 
  697 BitStrRep* rshift(BitStrRep* x, int s, BitStrRep* r)
  698 {
  699   int xrsame = x == r;
  700   int  xl = x->len;
  701   int  rl = xl + s;
  702   if (s == 0)
  703     r = BStr_copy(r, x);
  704   else if (rl <= 0)
  705   {
  706     r = BStr_resize(r, 0);
  707     r->len = 0;
  708     r->s[0] = 0;
  709   }
  710   else if (s > 0)
  711   {
  712     r = BStr_resize(r, rl);
  713     unsigned short* xs = (xrsame)? r->s : x->s;
  714     bit_transfer(xs, 0, xl, r->s, s);
  715     bit_clear(r->s, s);
============ Listing of BitString.cc ============	PAGE 14

  716   }
  717   else if (xrsame)
  718   {
  719     r = BStr_resize(r, xl);
  720     r->len = rl;
  721     bit_transfer(r->s, -s, xl, r->s, 0);
  722   }
  723   else
  724   {
  725     r = BStr_resize(r, rl);
  726     bit_transfer(x->s, -s, xl, r->s, 0);
  727   }
  728   check_last(r);
  729   return r;
  730 }
  731 
  732 
  733 void BitString::set(int p)
  734 {
  735   if (p < 0) error("Illegal bit index");
  736   if (p >= rep->len) rep = BStr_resize(rep, p + 1);
  737   rep->s[BitStr_index(p)] |= (1 << (BitStr_pos(p)));
  738 }
  739 
  740 void BitString::assign(int p, int bit)
  741 {
  742   if (p < 0) error("Illegal bit index");
  743   if (p >= rep->len) rep = BStr_resize(rep, p + 1);
  744   if (bit)
  745     rep->s[BitStr_index(p)] |= (1 << (BitStr_pos(p)));
  746   else
  747     rep->s[BitStr_index(p)] &= ~(1 << (BitStr_pos(p)));
  748 }
  749 
  750 void BitString::clear(int p)
  751 {
  752   if (p < 0) error("Illegal bit index");
  753   if (p >= rep->len) rep = BStr_resize(rep, p + 1);
  754   rep->s[BitStr_index(p)] &= ~(1 << (BitStr_pos(p)));
  755 }
  756 
  757 void BitString::clear()
  758 {
  759   if (rep == &_nilBitStrRep) return;
  760   bit_clear(rep->s, rep->len);
  761 }
  762 
  763 void BitString::set()
  764 {
  765   if (rep == &_nilBitStrRep) return;
  766   unsigned short* s = rep->s;
  767   unsigned short* tops = &(s[BitStr_len(rep->len)]);
  768   while (s < tops) *s++ = ONES;
  769   check_last(rep);
  770 }
============ Listing of BitString.cc ============	PAGE 15

  771 
  772 void BitString::invert(int p)
  773 {
  774   if (p < 0) error("Illegal bit index");
  775   if (p >= rep->len) rep = BStr_resize(rep, p + 1);
  776   rep->s[BitStr_index(p)] ^= (1 << (BitStr_pos(p)));
  777 }
  778 
  779 
  780 
  781 void BitString::set(int from, int to)
  782 {
  783   if (from < 0 || from > to) error("Illegal bit index");
  784   if (to >= rep->len) rep = BStr_resize(rep, to+1);
  785 
  786   int ind1 = BitStr_index(from);
  787   int pos1 = BitStr_pos(from);
  788   int ind2 = BitStr_index(to);
  789   int pos2 = BitStr_pos(to);
  790   unsigned short* s = &(rep->s[ind1]);
  791   unsigned short m1 = lmask(pos1);
  792   unsigned short m2 = rmask(pos2);
  793   if (ind2 == ind1)
  794     *s |= m1 & m2;
  795   else
  796   {
  797     *s++ |= m1;
  798     unsigned short* top = &(rep->s[ind2]);
  799     *top |= m2;
  800     while (s < top)
  801       *s++ = ONES;
  802   }
  803 }
  804 
  805 void BitString::clear(int from, int to)
  806 {
  807   if (from < 0 || from > to) error("Illegal bit index");
  808   if (to >= rep->len) rep = BStr_resize(rep, to+1);
  809 
  810   int ind1 = BitStr_index(from);
  811   int pos1 = BitStr_pos(from);
  812   int ind2 = BitStr_index(to);
  813   int pos2 = BitStr_pos(to);
  814   unsigned short* s = &(rep->s[ind1]);
  815   unsigned short m1 = lmask(pos1);
  816   unsigned short m2 = rmask(pos2);
  817   if (ind2 == ind1)
  818     *s &= ~(m1 & m2);
  819   else
  820   {
  821     *s++ &= ~m1;
  822     unsigned short* top = &(rep->s[ind2]);
  823     *top &= ~m2;
  824     while (s < top)
  825       *s++ = 0;
============ Listing of BitString.cc ============	PAGE 16

  826   }
  827 }
  828 
  829 void BitString::invert(int from, int to)
  830 {
  831   if (from < 0 || from > to) error("Illegal bit index");
  832   if (to >= rep->len) rep = BStr_resize(rep, to+1);
  833 
  834   int ind1 = BitStr_index(from);
  835   int pos1 = BitStr_pos(from);
  836   int ind2 = BitStr_index(to);
  837   int pos2 = BitStr_pos(to);
  838   unsigned short* s = &(rep->s[ind1]);
  839   unsigned short m1 = lmask(pos1);
  840   unsigned short m2 = rmask(pos2);
  841   if (ind2 == ind1)
  842     *s ^= m1 & m2;
  843   else
  844   {
  845     *s++ ^= m1;
  846     unsigned short* top = &(rep->s[ind2]);
  847     *top ^= m2;
  848     while (s < top)
  849     {
  850       unsigned short cmp = ~(*s);
  851       *s++ = cmp;
  852     }
  853   }
  854 }
  855 
  856 
  857 int BitString::test(int from, int to)
  858 {
  859   if (from < 0 || from > to || from >= rep->len) return 0;
  860 
  861   int ind1 = BitStr_index(from);
  862   int pos1 = BitStr_pos(from);
  863   int ind2 = BitStr_index(to);
  864   int pos2 = BitStr_pos(to);
  865 
  866   if (to >= rep->len)
  867   {
  868     ind2 = BitStr_index(rep->len - 1);
  869     pos2 = BitStr_pos(rep->len - 1);
  870   }
  871 
  872   unsigned short* s = &(rep->s[ind1]);
  873   unsigned short m1 = lmask(pos1);
  874   unsigned short m2 = rmask(pos2);
  875 
  876   if (ind2 == ind1)
  877     return (*s & m1 & m2) != 0;
  878   else
  879   {
  880     if (*s++ & m1)
============ Listing of BitString.cc ============	PAGE 17

  881       return 1;
  882     unsigned short* top = &(rep->s[ind2]);
  883     if (*top & m2)
  884       return 1;
  885     while (s < top)
  886       if (*s++ != 0) 
  887         return 1;
  888     return 0;
  889   }
  890 }
  891 
  892 int BitString::next(int p, int b = 1)
  893 {
  894   if (++p >= rep->len)
  895     return -1;
  896 
  897   int ind = BitStr_index(p);
  898   int pos = BitStr_pos(p);
  899   int l = BitStr_len(rep->len);
  900 
  901   int j = ind;
  902   unsigned short* s = rep->s;
  903   unsigned short a = s[j] >> pos;
  904   int i = pos;
  905 
  906   if (b != 0)
  907   {
  908     for (; i < BITSTRBITS && a != 0; ++i)
  909     {
  910       if (a & 1)
  911         return j * BITSTRBITS + i;
  912       a >>= 1;
  913     }
  914     for (++j; j < l; ++j)
  915     {
  916       a = s[j];
  917       for (i = 0; i < BITSTRBITS && a != 0; ++i)
  918       {
  919         if (a & 1)
  920           return j * BITSTRBITS + i;
  921         a >>= 1;
  922       }
  923     }
  924     return -1;
  925   }
  926   else
  927   {
  928     int last = BitStr_pos(rep->len);
  929     if (j == l - 1)
  930     {
  931       for (; i < last; ++i)
  932       {
  933         if ((a & 1) == 0)
  934           return j * BITSTRBITS + i;
  935         a >>= 1;
============ Listing of BitString.cc ============	PAGE 18

  936       }
  937       return -1;
  938     }
  939 
  940     for (; i < BITSTRBITS; ++i)
  941     {
  942       if ((a & 1) == 0)
  943         return j * BITSTRBITS + i;
  944       a >>= 1;
  945     }
  946     for (++j; j < l - 1; ++j)
  947     {
  948       a = s[j];
  949       if (a != ONES)
  950       {
  951         for (i = 0; i < BITSTRBITS; ++i)
  952         {
  953           if ((a & 1) == 0)
  954             return j * BITSTRBITS + i;
  955           a >>= 1;
  956         }
  957       }
  958     }
  959     a = s[j];
  960     for (i = 0; i < last; ++i)
  961     {
  962       if ((a & 1) == 0)
  963         return j * BITSTRBITS + i;
  964       a >>= 1;
  965     }
  966     return -1;
  967   }
  968 }
  969 
  970 int BitString::previous(int p, int b = 1)
  971 {
  972   if (--p < 0)
  973     return -1;
  974 
  975   int ind = BitStr_index(p);
  976   int pos = BitStr_pos(p);
  977 
  978   unsigned short* s = rep->s;
  979 
  980   if (p >= rep->len)
  981   {
  982     ind = BitStr_index(rep->len - 1);
  983     pos = BitStr_pos(rep->len - 1);
  984   }
  985 
  986   int j = ind;
  987   unsigned short a = s[j];
  988 
  989   int i = pos;
  990   unsigned short maxbit = 1 << pos;
============ Listing of BitString.cc ============	PAGE 19

  991 
  992   if (b != 0)
  993   {
  994     for (; i >= 0 && a != 0; --i)
  995     {
  996       if (a & maxbit)
  997         return j * BITSTRBITS + i;
  998       a <<= 1;
  999     }
 1000     maxbit = 1 << (BITSTRBITS - 1);
 1001     for (--j; j >= 0; --j)
 1002     {
 1003       a = s[j];
 1004       for (i = BITSTRBITS - 1; i >= 0 && a != 0; --i)
 1005       {
 1006         if (a & maxbit)
 1007           return j * BITSTRBITS + i;
 1008         a <<= 1;
 1009       }
 1010     }
 1011     return -1;
 1012   }
 1013   else
 1014   {
 1015     if (a != ONES)
 1016     {
 1017       for (; i >= 0; --i)
 1018       {
 1019         if ((a & maxbit) == 0)
 1020           return j * BITSTRBITS + i;
 1021         a <<= 1;
 1022       }
 1023     }
 1024     maxbit = 1 << (BITSTRBITS - 1);
 1025     for (--j; j >= 0; --j)
 1026     {
 1027       a = s[j];
 1028       if (a != ONES)
 1029       {
 1030         for (i = BITSTRBITS - 1; i >= 0; --i)
 1031         {
 1032           if ((a & maxbit) == 0)
 1033             return j * BITSTRBITS + i;
 1034           a <<= 1;
 1035         }
 1036       }
 1037     }
 1038     return -1;
 1039   }
 1040 }
 1041 
 1042 
 1043 int BitString::search(int startx, int lengthx, 
 1044                       unsigned short* ys, int starty, int lengthy)
 1045 {
============ Listing of BitString.cc ============	PAGE 20

 1046   unsigned short* xs = rep->s;
 1047   int ylen = lengthy - starty;
 1048   int righty = lengthy - 1;
 1049   int rev = startx < 0;
 1050   if (rev)
 1051   {
 1052     int leftx = 0;
 1053     int rightx = lengthx + startx;
 1054     startx = rightx - ylen + 1;
 1055     if (ylen == 0) return startx;
 1056     if (starty < 0 || righty < 0 || startx < 0 || startx >= lengthx) return -1;
 1057     
 1058     int xind = BitStr_index(startx);
 1059     int xpos = BitStr_pos(startx);
 1060     int yind = BitStr_index(starty);
 1061     int ypos = BitStr_pos(starty);
 1062     
 1063     int rightxind = BitStr_index(rightx);
 1064 
 1065     unsigned short x = borrow_hi(xs, xind, rightxind, xpos);
 1066   
 1067     int rightyind = BitStr_index(righty);
 1068     int rightypos = BitStr_pos(righty);
 1069     unsigned short y = borrow_hi(ys, yind, rightyind, ypos);
 1070     unsigned short ymask;
 1071     if (yind == rightyind)
 1072       ymask = rmask(rightypos);
 1073     else if (yind+1 == rightyind)
 1074       ymask = rmask(BITSTRBITS - ypos + rightypos + 1);
 1075     else
 1076       ymask = ONES;
 1077     
 1078     int p = startx;
 1079     for (;;)
 1080     {
 1081       if ((x & ymask) == y)
 1082       {
 1083         int xi = xind;
 1084         int yi = yind;
 1085         for (;;)
 1086         {
 1087           if (++yi > rightyind || ++xi > rightxind)
 1088             return p;
 1089           unsigned short tx = borrow_hi(xs, xi, rightxind, xpos);
 1090           unsigned short ty = borrow_hi(ys, yi, rightyind, ypos);
 1091           if (yi == rightyind)
 1092             tx &= rmask(rightypos);
 1093           else if (yi+1 == rightyind)
 1094             tx &= rmask(BITSTRBITS - ypos + rightypos + 1);
 1095           if (tx != ty)
 1096             break;
 1097         }
 1098       }
 1099       if (--p < leftx)
 1100         return -1;
============ Listing of BitString.cc ============	PAGE 21

 1101       if (--xpos < 0)
 1102       {
 1103         xpos = BITSTRBITS - 1;
 1104         --xind;
 1105       }
 1106       x = borrow_hi(xs, xind, rightxind, xpos);
 1107     }
 1108   }
 1109   else
 1110   {
 1111 
 1112     int rightx = lengthx - 1;
 1113     if (ylen == 0) return startx;
 1114     if (starty < 0 || righty < 0 || startx < 0 || startx >= lengthx) return -1;
 1115     
 1116     int xind = BitStr_index(startx);
 1117     int xpos = BitStr_pos(startx);
 1118     int yind = BitStr_index(starty);
 1119     int ypos = BitStr_pos(starty);
 1120 
 1121     int rightxind = BitStr_index(rightx);
 1122 
 1123     unsigned short x = borrow_hi(xs, xind, rightxind, xpos);
 1124     unsigned short nextx = (xind >= rightxind) ? 0 : (xs[xind+1] >> xpos);
 1125   
 1126     int rightyind = BitStr_index(righty);
 1127     int rightypos = BitStr_pos(righty);
 1128     unsigned short y = borrow_hi(ys, yind, rightyind, ypos);
 1129     unsigned short ymask;
 1130     if (yind == rightyind)
 1131       ymask = rmask(rightypos);
 1132     else if (yind+1 == rightyind)
 1133       ymask = rmask(BITSTRBITS - ypos + rightypos + 1);
 1134     else
 1135       ymask = ONES;
 1136   
 1137     int p = startx;
 1138     for (;;)
 1139     {
 1140       if ((x & ymask) == y)
 1141       {
 1142         int xi = xind;
 1143         int yi = yind;
 1144         for (;;)
 1145         {
 1146           if (++yi > rightyind || ++xi > rightxind)
 1147             return p;
 1148           unsigned short tx = borrow_hi(xs, xi, rightxind, xpos);
 1149           unsigned short ty = borrow_hi(ys, yi, rightyind, ypos);
 1150           if (yi == rightyind)
 1151             tx &= rmask(rightypos);
 1152           else if (yi+1 == rightyind)
 1153             tx &= rmask(BITSTRBITS - ypos + rightypos + 1);
 1154           if (tx != ty)
 1155             break;
============ Listing of BitString.cc ============	PAGE 22

 1156         }
 1157       }
 1158       if (++p > rightx)
 1159         return -1;
 1160       if (++xpos == BITSTRBITS)
 1161       {
 1162         xpos = 0;
 1163         x = xs[++xind];
 1164         nextx = (xind >= rightxind) ? 0 : xs[xind+1];
 1165       }
 1166       else
 1167       {
 1168         x >>= 1;
 1169         if (nextx & 1)
 1170           x |= MAXBIT;
 1171         nextx >>= 1;
 1172       }
 1173     }
 1174   }
 1175 }
 1176 
 1177 
 1178 int BitPattern::search(unsigned short* xs, int startx, int lengthx)
 1179 {
 1180   unsigned short* ys = pattern.rep->s;
 1181   unsigned short* ms = mask.rep->s;
 1182   int righty = pattern.rep->len - 1;
 1183   int rightm = mask.rep->len - 1;
 1184 
 1185   int rev = startx < 0;
 1186   if (rev)
 1187   {
 1188     int leftx = 0;
 1189     int rightx = lengthx + startx;
 1190     startx = rightx - righty;
 1191 
 1192     if (righty < 0) return startx;
 1193     if (startx < 0 || startx >= lengthx) return -1;
 1194   
 1195     int xind = BitStr_index(startx);
 1196     int xpos = BitStr_pos(startx);
 1197     
 1198     int rightxind = BitStr_index(rightx);
 1199 
 1200     int rightmind = BitStr_index(rightm);
 1201     int rightyind = BitStr_index(righty);
 1202     
 1203     unsigned short x = safe_borrow_hi(xs, xind, rightxind, xpos);
 1204     unsigned short m = safe_borrow_hi(ms, 0, rightmind, 0);
 1205     unsigned short y = safe_borrow_hi(ys, 0, rightyind, 0) & m;
 1206     
 1207     int p = startx;
 1208     for (;;)
 1209     {
 1210       if ((x & m) == y)
============ Listing of BitString.cc ============	PAGE 23

 1211       {
 1212         int xi = xind;
 1213         int yi = 0;
 1214         for (;;)
 1215         {
 1216           if (++yi > rightyind || ++xi > rightxind)
 1217             return p;
 1218           unsigned short tm = safe_borrow_hi(ms, yi, rightmind, 0);
 1219           unsigned short ty = safe_borrow_hi(ys, yi, rightyind, 0);
 1220           unsigned short tx = safe_borrow_hi(xs, xi, rightxind, xpos);
 1221           if ((tx & tm) != (ty & tm))
 1222             break;
 1223         }
 1224       }
 1225       if (--p < leftx)
 1226         return -1;
 1227       if (--xpos < 0)
 1228       {
 1229         xpos = BITSTRBITS - 1;
 1230         --xind;
 1231       }
 1232       x = safe_borrow_hi(xs, xind, rightxind, xpos);
 1233     }
 1234   }
 1235   else
 1236   {
 1237 
 1238     int rightx = lengthx - 1;
 1239 
 1240     if (righty < 0) return startx;
 1241     if (startx < 0 || startx >= lengthx) return -1;
 1242     
 1243     int xind = BitStr_index(startx);
 1244     int xpos = BitStr_pos(startx);
 1245     
 1246     int rightxind = BitStr_index(rightx);
 1247 
 1248     int rightmind = BitStr_index(rightm);
 1249     int rightyind = BitStr_index(righty);
 1250     
 1251     unsigned short x = safe_borrow_hi(xs, xind, rightxind, xpos);
 1252     unsigned short m = safe_borrow_hi(ms, 0, rightmind, 0);
 1253     unsigned short y = safe_borrow_hi(ys, 0, rightyind, 0) & m;
 1254 
 1255     unsigned short nextx = (xind >= rightxind) ? 0 : (xs[xind+1] >> xpos);
 1256     
 1257     int p = startx;
 1258     for (;;)
 1259     {
 1260       if ((x & m) == y)
 1261       {
 1262         int xi = xind;
 1263         int yi = 0;
 1264         for (;;)
 1265         {
============ Listing of BitString.cc ============	PAGE 24

 1266           if (++yi > rightyind || ++xi > rightxind)
 1267             return p;
 1268           unsigned short tm = safe_borrow_hi(ms, yi, rightmind, 0);
 1269           unsigned short ty = safe_borrow_hi(ys, yi, rightyind, 0);
 1270           unsigned short tx = safe_borrow_hi(xs, xi, rightxind, xpos);
 1271           if ((tx & tm) != (ty & tm))
 1272             break;
 1273         }
 1274       }
 1275       if (++p > rightx)
 1276         return -1;
 1277       if (++xpos == BITSTRBITS)
 1278       {
 1279         xpos = 0;
 1280         x = xs[++xind];
 1281         nextx = (xind >= rightxind) ? 0 : xs[xind+1];
 1282       }
 1283       else
 1284       {
 1285         x >>= 1;
 1286         if (nextx & 1)
 1287           x |= MAXBIT;
 1288         nextx >>= 1;
 1289       }
 1290     }
 1291   }
 1292 }
 1293 
 1294 int BitString::match(int startx, int lengthx, int exact, 
 1295                      unsigned short* ys, int starty, int yl)
 1296 {
 1297   unsigned short* xs = rep->s;
 1298   int ylen = yl - starty;
 1299   int righty = yl - 1;
 1300 
 1301   int rightx;
 1302   int rev = startx < 0;
 1303   if (rev)
 1304   {
 1305     rightx = lengthx + startx;
 1306     startx = rightx - ylen + 1;
 1307     if (exact && startx != 0)
 1308       return 0;
 1309   }
 1310   else
 1311   {
 1312     rightx = lengthx - 1;
 1313     if (exact && rightx - startx != righty)
 1314       return 0;
 1315   }
 1316 
 1317   if (ylen == 0) return 1;
 1318   if (righty < 0 || startx < 0 || startx >= lengthx) return 0;
 1319   
 1320   int xi   = BitStr_index(startx);
============ Listing of BitString.cc ============	PAGE 25

 1321   int xpos = BitStr_pos(startx);
 1322   int yi   = BitStr_index(starty);
 1323   int ypos = BitStr_pos(starty);
 1324 
 1325   int rightxind = BitStr_index(rightx);
 1326   int rightyind = BitStr_index(righty);
 1327   int rightypos = BitStr_pos(righty);
 1328 
 1329   for (;;)
 1330   {
 1331     unsigned short x = borrow_hi(xs, xi, rightxind, xpos);
 1332     unsigned short y = borrow_hi(ys, yi, rightyind, ypos);
 1333     if (yi == rightyind)
 1334       x &= rmask(rightypos);
 1335     else if (yi+1 == rightyind)
 1336       x &= rmask(BITSTRBITS - ypos + rightypos + 1);
 1337     if (x != y)
 1338       return 0;
 1339     else if (++yi > rightyind || ++xi > rightxind)
 1340       return 1;
 1341   }
 1342 }
 1343 
 1344 int BitPattern::match(unsigned short* xs, int startx, int lengthx, int exact)
 1345 {
 1346   unsigned short* ys = pattern.rep->s;
 1347   int righty = pattern.rep->len - 1;
 1348   unsigned short* ms = mask.rep->s;
 1349   int rightm = mask.rep->len - 1;
 1350 
 1351   int rightx;
 1352   int rev = startx < 0;
 1353   if (rev)
 1354   {
 1355     rightx = lengthx + startx;
 1356     startx = rightx - righty;
 1357     if (exact && startx != 0)
 1358       return 0;
 1359   }
 1360   else
 1361   {
 1362     rightx = lengthx - 1;
 1363     if (exact && rightx - startx != righty)
 1364       return 0;
 1365   }
 1366 
 1367   if (righty < 0) return 1;
 1368   if (startx < 0 || startx >= lengthx) return 0;
 1369   
 1370   int xind = BitStr_index(startx);
 1371   int xpos = BitStr_pos(startx);
 1372   int yind = 0;
 1373 
 1374   int rightxind = BitStr_index(rightx);
 1375   int rightyind = BitStr_index(righty);
============ Listing of BitString.cc ============	PAGE 26

 1376   int rightmind = BitStr_index(rightm);
 1377 
 1378   for(;;)
 1379   {
 1380     unsigned short m = safe_borrow_hi(ms, yind, rightmind, 0);
 1381     unsigned short x = safe_borrow_hi(xs, xind, rightxind, xpos) & m;
 1382     unsigned short y = safe_borrow_hi(ys, yind, rightyind, 0) & m;
 1383     if (x != y)
 1384       return 0;
 1385     else if (++yind > rightyind || ++xind > rightxind)
 1386       return 1;
 1387   }
 1388 }
 1389 
 1390 BitSubString::BitSubString(BitString* x, int first, int l)
 1391 {
 1392   if (first < 0 || l <= 0 || first + l > x->rep->len)
 1393   {
 1394     S = &_nil_BitString; pos = len = 0;
 1395   }
 1396   else
 1397   {
 1398     S = x; pos = first; len = l;
 1399   }
 1400 }
 1401 
 1402 
 1403 
 1404 void BitSubString::operator = (BitString& y)
 1405 {
 1406   if (S == &_nil_BitString) return;
 1407   BitStrRep* targ = S->rep;
 1408 
 1409   int ylen = y.rep->len;
 1410   int sl = targ->len - len + ylen;
 1411 
 1412   if (y.rep == targ || ylen > len)
 1413   {
 1414     BitStrRep* oldtarg = targ;
 1415     targ = BStr_alloc(0, 0, 0, 0, sl);
 1416     bit_transfer(oldtarg->s, 0, pos, targ->s, 0);
 1417     bit_transfer(y.rep->s, 0, ylen, targ->s, pos);
 1418     bit_transfer(oldtarg->s, pos+len, oldtarg->len, targ->s, pos + ylen);
 1419     delete oldtarg;
 1420   }
 1421   else if (len == ylen)
 1422     bit_transfer(y.rep->s, 0, len, targ->s, pos);
 1423   else if (ylen < len)
 1424   {
 1425     bit_transfer(y.rep->s, 0, ylen, targ->s, pos);
 1426     bit_transfer(targ->s, pos+len, targ->len, targ->s, pos + ylen);
 1427     targ->len = sl;
 1428   }
 1429   check_last(targ);
 1430   S->rep = targ;
============ Listing of BitString.cc ============	PAGE 27

 1431 }
 1432 
 1433 void BitSubString::operator = (BitSubString& y)
 1434 {
 1435   if (S == &_nil_BitString) return;
 1436   BitStrRep* targ = S->rep;
 1437 
 1438   if (len == 0 || pos >= targ->len)
 1439     return;
 1440 
 1441   int sl = targ->len - len + y.len;
 1442 
 1443   if (y.S->rep == targ || y.len > len)
 1444   {
 1445     BitStrRep* oldtarg = targ;
 1446     targ = BStr_alloc(0, 0, 0, 0, sl);
 1447     bit_copy(oldtarg->s, targ->s, pos);
 1448     bit_transfer(y.S->rep->s, y.pos, y.pos+y.len, targ->s, pos);
 1449     bit_transfer(oldtarg->s, pos+len, oldtarg->len, targ->s, pos + y.len);
 1450     delete oldtarg;
 1451   }
 1452   else if (len == y.len)
 1453     bit_transfer(y.S->rep->s, y.pos, y.pos+y.len, targ->s, pos);
 1454   else if (y.len < len)
 1455   {
 1456     bit_transfer(y.S->rep->s, y.pos, y.pos+y.len, targ->s, pos);
 1457     bit_transfer(targ->s, pos+len, targ->len, targ->s, pos + y.len);
 1458     targ->len = sl;
 1459   }
 1460   check_last(targ);
 1461   S->rep = targ;
 1462 }
 1463 
 1464 BitSubString BitString::at(int first, int len)
 1465 {
 1466   return BitSubString(this, first, len);
 1467 }
 1468 
 1469 BitSubString BitString::before(int pos)
 1470 {
 1471   return BitSubString(this, 0, pos);
 1472 }
 1473 
 1474 BitSubString BitString::after(int pos)
 1475 {
 1476   return BitSubString(this, pos + 1, rep->len - (pos + 1));
 1477 }
 1478 
 1479 BitSubString BitString::at(BitString& y, int startpos = 0)
 1480 {
 1481   int first = search(startpos, rep->len, y.rep->s, 0, y.rep->len);
 1482   return BitSubString(this, first,  y.rep->len);
 1483 }
 1484 
 1485 BitSubString BitString::before(BitString& y, int startpos = 0)
============ Listing of BitString.cc ============	PAGE 28

 1486 {
 1487   int last = search(startpos, rep->len, y.rep->s, 0, y.rep->len);
 1488   return BitSubString(this, 0, last);
 1489 }
 1490 
 1491 BitSubString BitString::after(BitString& y, int startpos = 0)
 1492 {
 1493   int first = search(startpos, rep->len, y.rep->s, 0, y.rep->len);
 1494   if (first >= 0) first += y.rep->len;
 1495   return BitSubString(this, first, rep->len - first);
 1496 }
 1497 
 1498 
 1499 BitSubString BitString::at(BitSubString& y, int startpos = 0)
 1500 {
 1501   int first = search(startpos, rep->len, y.S->rep->s, y.pos, y.len);
 1502   return BitSubString(this, first, y.len);
 1503 }
 1504 
 1505 BitSubString BitString::before(BitSubString& y, int startpos = 0)
 1506 {
 1507   int last = search(startpos, rep->len, y.S->rep->s, y.pos, y.len);
 1508   return BitSubString(this, 0, last);
 1509 }
 1510 
 1511 BitSubString BitString::after(BitSubString& y, int startpos = 0)
 1512 {
 1513   int first = search(startpos, rep->len, y.S->rep->s, y.pos, y.len);
 1514   if (first >= 0) first += y.len;
 1515   return BitSubString(this, first, rep->len - first);
 1516 }
 1517 
 1518 BitSubString BitString::at(BitPattern& r, int startpos = 0)
 1519 {
 1520   int first = r.search(rep->s, startpos, rep->len);
 1521   return BitSubString(this, first, r.pattern.rep->len);
 1522 }
 1523 
 1524 
 1525 BitSubString BitString::before(BitPattern& r, int startpos = 0)
 1526 {
 1527   int first = r.search(rep->s, startpos, rep->len);
 1528   return BitSubString(this, 0, first);
 1529 }
 1530 
 1531 BitSubString BitString::after(BitPattern& r, int startpos = 0)
 1532 {
 1533   int first = r.search(rep->s, startpos, rep->len);
 1534   if (first >= 0) first += r.pattern.rep->len;
 1535   return BitSubString(this, first, rep->len - first);
 1536 }
 1537 
 1538 BitStrTmp common_prefix(BitString& x, BitString& y, int startpos = 0)
 1539 {
 1540   unsigned int  xl = x.rep->len;
============ Listing of BitString.cc ============	PAGE 29

 1541   unsigned int  yl = y.rep->len;
 1542 
 1543   int startx, starty;
 1544   if (startpos < 0)
 1545   {
 1546     startx = xl + startpos;
 1547     starty = yl + startpos;
 1548   }
 1549   else
 1550     startx = starty = startpos;
 1551 
 1552   if (startx < 0 || startx >= xl || starty < 0 || starty >= yl)
 1553     return (&_nilBitStrRep);
 1554 
 1555   unsigned short* xs = &(x.rep->s[BitStr_index(startx)]);
 1556   unsigned short a = *xs++;
 1557   int xp = startx;
 1558 
 1559   unsigned short* ys = &(y.rep->s[BitStr_index(starty)]);
 1560   unsigned short b = *ys++;
 1561   int yp = starty;
 1562 
 1563   for(; xp < xl && yp < yl; ++xp, ++yp)
 1564   {
 1565     unsigned short xbit = 1 << (BitStr_pos(xp));
 1566     unsigned short ybit = 1 << (BitStr_pos(yp));
 1567     if (((a & xbit) == 0) != ((b & ybit) == 0))
 1568       break;
 1569     if (xbit == MAXBIT)
 1570       a = *xs++;
 1571     if (ybit == MAXBIT)
 1572       b = *ys++;
 1573   }
 1574   return (BStr_alloc(0, x.rep->s, startx, xp, xp - startx));
 1575 }
 1576 
 1577 
 1578 BitStrTmp common_suffix(BitString& x, BitString& y, int startpos = -1)
 1579 {
 1580   unsigned int  xl = x.rep->len;
 1581   unsigned int  yl = y.rep->len;
 1582 
 1583   int startx, starty;
 1584   if (startpos < 0)
 1585   {
 1586     startx = xl + startpos;
 1587     starty = yl + startpos;
 1588   }
 1589   else
 1590     startx = starty = startpos;
 1591 
 1592   if (startx < 0 || startx >= xl || starty < 0 || starty >= yl)
 1593     return (&_nilBitStrRep);
 1594 
 1595   unsigned short* xs = &(x.rep->s[BitStr_index(startx)]);
============ Listing of BitString.cc ============	PAGE 30

 1596   unsigned short a = *xs--;
 1597   int xp = startx;
 1598 
 1599   unsigned short* ys = &(y.rep->s[BitStr_index(starty)]);
 1600   unsigned short b = *ys--;
 1601   int yp = starty;
 1602 
 1603   for(; xp >= 0 && yp >= 0; --xp, --yp)
 1604   {
 1605     unsigned short xbit = 1 << (BitStr_pos(xp));
 1606     unsigned short ybit = 1 << (BitStr_pos(yp));
 1607     if (((a & xbit) == 0) != ((b & ybit) == 0))
 1608       break;
 1609     if (xbit == 1)
 1610       a = *xs--;
 1611     if (ybit == 1)
 1612       b = *ys--;
 1613   }
 1614   return (BStr_alloc(0, x.rep->s, xp+1, startx+1, startx - xp));
 1615 }
 1616 
 1617 BitStrTmp reverse(BitString& x)
 1618 {
 1619   unsigned int  yl = x.rep->len;
 1620   BitStrRep* y = BStr_resize(0, yl);
 1621   if (yl > 0)
 1622   {
 1623     unsigned short* ls = x.rep->s;
 1624     unsigned short lm = 1;
 1625     unsigned short* rs = &(y->s[BitStr_index(yl - 1)]);
 1626     unsigned short rm = 1 << (BitStr_pos(yl - 1));
 1627     for (unsigned int  l = 0; l < yl; ++l)
 1628     {
 1629       if (*ls & lm)
 1630         *rs |= rm;
 1631       if (lm == MAXBIT)
 1632       {
 1633         ++ls;
 1634         lm = 1;
 1635       }
 1636       else
 1637         lm <<= 1;
 1638       if (rm == 1)
 1639       {
 1640         --rs;
 1641         rm = MAXBIT;
 1642       }
 1643       else
 1644         rm >>= 1;
 1645     }
 1646   }
 1647   return y;
 1648 }
 1649 
 1650 extern Obstack _libgxx_io_ob;
============ Listing of BitString.cc ============	PAGE 31

 1651 extern char* _libgxx_io_oblast;
 1652 
 1653 extern AllocQueue _libgxx_fmtq;
 1654 
 1655 const char* BitStringtoa(BitString& x, char f = '0', char t = '1')
 1656 {
 1657   int wrksiz = x.length() + 2;
 1658   char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
 1659   char* fmt = fmtbase;
 1660   unsigned int  xl = x.rep->len;
 1661   unsigned short* s = x.rep->s;
 1662   unsigned short a = 0;
 1663 
 1664   for (unsigned int  i = 0; i < xl; ++i)
 1665   {
 1666     if (i % BITSTRBITS == 0)
 1667       a = *s++;
 1668     *fmt++ = (a & 1)? t : f;
 1669     a >>= 1;
 1670   }
 1671 
 1672   *fmt = 0;
 1673 
 1674   return fmtbase;
 1675 }
 1676 
 1677 BitStrTmp atoBitString(const char* s, char f = '0', char t = '1')
 1678 {
 1679   int sl = strlen(s);
 1680   BitStrRep* r = BStr_resize(0, sl);
 1681   if (sl != 0)
 1682   {
 1683     unsigned int  rl = 0;
 1684     unsigned short* rs = r->s;
 1685     unsigned short a = 0;
 1686     unsigned short m = 1;
 1687     unsigned int  i = 0;
 1688     for(;;)
 1689     {
 1690       char ch = s[i];
 1691       if (ch != t && ch != f)
 1692       {
 1693         *rs = a;
 1694         break;
 1695       }
 1696       ++rl;
 1697       if (ch == t)
 1698         a |= m;
 1699       if (++i == sl)
 1700       {
 1701         *rs = a;
 1702         break;
 1703       }
 1704       else if (i % BITSTRBITS == 0)
 1705       {
============ Listing of BitString.cc ============	PAGE 32

 1706         *rs++ = a;
 1707         a = 0;
 1708         m = 1;
 1709       }
 1710       else
 1711         m <<= 1;
 1712     }
 1713     r = BStr_resize(r, rl);
 1714   }
 1715   return (r);
 1716 }
 1717 
 1718 ostream& operator << (ostream& s, BitString& x)
 1719 {
 1720   return s << BitStringtoa(x);
 1721 }
 1722 
 1723 
 1724 const char* BitPatterntoa(BitPattern& p, char f = '0',char t = '1',char x='X')
 1725 {
 1726   unsigned int  pl = p.pattern.rep->len;
 1727   unsigned int  ml = p.mask.rep->len;
 1728   unsigned int  l = pl <? ml;
 1729 
 1730   int wrksiz = l + 2;
 1731   char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
 1732   char* fmt = fmtbase;
 1733 
 1734   unsigned short* ps = p.pattern.rep->s;
 1735   unsigned short* ms = p.mask.rep->s;
 1736   unsigned short a = 0;
 1737   unsigned short m = 0;
 1738 
 1739   for (unsigned int  i = 0; i < l; ++i)
 1740   {
 1741     if (i % BITSTRBITS == 0)
 1742     {
 1743       a = *ps++;
 1744       m = *ms++;
 1745     }
 1746     if (m & 1)
 1747       *fmt++ =(a & 1)? t : f;
 1748     else
 1749       *fmt++ = x;
 1750     a >>= 1;
 1751     m >>= 1;
 1752   }
 1753 
 1754   *fmt = 0;
 1755   return fmtbase;
 1756 }
 1757 
 1758 BitPattern atoBitPattern(const char* s,char f = '0',char t = '1',char x = 'X')
 1759 {
 1760   BitPattern r;
============ Listing of BitString.cc ============	PAGE 33

 1761   int sl = strlen(s);
 1762   if (sl != 0)
 1763   {
 1764     unsigned int  rl = 0;
 1765     r.pattern.rep = BStr_resize(r.pattern.rep, sl);
 1766     r.mask.rep = BStr_resize(r.mask.rep, sl);
 1767     unsigned short* rs = r.pattern.rep->s;
 1768     unsigned short* ms = r.mask.rep->s;
 1769     unsigned short a = 0;
 1770     unsigned short b = 0;
 1771     unsigned short m = 1;
 1772     unsigned int  i = 0;
 1773     for(;;)
 1774     {
 1775       char ch = s[i];
 1776       if (ch != t && ch != f && ch != x)
 1777       {
 1778         *rs = a;
 1779         *ms = b;
 1780         break;
 1781       }
 1782       ++rl;
 1783       if (ch == t)
 1784       {
 1785         a |= m;
 1786         b |= m;
 1787       }
 1788       else if (ch == f)
 1789       {
 1790         b |= m;
 1791       }
 1792       if (++i == sl)
 1793       {
 1794         *rs = a;
 1795         *ms = b;
 1796         break;
 1797       }
 1798       else if (i % BITSTRBITS == 0)
 1799       {
 1800         *rs++ = a;
 1801         *ms++ = b;
 1802         a = 0;
 1803         b = 0;
 1804         m = 1;
 1805       }
 1806       else
 1807         m <<= 1;
 1808     }
 1809     r.pattern.rep = BStr_resize(r.pattern.rep, rl);
 1810     r.mask.rep = BStr_resize(r.mask.rep, rl);
 1811   }
 1812   return r;
 1813 }
 1814 
 1815 ostream& operator << (ostream& s, BitPattern& x)
============ Listing of BitString.cc ============	PAGE 34

 1816 {
 1817   return s << BitPatterntoa(x);
 1818 }
 1819 
 1820 int BitString::OK()
 1821 {
 1822   int v = rep != 0;             // have a rep;
 1823   v &= BitStr_len(rep->len) <= rep->sz; // within allocated size
 1824   if (!v) error("invariant failure");
 1825   return v;
 1826 }
 1827 
 1828 int BitSubString::OK()
 1829 {
 1830   int v = S != 0;               // point to a bitstring
 1831   v &= S->OK();                 // that is valid
 1832   v &= pos >= 0 && len >= 0;    // valid indices
 1833   v &= pos + len <= S->rep->len; // within bounds of targ
 1834   if (!v) (*lib_error_handler)("BitSubString", "invariant failure");
 1835   return v;
 1836 }
 1837 
 1838 int BitPattern::OK()
 1839 {
 1840   int v = pattern.OK() && mask.OK();
 1841   if (!v) (*lib_error_handler)("BitPattern", "invariant failure");
 1842   return v;
 1843 }
 1844 

============ Listing Complete ============
============ Listing of BitString.s ============ 	PAGE 1


    1 #NO_APP
    2 gcc_compiled.:
    3 .text
    4 	.even
    5 ___9BitStrTmpP9BitStrRep:
    6 	link a6,#0
    7 	movel a6@(8),a0
    8 	movel #__nilBitStrRep,a0@
    9 	movel a6@(12),a0@
   10 	movel a0,d0
   11 	unlk a6
   12 	rts
   13 LC0:
   14 	.ascii "illegal bit index\0"
   15 LC1:
   16 	.ascii "BitString\0"
   17 	.even
   18 .globl _error__9BitStringPc
   19 _error__9BitStringPc:
   20 	link a6,#0
   21 	movel a6@(12),sp@-
   22 	pea LC1
   23 	movel _lib_error_handler,a0
   24 	jbsr a0@
   25 	unlk a6
   26 	rts
   27 .globl __nilBitStrRep
   28 .data
   29 	.even
   30 __nilBitStrRep:
   31 	.long 0
   32 	.word 1
   33 	.word 0
   34 	.even
   35 __nil_BitString:
   36 	.skip 4
   37 .text
   38 	.even
   39 _bit_transfer__FPUsiiT0i:
   40 	link a6,#-12
   41 	moveml #0x3f3c,sp@-
   42 	movel a6@(8),a4
   43 	movel a6@(16),d0
   44 	movel a6@(20),a5
   45 	cmpl a6@(12),d0
   46 	jle L1390
   47 	tstl a4
   48 	jeq L1390
   49 	cmpl a4,a5
   50 	jne L1391
   51 	movel a6@(12),d7
   52 	cmpl a6@(24),d7
   53 	jeq L1390
   54 L1391:
   55 	movel a6@(12),d6
============ Listing of BitString.s ============	PAGE 2

   56 	lsrl #4,d6
   57 	moveq #15,d7
   58 	andl a6@(12),d7
   59 	movel d7,a6@(-4)
   60 	movel a6@(24),d7
   61 	lsrl #4,d7
   62 	movel d7,a0
   63 	moveq #15,d7
   64 	andl a6@(24),d7
   65 	movel d7,a3
   66 	tstl a6@(-4)
   67 	jne L1397
   68 	tstl a3
   69 	jne L1397
   70 	lea a4@(d6:l:2),a3
   71 	lea a5@(a0:l:2),a2
   72 	movel d0,d3
   73 	subl a6@(12),d3
   74 	cmpl a3,a2
   75 	jeq L1390
   76 	movel d3,d2
   77 	lsrl #4,d2
   78 	tstl d2
   79 	jle L1400
   80 	movel d2,d7
   81 	asll #1,d7
   82 	movel d7,sp@-
   83 	movel a2,sp@-
   84 	movel a3,sp@-
   85 	jbsr _bcopy
   86 L1400:
   87 	moveq #15,d0
   88 	andl d3,d0
   89 	movel #65535,d1
   90 	asll d0,d1
   91 	movew d1,d0
   92 	notw d0
   93 	andw a3@(d2:l:2),d0
   94 	andw a2@(d2:l:2),d1
   95 	orw d1,d0
   96 	movew d0,a2@(d2:l:2)
   97 	jra L1390
   98 L1397:
   99 	subql #1,d0
  100 	movel d0,d5
  101 	lsrl #4,d5
  102 	moveq #15,d7
  103 	andl d0,d7
  104 	movel d7,a6@(-8)
  105 	subl a6@(12),d0
  106 	addl a6@(24),d0
  107 	movel d0,d7
  108 	lsrl #4,d7
  109 	movel d7,a6@(-12)
  110 	moveq #15,d7
============ Listing of BitString.s ============	PAGE 3

  111 	andl d7,d0
  112 	movel d0,a2
  113 	cmpl a6@(-12),a0
  114 	jne L1405
  115 	cmpl d6,d5
  116 	jne L1406
  117 	moveq #16,d1
  118 	subl a3,d1
  119 	movel #65535,d0
  120 	asrl d1,d0
  121 	movel a2,d1
  122 	addql #1,d1
  123 	movel #65535,d2
  124 	asll d1,d2
  125 	orw d2,d0
  126 	movew d0,d2
  127 	andw a5@(a0:l:2),d2
  128 	clrl d1
  129 	movew a4@(d6:l:2),d1
  130 	movel a6@(-4),d7
  131 	asrl d7,d1
  132 	jra L1428
  133 L1406:
  134 	moveq #16,d1
  135 	subl a3,d1
  136 	movel #65535,d0
  137 	asrl d1,d0
  138 	movel a2,d1
  139 	addql #1,d1
  140 	movel #65535,d2
  141 	asll d1,d2
  142 	orw d2,d0
  143 	movew d0,d2
  144 	andw a5@(a0:l:2),d2
  145 	clrl d1
  146 	movew a4@(d6:l:2),d1
  147 	movel a6@(-4),d7
  148 	asrl d7,d1
  149 	clrl d3
  150 	movew a4@(2,d6:l:2),d3
  151 	moveq #16,d4
  152 	subl d7,d4
  153 	asll d4,d3
  154 	orl d3,d1
  155 L1428:
  156 	movel a3,d7
  157 	asll d7,d1
  158 	notw d0
  159 	andw d0,d1
  160 	orw d1,d2
  161 	movew d2,a5@(a0:l:2)
  162 	jra L1390
  163 L1405:
  164 	cmpl d6,d5
  165 	jne L1408
============ Listing of BitString.s ============	PAGE 4

  166 	movel a2,d0
  167 	addql #1,d0
  168 	movel #65535,d3
  169 	asll d0,d3
  170 	movew d3,d1
  171 	movel a6@(-12),d7
  172 	andw a5@(d7:l:2),d1
  173 	clrl d0
  174 	movew a4@(d6:l:2),d0
  175 	moveq #15,d2
  176 	subl a6@(-8),d2
  177 	movel d0,d7
  178 	asll d2,d7
  179 	movel d7,d2
  180 	moveq #15,d4
  181 	subl a2,d4
  182 	asrl d4,d2
  183 	notw d3
  184 	andw d3,d2
  185 	moveq #16,d4
  186 	subl a3,d4
  187 	movel #65535,d3
  188 	asrl d4,d3
  189 	movew d3,d4
  190 	andw a5@(a0:l:2),d4
  191 	movel a6@(-4),d7
  192 	asrl d7,d0
  193 	movel a3,d7
  194 	asll d7,d0
  195 	notw d3
  196 	andw d3,d0
  197 	orw d0,d4
  198 	movew d4,a5@(a0:l:2)
  199 	orw d2,d1
  200 	movel a6@(-12),d7
  201 	movew d1,a5@(d7:l:2)
  202 	jra L1390
  203 L1408:
  204 	movel a2,d0
  205 	addql #1,d0
  206 	movel #65535,d1
  207 	asll d0,d1
  208 	movew d1,d2
  209 	movel a6@(-12),d7
  210 	andw a5@(d7:l:2),d2
  211 	clrl d0
  212 	movew a4@(d5:l:2),d0
  213 	moveq #15,d3
  214 	subl a6@(-8),d3
  215 	asll d3,d0
  216 	clrl d3
  217 	movew a4@(-2,d5:l:2),d3
  218 	movel a6@(-8),d4
  219 	addql #1,d4
  220 	asrl d4,d3
============ Listing of BitString.s ============	PAGE 5

  221 	orl d3,d0
  222 	moveq #15,d3
  223 	subl a2,d3
  224 	asrl d3,d0
  225 	notw d1
  226 	andw d1,d0
  227 	orw d0,d2
  228 	movew d2,a1
  229 	moveq #16,d0
  230 	subl a3,d0
  231 	movel #65535,d1
  232 	asrl d0,d1
  233 	movew d1,d2
  234 	andw a5@(a0:l:2),d2
  235 	clrl d0
  236 	movew a4@(d6:l:2),d0
  237 	movel a6@(-4),d7
  238 	asrl d7,d0
  239 	clrl d3
  240 	movew a4@(2,d6:l:2),d3
  241 	moveq #16,d4
  242 	subl d7,d4
  243 	asll d4,d3
  244 	orl d3,d0
  245 	movel a3,d7
  246 	asll d7,d0
  247 	notw d1
  248 	andw d1,d0
  249 	movew d2,d4
  250 	orw d0,d4
  251 	cmpl a5,a4
  252 	jne L1411
  253 	movel a6@(24),d7
  254 	cmpl a6@(12),d7
  255 	jge L1410
  256 L1411:
  257 	movel a6@(-4),d3
  258 	subl a3,d3
  259 	jpl L1412
  260 	moveq #16,d7
  261 	addl d7,d3
  262 	jra L1413
  263 L1412:
  264 	addql #1,d6
  265 L1413:
  266 	movel a6@(-12),a3
  267 	subqw #1,a3
  268 	clrl d2
  269 	moveq #16,d7
  270 	subl d3,d7
  271 	movel d7,a2
  272 L1414:
  273 	cmpl a0,a3
  274 	jne L1417
  275 	movew d4,a5@(a0:l:2)
============ Listing of BitString.s ============	PAGE 6

  276 	movel a6@(-12),d7
  277 	movew a1,a5@(d7:l:2)
  278 	jra L1390
  279 L1417:
  280 	movew a4@(d6:l:2),d2
  281 	movel d2,d0
  282 	asrl d3,d0
  283 	movew d0,d1
  284 	addql #1,d6
  285 	cmpl d6,d5
  286 	jlt L1419
  287 	movew a4@(d6:l:2),d2
  288 	movel d2,d0
  289 	movel a2,d7
  290 	asll d7,d0
  291 	orw d0,d1
  292 L1419:
  293 	movew d4,a5@(a0:l:2)
  294 	addqw #1,a0
  295 	movew d1,d4
  296 	jra L1414
  297 L1410:
  298 	movel a6@(-8),d3
  299 	subl a2,d3
  300 	tstl d3
  301 	jgt L1421
  302 	moveq #16,d7
  303 	addl d7,d3
  304 	subql #1,d5
  305 L1421:
  306 	lea a0@(1),a3
  307 	clrl d2
  308 	moveq #16,d7
  309 	subl d3,d7
  310 	movel d7,a2
  311 L1422:
  312 	cmpl a6@(-12),a3
  313 	jne L1425
  314 	movel a6@(-12),d7
  315 	movew a1,a5@(d7:l:2)
  316 	movew d4,a5@(a0:l:2)
  317 	jra L1390
  318 L1425:
  319 	movew a4@(d5:l:2),d2
  320 	movel d2,d0
  321 	movel a2,d7
  322 	asll d7,d0
  323 	movew d0,d1
  324 	subql #1,d5
  325 	cmpl d5,d6
  326 	jgt L1427
  327 	movew a4@(d5:l:2),d2
  328 	movel d2,d0
  329 	asrl d3,d0
  330 	orw d0,d1
============ Listing of BitString.s ============	PAGE 7

  331 L1427:
  332 	movel a6@(-12),d7
  333 	movew a1,a5@(d7:l:2)
  334 	subql #1,a6@(-12)
  335 	movew d1,a1
  336 	jra L1422
  337 L1390:
  338 	moveml a6@(-52),#0x3cfc
  339 	unlk a6
  340 	rts
  341 LC2:
  342 	.ascii "Requested length out of range\0"
  343 	.even
  344 .globl _BStr_alloc__FP9BitStrRepPUsiii
  345 _BStr_alloc__FP9BitStrRepPUsiii:
  346 	link a6,#0
  347 	moveml #0x3f30,sp@-
  348 	movel a6@(8),a3
  349 	movel a6@(12),d4
  350 	movel a6@(16),d6
  351 	movel a6@(20),d5
  352 	movel a6@(24),d3
  353 	cmpl #__nilBitStrRep,a3
  354 	jne L1442
  355 	subl a3,a3
  356 L1442:
  357 	tstl d3
  358 	jge L1443
  359 	clrl d3
  360 L1443:
  361 	movel d3,d0
  362 	lsrl #4,d0
  363 	movel d0,d1
  364 	addql #1,d1
  365 	tstl a3
  366 	jeq L1446
  367 	clrl d0
  368 	movew a3@(4),d0
  369 	cmpl d1,d0
  370 	jge L1445
  371 L1446:
  372 	movel d3,d0
  373 	lsrl #4,d0
  374 	addql #1,d0
  375 	asll #1,d0
  376 	moveq #12,d7
  377 	addl d7,d0
  378 	moveq #8,d2
  379 	cmpl d2,d0
  380 	jls L1458
  381 L1451:
  382 	lsll #1,d2
  383 	cmpl d2,d0
  384 	jhi L1451
  385 L1458:
============ Listing of BitString.s ============	PAGE 8

  386 	subql #4,d2
  387 	cmpl #32767,d2
  388 	jls L1452
  389 	pea LC2
  390 	pea LC1
  391 	movel _lib_error_handler,a0
  392 	jbsr a0@
  393 	addqw #8,sp
  394 L1452:
  395 	movel d2,sp@-
  396 	jbsr ___builtin_new
  397 	movel d0,a2
  398 	movel d2,sp@-
  399 	movel a2,sp@-
  400 	jbsr _bzero
  401 	movel d2,d0
  402 	subql #6,d0
  403 	lsrl #1,d0
  404 	movew d0,a2@(4)
  405 	addw #12,sp
  406 	jra L1453
  407 L1445:
  408 	movel a3,a2
  409 L1453:
  410 	movel d3,a2@
  411 	tstl d4
  412 	jeq L1454
  413 	tstl d5
  414 	jle L1454
  415 	movel a2,d0
  416 	addql #6,d0
  417 	cmpl d4,d0
  418 	jne L1455
  419 	tstl d6
  420 	jle L1454
  421 L1455:
  422 	clrl sp@-
  423 	pea a2@(6)
  424 	movel d5,sp@-
  425 	movel d6,sp@-
  426 	movel d4,sp@-
  427 	jbsr _bit_transfer__FPUsiiT0i
  428 	addw #20,sp
  429 L1454:
  430 	movel a2@,d0
  431 	lsrl #4,d0
  432 	moveq #15,d1
  433 	andl a2@,d1
  434 	moveq #16,d7
  435 	subl d1,d7
  436 	movel d7,d1
  437 	movel #65535,d2
  438 	asrl d1,d2
  439 	andw d2,a2@(6,d0:l:2)
  440 	cmpl a3,a2
============ Listing of BitString.s ============	PAGE 9

  441 	jeq L1457
  442 	tstl a3
  443 	jeq L1457
  444 	movel a3,sp@-
  445 	jbsr ___builtin_delete
  446 L1457:
  447 	movel a2,d0
  448 	moveml a6@(-32),#0xcfc
  449 	unlk a6
  450 	rts
  451 	.even
  452 .globl _BStr_resize__FP9BitStrRepi
  453 _BStr_resize__FP9BitStrRepi:
  454 	link a6,#0
  455 	moveml #0x3830,sp@-
  456 	movel a6@(8),a3
  457 	movel a6@(12),d3
  458 	jge L1460
  459 	clrl d3
  460 L1460:
  461 	movel d3,d0
  462 	lsrl #4,d0
  463 	movel d0,d1
  464 	addql #1,d1
  465 	tstl a3
  466 	jeq L1463
  467 	cmpl #__nilBitStrRep,a3
  468 	jne L1462
  469 L1463:
  470 	movel d3,d0
  471 	lsrl #4,d0
  472 	addql #1,d0
  473 	asll #1,d0
  474 	moveq #12,d4
  475 	addl d4,d0
  476 	moveq #8,d2
  477 	cmpl d2,d0
  478 	jls L1482
  479 L1468:
  480 	lsll #1,d2
  481 	cmpl d2,d0
  482 	jhi L1468
  483 L1482:
  484 	subql #4,d2
  485 	cmpl #32767,d2
  486 	jls L1469
  487 	pea LC2
  488 	pea LC1
  489 	movel _lib_error_handler,a0
  490 	jbsr a0@
  491 	addqw #8,sp
  492 L1469:
  493 	movel d2,sp@-
  494 	jbsr ___builtin_new
  495 	movel d0,a2
============ Listing of BitString.s ============	PAGE 10

  496 	movel d2,sp@-
  497 	movel a2,sp@-
  498 	jbsr _bzero
  499 	movel d2,d0
  500 	subql #6,d0
  501 	lsrl #1,d0
  502 	movew d0,a2@(4)
  503 	jra L1470
  504 L1462:
  505 	clrl d0
  506 	movew a3@(4),d0
  507 	cmpl d1,d0
  508 	jge L1471
  509 	movel d3,d0
  510 	lsrl #4,d0
  511 	addql #1,d0
  512 	asll #1,d0
  513 	moveq #12,d4
  514 	addl d4,d0
  515 	moveq #8,d2
  516 	cmpl d2,d0
  517 	jls L1481
  518 L1476:
  519 	lsll #1,d2
  520 	cmpl d2,d0
  521 	jhi L1476
  522 L1481:
  523 	subql #4,d2
  524 	cmpl #32767,d2
  525 	jls L1477
  526 	pea LC2
  527 	pea LC1
  528 	movel _lib_error_handler,a0
  529 	jbsr a0@
  530 	addqw #8,sp
  531 L1477:
  532 	movel d2,sp@-
  533 	jbsr ___builtin_new
  534 	movel d0,a2
  535 	movel d2,sp@-
  536 	movel a2,sp@-
  537 	jbsr _bzero
  538 	movel d2,d0
  539 	subql #6,d0
  540 	lsrl #1,d0
  541 	movew d0,a2@(4)
  542 	addw #12,sp
  543 	movel a3@,d0
  544 	lsrl #4,d0
  545 	addql #1,d0
  546 	asll #1,d0
  547 	movel d0,sp@-
  548 	pea a2@(6)
  549 	pea a3@(6)
  550 	jbsr _bcopy
============ Listing of BitString.s ============	PAGE 11

  551 	movel a3,sp@-
  552 	jbsr ___builtin_delete
  553 	jra L1470
  554 L1471:
  555 	movel a3,a2
  556 L1470:
  557 	movel d3,a2@
  558 	movel d3,d0
  559 	lsrl #4,d0
  560 	moveq #15,d1
  561 	andl a2@,d1
  562 	moveq #16,d4
  563 	subl d1,d4
  564 	movel d4,d1
  565 	movel #65535,d2
  566 	asrl d1,d2
  567 	andw d2,a2@(6,d0:l:2)
  568 	movel a2,d0
  569 	moveml a6@(-20),#0xc1c
  570 	unlk a6
  571 	rts
  572 	.even
  573 .globl _BStr_copy__FP9BitStrRepT0
  574 _BStr_copy__FP9BitStrRepT0:
  575 	link a6,#0
  576 	moveml #0x3c38,sp@-
  577 	movel a6@(8),a3
  578 	movel a6@(12),a4
  579 	cmpl a3,a4
  580 	jne L1484
  581 	movel a3,d0
  582 	jra L1483
  583 L1484:
  584 	cmpl #__nilBitStrRep,a3
  585 	jne L1485
  586 	subl a3,a3
  587 L1485:
  588 	cmpl #__nilBitStrRep,a4
  589 	jne L1486
  590 	subl a4,a4
  591 L1486:
  592 	tstl a4
  593 	jne L1487
  594 	tstl a3
  595 	jne L1488
  596 	moveq #14,d0
  597 	moveq #8,d2
  598 L1493:
  599 	lsll #1,d2
  600 	cmpl d2,d0
  601 	jhi L1493
  602 	subql #4,d2
  603 	cmpl #32767,d2
  604 	jls L1494
  605 	pea LC2
============ Listing of BitString.s ============	PAGE 12

  606 	pea LC1
  607 	movel _lib_error_handler,a0
  608 	jbsr a0@
  609 	addqw #8,sp
  610 L1494:
  611 	movel d2,sp@-
  612 	jbsr ___builtin_new
  613 	movel d0,a2
  614 	movel d2,sp@-
  615 	movel a2,sp@-
  616 	jbsr _bzero
  617 	movel d2,d0
  618 	subql #6,d0
  619 	lsrl #1,d0
  620 	movew d0,a2@(4)
  621 	jra L1495
  622 L1488:
  623 	movel a3,a2
  624 L1495:
  625 	clrl a2@
  626 	jra L1496
  627 L1487:
  628 	movel a4@,d3
  629 	movel d3,d0
  630 	lsrl #4,d0
  631 	movel d0,d4
  632 	addql #1,d4
  633 	tstl a3
  634 	jeq L1499
  635 	clrl d0
  636 	movew a3@(4),d0
  637 	cmpl d4,d0
  638 	jge L1498
  639 L1499:
  640 	movel d3,d0
  641 	lsrl #4,d0
  642 	addql #1,d0
  643 	asll #1,d0
  644 	moveq #12,d5
  645 	addl d5,d0
  646 	moveq #8,d2
  647 	cmpl d2,d0
  648 	jls L1509
  649 L1504:
  650 	lsll #1,d2
  651 	cmpl d2,d0
  652 	jhi L1504
  653 L1509:
  654 	subql #4,d2
  655 	cmpl #32767,d2
  656 	jls L1505
  657 	pea LC2
  658 	pea LC1
  659 	movel _lib_error_handler,a0
  660 	jbsr a0@
============ Listing of BitString.s ============	PAGE 13

  661 	addqw #8,sp
  662 L1505:
  663 	movel d2,sp@-
  664 	jbsr ___builtin_new
  665 	movel d0,a2
  666 	movel d2,sp@-
  667 	movel a2,sp@-
  668 	jbsr _bzero
  669 	movel d2,d0
  670 	subql #6,d0
  671 	lsrl #1,d0
  672 	movew d0,a2@(4)
  673 	addw #12,sp
  674 	tstl a3
  675 	jeq L1507
  676 	movel a3,sp@-
  677 	jbsr ___builtin_delete
  678 	addqw #4,sp
  679 	jra L1507
  680 L1498:
  681 	movel a3,a2
  682 L1507:
  683 	asll #1,d4
  684 	movel d4,sp@-
  685 	pea a2@(6)
  686 	pea a4@(6)
  687 	jbsr _bcopy
  688 	movel d3,a2@
  689 L1496:
  690 	movel a2@,d0
  691 	lsrl #4,d0
  692 	moveq #15,d1
  693 	andl a2@,d1
  694 	moveq #16,d5
  695 	subl d1,d5
  696 	movel d5,d1
  697 	movel #65535,d2
  698 	asrl d1,d2
  699 	andw d2,a2@(6,d0:l:2)
  700 	movel a2,d0
  701 L1483:
  702 	moveml a6@(-28),#0x1c3c
  703 	unlk a6
  704 	rts
  705 	.even
  706 .globl _op$eq__FR9BitStringT0
  707 _op$eq__FR9BitStringT0:
  708 	link a6,#0
  709 	moveml #0x2030,sp@-
  710 	movel a6@(8),a3
  711 	movel a6@(12),a2
  712 	clrl d2
  713 	movel a3@,a1
  714 	movel a2@,a0
  715 	movel a1@,d1
============ Listing of BitString.s ============	PAGE 14

  716 	cmpl a0@,d1
  717 	jne L1511
  718 	movel d1,d0
  719 	lsrl #4,d0
  720 	addql #1,d0
  721 	asll #1,d0
  722 	movel d0,sp@-
  723 	movel a2@,d1
  724 	addql #6,d1
  725 	movel d1,sp@-
  726 	movel a3@,d1
  727 	addql #6,d1
  728 	movel d1,sp@-
  729 	jbsr _bcmp
  730 	tstl d0
  731 	jne L1511
  732 	moveq #1,d2
  733 L1511:
  734 	movel d2,d0
  735 	moveml a6@(-12),#0xc04
  736 	unlk a6
  737 	rts
  738 	.even
  739 .globl _op$le__FR9BitStringT0
  740 _op$le__FR9BitStringT0:
  741 	link a6,#0
  742 	movel a2,sp@-
  743 	movel a6@(8),a1
  744 	movel a6@(12),a2
  745 	movel a1@,a0
  746 	movel a0@,d0
  747 	movel a2@,a0
  748 	cmpl a0@,d0
  749 	jhi L1521
  750 	movel a1@,a0
  751 	addqw #6,a0
  752 	movel a2@,a1
  753 	addqw #6,a1
  754 	lsrl #4,d0
  755 	addql #1,d0
  756 	lea a0@(d0:l:2),a2
  757 L1522:
  758 	cmpl a0,a2
  759 	jls L1520
  760 	movew a1@+,d0
  761 	movew a0@+,d1
  762 	orw d0,d1
  763 	cmpw d1,d0
  764 	jeq L1522
  765 L1521:
  766 	clrl d0
  767 	jra L1513
  768 L1520:
  769 	moveq #1,d0
  770 L1513:
============ Listing of BitString.s ============	PAGE 15

  771 	movel a6@(-4),a2
  772 	unlk a6
  773 	rts
  774 	.even
  775 .globl _op$lt__FR9BitStringT0
  776 _op$lt__FR9BitStringT0:
  777 	link a6,#0
  778 	moveml #0x3030,sp@-
  779 	movel a6@(8),a1
  780 	movel a6@(12),a2
  781 	movel a1@,a0
  782 	movew a0@(2),d1
  783 	movel a2@,a0
  784 	movew a0@(2),d2
  785 	cmpw d1,d2
  786 	jcs L1539
  787 	movel a1@,a1
  788 	addqw #6,a1
  789 	movel a2@,a0
  790 	addqw #6,a0
  791 	clrl d0
  792 	movew d1,d0
  793 	lsrl #4,d0
  794 	addql #1,d0
  795 	lea a1@(d0:l:2),a2
  796 	clrl d0
  797 	movew d2,d0
  798 	lsrl #4,d0
  799 	addql #1,d0
  800 	lea a0@(d0:l:2),a3
  801 	clrl d3
  802 L1541:
  803 	cmpl a1,a2
  804 	jls L1540
  805 	movew a1@+,d2
  806 	movew a0@+,d0
  807 	movew d2,d1
  808 	orw d0,d1
  809 	cmpw d1,d0
  810 	jne L1539
  811 	cmpw d1,d2
  812 	jeq L1541
  813 	moveq #1,d3
  814 	jra L1541
  815 L1540:
  816 	tstl d3
  817 	jne L1542
  818 	jra L1535
  819 L1538:
  820 	tstw a0@+
  821 	jeq L1535
  822 L1542:
  823 	moveq #1,d0
  824 	jra L1523
  825 L1535:
============ Listing of BitString.s ============	PAGE 16

  826 	cmpl a0,a3
  827 	jhi L1538
  828 L1539:
  829 	clrl d0
  830 L1523:
  831 	moveml a6@(-16),#0xc0c
  832 	unlk a6
  833 	rts
  834 	.even
  835 .globl _lcompare__FR9BitStringT0
  836 _lcompare__FR9BitStringT0:
  837 	link a6,#0
  838 	moveml #0x3e30,sp@-
  839 	movel a6@(8),a1
  840 	movel a6@(12),a0
  841 	movel a1@,a2
  842 	movel a2@,d2
  843 	movel a0@,a2
  844 	movel a2@,d1
  845 	movel a1@,a1
  846 	addqw #6,a1
  847 	movel d2,d0
  848 	lsrl #4,d0
  849 	addql #1,d0
  850 	lea a1@(d0:l:2),a2
  851 	movel a0@,a0
  852 	addqw #6,a0
  853 	movel d1,d0
  854 	lsrl #4,d0
  855 	addql #1,d0
  856 	lea a0@(d0:l:2),a3
  857 L1556:
  858 	cmpl a1,a2
  859 	jls L1547
  860 	cmpl a0,a3
  861 	jls L1547
  862 	movew a1@+,d6
  863 	movew a0@+,d5
  864 	cmpw d6,d5
  865 	jeq L1556
  866 	moveq #1,d2
  867 	clrl d4
  868 	clrl d3
  869 L1549:
  870 	movew d6,d0
  871 	andw d2,d0
  872 	sne d1
  873 	andw #1,d1
  874 	movew d5,d0
  875 	andw d2,d0
  876 	sne d0
  877 	andw #1,d0
  878 	movew d1,d4
  879 	movew d0,d3
  880 	movel d4,d0
============ Listing of BitString.s ============	PAGE 17

  881 	subl d3,d0
  882 	jne L1543
  883 	lslw #1,d2
  884 	jra L1549
  885 L1547:
  886 	movel d2,d0
  887 	subl d1,d0
  888 L1543:
  889 	moveml a6@(-28),#0xc7c
  890 	unlk a6
  891 	rts
  892 	.even
  893 .globl _count__9BitStringi
  894 _count__9BitStringi:
  895 	link a6,#0
  896 	moveml #0x3e00,sp@-
  897 	movel a6@(8),a0
  898 	movel a0@,a1
  899 	movel a1@,d0
  900 	lsrl #4,d0
  901 	moveq #15,d1
  902 	andl a1@,d1
  903 	moveq #16,d6
  904 	subl d1,d6
  905 	movel d6,d1
  906 	movel #65535,d2
  907 	asrl d1,d2
  908 	andw d2,a1@(6,d0:l:2)
  909 	movel a0@,a1
  910 	movel a1@,d1
  911 	movel d1,d0
  912 	lsrl #4,d0
  913 	addql #1,d0
  914 	moveq #15,d5
  915 	andl d1,d5
  916 	clrl d3
  917 	movel a0@,a0
  918 	addqw #6,a0
  919 	lea a0@(-2,d0:l:2),a1
  920 	tstl a6@(12)
  921 	jeq L1561
  922 L1593:
  923 	cmpl a0,a1
  924 	jls L1592
  925 	movew a0@+,d2
  926 	clrl d1
  927 L1568:
  928 	tstw d2
  929 	jeq L1593
  930 	btst #0,d2
  931 	jeq L1567
  932 	addql #1,d3
  933 L1567:
  934 	lsrw #1,d2
  935 	addql #1,d1
============ Listing of BitString.s ============	PAGE 18

  936 	moveq #15,d6
  937 	cmpl d1,d6
  938 	jge L1568
  939 	jra L1593
  940 L1592:
  941 	movew a0@,d2
  942 	clrl d1
  943 	cmpl d1,d5
  944 	jle L1575
  945 L1574:
  946 	tstw d2
  947 	jeq L1575
  948 	btst #0,d2
  949 	jeq L1573
  950 	addql #1,d3
  951 L1573:
  952 	lsrw #1,d2
  953 	addql #1,d1
  954 	cmpl d1,d5
  955 	jgt L1574
  956 	jra L1575
  957 L1561:
  958 	movew #32768,d4
  959 	cmpl a0,a1
  960 	jls L1590
  961 L1583:
  962 	movew a0@+,d2
  963 	clrl d1
  964 L1582:
  965 	movew d2,d0
  966 	andw d4,d0
  967 	jne L1581
  968 	addql #1,d3
  969 L1581:
  970 	lslw #1,d2
  971 	addql #1,d1
  972 	moveq #15,d6
  973 	cmpl d1,d6
  974 	jge L1582
  975 	cmpl a0,a1
  976 	jhi L1583
  977 L1590:
  978 	movel d5,d0
  979 	subql #1,d0
  980 	moveq #1,d1
  981 	asll d0,d1
  982 	movew d1,d4
  983 	movew a0@,d2
  984 	clrl d1
  985 	cmpl d1,d5
  986 	jle L1575
  987 L1588:
  988 	movew d2,d0
  989 	andw d4,d0
  990 	jne L1587
============ Listing of BitString.s ============	PAGE 19

  991 	addql #1,d3
  992 L1587:
  993 	lslw #1,d2
  994 	addql #1,d1
  995 	cmpl d1,d5
  996 	jgt L1588
  997 L1575:
  998 	movel d3,d0
  999 	moveml a6@(-20),#0x7c
 1000 	unlk a6
 1001 	rts
 1002 	.even
 1003 .globl _cmpl__FP9BitStrRepT0
 1004 _cmpl__FP9BitStrRepT0:
 1005 	link a6,#0
 1006 	moveml #0x3020,sp@-
 1007 	movel a6@(12),a1
 1008 	movel a6@(8),sp@-
 1009 	movel a1,sp@-
 1010 	jbsr _BStr_copy__FP9BitStrRepT0
 1011 	movel d0,a1
 1012 	lea a1@(6),a0
 1013 	movel a1@,d0
 1014 	lsrl #4,d0
 1015 	addql #1,d0
 1016 	lea a0@(d0:l:2),a2
 1017 	cmpl a0,a2
 1018 	jls L1600
 1019 L1598:
 1020 	notw a0@+
 1021 	cmpl a0,a2
 1022 	jhi L1598
 1023 L1600:
 1024 	movel a1@,d0
 1025 	lsrl #4,d0
 1026 	moveq #15,d1
 1027 	andl a1@,d1
 1028 	moveq #16,d3
 1029 	subl d1,d3
 1030 	movel d3,d1
 1031 	movel #65535,d2
 1032 	asrl d1,d2
 1033 	andw d2,a1@(6,d0:l:2)
 1034 	movel a1,d0
 1035 	moveml a6@(-12),#0x40c
 1036 	unlk a6
 1037 	rts
 1038 	.even
 1039 .globl _and__FP9BitStrRepN20
 1040 _and__FP9BitStrRepN20:
 1041 	link a6,#0
 1042 	moveml #0x3c3c,sp@-
 1043 	movel a6@(8),a2
 1044 	movel a6@(12),a5
 1045 	movel a6@(16),a3
============ Listing of BitString.s ============	PAGE 20

 1046 	cmpl a2,a3
 1047 	seq d0
 1048 	moveq #1,d3
 1049 	andl d0,d3
 1050 	cmpl a5,a3
 1051 	seq d0
 1052 	moveq #1,d4
 1053 	andl d0,d4
 1054 	movel a2@,d2
 1055 	cmpl a5@,d2
 1056 	jls L1602
 1057 	movel a5@,d2
 1058 L1602:
 1059 	movel d2,sp@-
 1060 	movel a3,sp@-
 1061 	jbsr _BStr_resize__FP9BitStrRepi
 1062 	movel d0,a3
 1063 	lea a3@(6),a1
 1064 	movel d2,d0
 1065 	lsrl #4,d0
 1066 	addql #1,d0
 1067 	lea a1@(d0:l:2),a4
 1068 	tstl d3
 1069 	jeq L1604
 1070 	movel a1,a2
 1071 	jra L1605
 1072 L1604:
 1073 	addqw #6,a2
 1074 L1605:
 1075 	tstl d4
 1076 	jeq L1606
 1077 	movel a1,a0
 1078 	jra L1613
 1079 L1606:
 1080 	lea a5@(6),a0
 1081 	jra L1613
 1082 L1610:
 1083 	movew a2@+,d5
 1084 	andw a0@+,d5
 1085 	movew d5,a1@+
 1086 L1613:
 1087 	cmpl a1,a4
 1088 	jhi L1610
 1089 	movel a3@,d0
 1090 	lsrl #4,d0
 1091 	moveq #15,d1
 1092 	andl a3@,d1
 1093 	moveq #16,d5
 1094 	subl d1,d5
 1095 	movel d5,d1
 1096 	movel #65535,d2
 1097 	asrl d1,d2
 1098 	andw d2,a3@(6,d0:l:2)
 1099 	movel a3,d0
 1100 	moveml a6@(-32),#0x3c3c
============ Listing of BitString.s ============	PAGE 21

 1101 	unlk a6
 1102 	rts
 1103 	.even
 1104 .globl _or__FP9BitStrRepN20
 1105 _or__FP9BitStrRepN20:
 1106 	link a6,#0
 1107 	moveml #0x3f3c,sp@-
 1108 	movel a6@(8),a3
 1109 	movel a6@(12),d5
 1110 	movel a6@(16),a4
 1111 	movel a3@,d4
 1112 	movel d5,a5
 1113 	movel a5@,d3
 1114 	movel d4,d1
 1115 	cmpl d4,d3
 1116 	jls L1615
 1117 	movel d3,d1
 1118 L1615:
 1119 	cmpl a3,a4
 1120 	seq d2
 1121 	moveq #1,d7
 1122 	andl d7,d2
 1123 	cmpl d5,a4
 1124 	seq d0
 1125 	moveq #1,d6
 1126 	andl d0,d6
 1127 	movel d1,sp@-
 1128 	movel a4,sp@-
 1129 	jbsr _BStr_resize__FP9BitStrRepi
 1130 	movel d0,a4
 1131 	lea a4@(6),a2
 1132 	tstl d2
 1133 	jeq L1616
 1134 	movel a2,a1
 1135 	jra L1617
 1136 L1616:
 1137 	lea a3@(6),a1
 1138 L1617:
 1139 	movel d4,d0
 1140 	lsrl #4,d0
 1141 	addql #1,d0
 1142 	lea a1@(d0:l:2),a5
 1143 	movel a5,d1
 1144 	tstl d6
 1145 	jeq L1619
 1146 	movel a2,a0
 1147 	jra L1620
 1148 L1619:
 1149 	movel d5,a0
 1150 	addqw #6,a0
 1151 L1620:
 1152 	movel d3,d0
 1153 	lsrl #4,d0
 1154 	addql #1,d0
 1155 	lea a0@(d0:l:2),a3
============ Listing of BitString.s ============	PAGE 22

 1156 	cmpl d4,d3
 1157 	jcs L1643
 1158 	cmpl a1,d1
 1159 	jls L1642
 1160 L1625:
 1161 	movew a1@+,d7
 1162 	orw a0@+,d7
 1163 	movew d7,a2@+
 1164 	cmpl a1,d1
 1165 	jhi L1625
 1166 L1642:
 1167 	cmpl a2,a0
 1168 	jeq L1630
 1169 	cmpl a0,a3
 1170 	jls L1630
 1171 L1629:
 1172 	movew a0@+,a2@+
 1173 	cmpl a0,a3
 1174 	jhi L1629
 1175 	jra L1630
 1176 L1633:
 1177 	movew a1@+,d7
 1178 	orw a0@+,d7
 1179 	movew d7,a2@+
 1180 L1643:
 1181 	cmpl a0,a3
 1182 	jhi L1633
 1183 	cmpl a2,a1
 1184 	jeq L1630
 1185 	cmpl a1,d1
 1186 	jls L1630
 1187 L1637:
 1188 	movew a1@+,a2@+
 1189 	cmpl a1,d1
 1190 	jhi L1637
 1191 L1630:
 1192 	movel a4@,d0
 1193 	lsrl #4,d0
 1194 	moveq #15,d1
 1195 	andl a4@,d1
 1196 	moveq #16,d7
 1197 	subl d1,d7
 1198 	movel d7,d1
 1199 	movel #65535,d2
 1200 	asrl d1,d2
 1201 	andw d2,a4@(6,d0:l:2)
 1202 	movel a4,d0
 1203 	moveml a6@(-40),#0x3cfc
 1204 	unlk a6
 1205 	rts
 1206 	.even
 1207 .globl _xor__FP9BitStrRepN20
 1208 _xor__FP9BitStrRepN20:
 1209 	link a6,#-4
 1210 	moveml #0x3f3c,sp@-
============ Listing of BitString.s ============	PAGE 23

 1211 	movel a6@(8),a3
 1212 	movel a6@(12),d5
 1213 	movel a6@(16),a4
 1214 	movel a3@,d4
 1215 	movel d5,a5
 1216 	movel a5@,d3
 1217 	movel d4,d1
 1218 	cmpl d4,d3
 1219 	jls L1645
 1220 	movel d3,d1
 1221 L1645:
 1222 	cmpl a3,a4
 1223 	seq d2
 1224 	moveq #1,d7
 1225 	andl d7,d2
 1226 	cmpl d5,a4
 1227 	seq d0
 1228 	moveq #1,d7
 1229 	andl d0,d7
 1230 	movel d7,a6@(-4)
 1231 	movel d1,sp@-
 1232 	movel a4,sp@-
 1233 	jbsr _BStr_resize__FP9BitStrRepi
 1234 	movel d0,a4
 1235 	lea a4@(6),a2
 1236 	tstl d2
 1237 	jeq L1646
 1238 	movel a2,a1
 1239 	jra L1647
 1240 L1646:
 1241 	lea a3@(6),a1
 1242 L1647:
 1243 	movel d4,d0
 1244 	lsrl #4,d0
 1245 	addql #1,d0
 1246 	lea a1@(d0:l:2),a5
 1247 	movel a5,d1
 1248 	tstl a6@(-4)
 1249 	jeq L1649
 1250 	movel a2,a0
 1251 	jra L1650
 1252 L1649:
 1253 	movel d5,a0
 1254 	addqw #6,a0
 1255 L1650:
 1256 	movel d3,d0
 1257 	lsrl #4,d0
 1258 	addql #1,d0
 1259 	lea a0@(d0:l:2),a3
 1260 	cmpl d4,d3
 1261 	jcs L1673
 1262 	cmpl a1,d1
 1263 	jls L1672
 1264 L1655:
 1265 	movew a1@+,d7
============ Listing of BitString.s ============	PAGE 24

 1266 	movew a0@+,d6
 1267 	eorw d6,d7
 1268 	movew d7,a2@+
 1269 	cmpl a1,d1
 1270 	jhi L1655
 1271 L1672:
 1272 	cmpl a2,a0
 1273 	jeq L1660
 1274 	cmpl a0,a3
 1275 	jls L1660
 1276 L1659:
 1277 	movew a0@+,a2@+
 1278 	cmpl a0,a3
 1279 	jhi L1659
 1280 	jra L1660
 1281 L1663:
 1282 	movew a1@+,d7
 1283 	movew a0@+,d6
 1284 	eorw d6,d7
 1285 	movew d7,a2@+
 1286 L1673:
 1287 	cmpl a0,a3
 1288 	jhi L1663
 1289 	cmpl a2,a1
 1290 	jeq L1660
 1291 	cmpl a1,d1
 1292 	jls L1660
 1293 L1667:
 1294 	movew a1@+,a2@+
 1295 	cmpl a1,d1
 1296 	jhi L1667
 1297 L1660:
 1298 	movel a4@,d0
 1299 	lsrl #4,d0
 1300 	moveq #15,d1
 1301 	andl a4@,d1
 1302 	moveq #16,d7
 1303 	subl d1,d7
 1304 	movel d7,d1
 1305 	movel #65535,d2
 1306 	asrl d1,d2
 1307 	andw d2,a4@(6,d0:l:2)
 1308 	movel a4,d0
 1309 	moveml a6@(-44),#0x3cfc
 1310 	unlk a6
 1311 	rts
 1312 	.even
 1313 .globl _difference__FP9BitStrRepN20
 1314 _difference__FP9BitStrRepN20:
 1315 	link a6,#0
 1316 	moveml #0x3f3c,sp@-
 1317 	movel a6@(8),a3
 1318 	movel a6@(12),d4
 1319 	movel a6@(16),a4
 1320 	movel a3@,d3
============ Listing of BitString.s ============	PAGE 25

 1321 	movel d4,a5
 1322 	movel a5@,d6
 1323 	cmpl a3,d4
 1324 	seq d2
 1325 	moveq #1,d7
 1326 	andl d7,d2
 1327 	cmpl d4,a4
 1328 	seq d0
 1329 	moveq #1,d5
 1330 	andl d0,d5
 1331 	movel d3,sp@-
 1332 	movel a4,sp@-
 1333 	jbsr _BStr_resize__FP9BitStrRepi
 1334 	movel d0,a4
 1335 	lea a4@(6),a2
 1336 	tstl d2
 1337 	jeq L1675
 1338 	movel a2,a0
 1339 	jra L1676
 1340 L1675:
 1341 	lea a3@(6),a0
 1342 L1676:
 1343 	movel d3,d0
 1344 	lsrl #4,d0
 1345 	addql #1,d0
 1346 	lea a0@(d0:l:2),a5
 1347 	movel a5,d1
 1348 	tstl d5
 1349 	jeq L1678
 1350 	movel a2,a1
 1351 	jra L1679
 1352 L1678:
 1353 	movel d4,a1
 1354 	addqw #6,a1
 1355 L1679:
 1356 	movel d6,d0
 1357 	lsrl #4,d0
 1358 	addql #1,d0
 1359 	lea a1@(d0:l:2),a3
 1360 	cmpl d3,d6
 1361 	jcs L1697
 1362 	cmpl a0,d1
 1363 	jls L1685
 1364 L1684:
 1365 	movew a1@+,d0
 1366 	notw d0
 1367 	andw a0@+,d0
 1368 	movew d0,a2@+
 1369 	cmpl a0,d1
 1370 	jhi L1684
 1371 	jra L1685
 1372 L1688:
 1373 	movew a1@+,d0
 1374 	notw d0
 1375 	andw a0@+,d0
============ Listing of BitString.s ============	PAGE 26

 1376 	movew d0,a2@+
 1377 L1697:
 1378 	cmpl a1,a3
 1379 	jhi L1688
 1380 	cmpl a2,a0
 1381 	jeq L1685
 1382 	cmpl a0,d1
 1383 	jls L1685
 1384 L1692:
 1385 	movew a0@+,a2@+
 1386 	cmpl a0,d1
 1387 	jhi L1692
 1388 L1685:
 1389 	movel a4@,d0
 1390 	lsrl #4,d0
 1391 	moveq #15,d1
 1392 	andl a4@,d1
 1393 	moveq #16,d7
 1394 	subl d1,d7
 1395 	movel d7,d1
 1396 	movel #65535,d2
 1397 	asrl d1,d2
 1398 	andw d2,a4@(6,d0:l:2)
 1399 	movel a4,d0
 1400 	moveml a6@(-40),#0x3cfc
 1401 	unlk a6
 1402 	rts
 1403 	.even
 1404 .globl _concat__FP9BitStrRepN20
 1405 _concat__FP9BitStrRepN20:
 1406 	link a6,#0
 1407 	moveml #0x3e3c,sp@-
 1408 	movel a6@(8),a3
 1409 	movel a6@(12),a5
 1410 	movel a6@(16),a2
 1411 	movel a3@,d3
 1412 	movel a5@,d5
 1413 	movel d3,d2
 1414 	addl d5,d2
 1415 	cmpl a3,a2
 1416 	seq d0
 1417 	moveq #1,d4
 1418 	andl d0,d4
 1419 	cmpl a5,a2
 1420 	seq d0
 1421 	btst #0,d0
 1422 	jeq L1699
 1423 	tstl d4
 1424 	jeq L1700
 1425 	movel d2,sp@-
 1426 	movel a2,sp@-
 1427 	jbsr _BStr_resize__FP9BitStrRepi
 1428 	movel d0,a2
 1429 	movel d3,sp@-
 1430 	addql #6,d0
============ Listing of BitString.s ============	PAGE 27

 1431 	movel d0,sp@-
 1432 	movel d5,sp@-
 1433 	clrl sp@-
 1434 	movel d0,sp@-
 1435 	jra L1711
 1436 L1700:
 1437 	movel a5,sp@-
 1438 	clrl sp@-
 1439 	jbsr _BStr_copy__FP9BitStrRepT0
 1440 	movel d0,a5
 1441 	movel d2,sp@-
 1442 	movel a2,sp@-
 1443 	jbsr _BStr_resize__FP9BitStrRepi
 1444 	movel d0,a2
 1445 	lea a3@(6),a4
 1446 	lea a2@(6),a3
 1447 	addw #16,sp
 1448 	cmpl a4,a3
 1449 	jeq L1702
 1450 	movel d3,d2
 1451 	lsrl #4,d2
 1452 	tstl d2
 1453 	jle L1704
 1454 	movel d2,d6
 1455 	asll #1,d6
 1456 	movel d6,sp@-
 1457 	movel a3,sp@-
 1458 	movel a4,sp@-
 1459 	jbsr _bcopy
 1460 	addw #12,sp
 1461 L1704:
 1462 	moveq #15,d0
 1463 	andl d3,d0
 1464 	movel #65535,d1
 1465 	asll d0,d1
 1466 	movew d1,d0
 1467 	notw d0
 1468 	andw a4@(d2:l:2),d0
 1469 	andw a3@(d2:l:2),d1
 1470 	orw d1,d0
 1471 	movew d0,a3@(d2:l:2)
 1472 L1702:
 1473 	movel d3,sp@-
 1474 	pea a2@(6)
 1475 	movel d5,sp@-
 1476 	clrl sp@-
 1477 	pea a5@(6)
 1478 	jbsr _bit_transfer__FPUsiiT0i
 1479 	movel a5,sp@-
 1480 	jbsr ___builtin_delete
 1481 	jra L1705
 1482 L1699:
 1483 	movel d2,sp@-
 1484 	movel a2,sp@-
 1485 	jbsr _BStr_resize__FP9BitStrRepi
============ Listing of BitString.s ============	PAGE 28

 1486 	movel d0,a2
 1487 	addqw #8,sp
 1488 	tstl d4
 1489 	jne L1706
 1490 	lea a3@(6),a4
 1491 	lea a2@(6),a3
 1492 	cmpl a4,a3
 1493 	jeq L1706
 1494 	movel d3,d2
 1495 	lsrl #4,d2
 1496 	tstl d2
 1497 	jle L1709
 1498 	movel d2,d6
 1499 	asll #1,d6
 1500 	movel d6,sp@-
 1501 	movel a3,sp@-
 1502 	movel a4,sp@-
 1503 	jbsr _bcopy
 1504 	addw #12,sp
 1505 L1709:
 1506 	moveq #15,d0
 1507 	andl d3,d0
 1508 	movel #65535,d1
 1509 	asll d0,d1
 1510 	movew d1,d0
 1511 	notw d0
 1512 	andw a4@(d2:l:2),d0
 1513 	andw a3@(d2:l:2),d1
 1514 	orw d1,d0
 1515 	movew d0,a3@(d2:l:2)
 1516 L1706:
 1517 	movel d3,sp@-
 1518 	pea a2@(6)
 1519 	movel d5,sp@-
 1520 	clrl sp@-
 1521 	pea a5@(6)
 1522 L1711:
 1523 	jbsr _bit_transfer__FPUsiiT0i
 1524 L1705:
 1525 	movel a2@,d0
 1526 	lsrl #4,d0
 1527 	moveq #15,d1
 1528 	andl a2@,d1
 1529 	moveq #16,d6
 1530 	subl d1,d6
 1531 	movel d6,d1
 1532 	movel #65535,d2
 1533 	asrl d1,d2
 1534 	andw d2,a2@(6,d0:l:2)
 1535 	movel a2,d0
 1536 	moveml a6@(-36),#0x3c7c
 1537 	unlk a6
 1538 	rts
 1539 	.even
 1540 .globl _concat__FP9BitStrRepiT0
============ Listing of BitString.s ============	PAGE 29

 1541 _concat__FP9BitStrRepiT0:
 1542 	link a6,#0
 1543 	moveml #0x3838,sp@-
 1544 	movel a6@(8),a3
 1545 	movel a6@(16),a2
 1546 	movel a3@,d3
 1547 	cmpl a3,a2
 1548 	seq d2
 1549 	moveq #1,d4
 1550 	andl d4,d2
 1551 	movel d3,a0
 1552 	pea a0@(1)
 1553 	movel a2,sp@-
 1554 	jbsr _BStr_resize__FP9BitStrRepi
 1555 	movel d0,a2
 1556 	addqw #8,sp
 1557 	tstl d2
 1558 	jne L1713
 1559 	lea a3@(6),a4
 1560 	lea a2@(6),a3
 1561 	cmpl a4,a3
 1562 	jeq L1713
 1563 	movel d3,d2
 1564 	lsrl #4,d2
 1565 	tstl d2
 1566 	jle L1716
 1567 	movel d2,d4
 1568 	asll #1,d4
 1569 	movel d4,sp@-
 1570 	movel a3,sp@-
 1571 	movel a4,sp@-
 1572 	jbsr _bcopy
 1573 L1716:
 1574 	moveq #15,d0
 1575 	andl d3,d0
 1576 	movel #65535,d1
 1577 	asll d0,d1
 1578 	movew d1,d0
 1579 	notw d0
 1580 	andw a4@(d2:l:2),d0
 1581 	andw a3@(d2:l:2),d1
 1582 	orw d1,d0
 1583 	movew d0,a3@(d2:l:2)
 1584 L1713:
 1585 	tstl a6@(12)
 1586 	jeq L1717
 1587 	movel d3,d0
 1588 	lsrl #4,d0
 1589 	moveq #15,d1
 1590 	andl d3,d1
 1591 	moveq #1,d2
 1592 	asll d1,d2
 1593 	orw d2,a2@(6,d0:l:2)
 1594 	jra L1720
 1595 L1717:
============ Listing of BitString.s ============	PAGE 30

 1596 	movel d3,d0
 1597 	lsrl #4,d0
 1598 	moveq #15,d2
 1599 	andl d3,d2
 1600 	moveq #1,d1
 1601 	asll d2,d1
 1602 	notw d1
 1603 	andw d1,a2@(6,d0:l:2)
 1604 L1720:
 1605 	movel a2@,d0
 1606 	lsrl #4,d0
 1607 	moveq #15,d1
 1608 	andl a2@,d1
 1609 	moveq #16,d4
 1610 	subl d1,d4
 1611 	movel d4,d1
 1612 	movel #65535,d2
 1613 	asrl d1,d2
 1614 	andw d2,a2@(6,d0:l:2)
 1615 	movel a2,d0
 1616 	moveml a6@(-24),#0x1c1c
 1617 	unlk a6
 1618 	rts
 1619 	.even
 1620 .globl _rshift__FP9BitStrRepiT0
 1621 _rshift__FP9BitStrRepiT0:
 1622 	link a6,#0
 1623 	moveml #0x3e30,sp@-
 1624 	movel a6@(8),a3
 1625 	movel a6@(12),d4
 1626 	movel a6@(16),a2
 1627 	cmpl a3,a2
 1628 	seq d0
 1629 	moveq #1,d5
 1630 	andl d0,d5
 1631 	movel a3@,d3
 1632 	movel d3,d2
 1633 	addl d4,d2
 1634 	tstl d4
 1635 	jne L1725
 1636 	movel a3,sp@-
 1637 	movel a2,sp@-
 1638 	jbsr _BStr_copy__FP9BitStrRepT0
 1639 	movel d0,a2
 1640 	jra L1726
 1641 L1725:
 1642 	tstl d2
 1643 	jgt L1727
 1644 	clrl sp@-
 1645 	movel a2,sp@-
 1646 	jbsr _BStr_resize__FP9BitStrRepi
 1647 	movel d0,a2
 1648 	clrl a2@
 1649 	clrw a2@(6)
 1650 	jra L1726
============ Listing of BitString.s ============	PAGE 31

 1651 L1727:
 1652 	tstl d4
 1653 	jle L1729
 1654 	movel d2,sp@-
 1655 	movel a2,sp@-
 1656 	jbsr _BStr_resize__FP9BitStrRepi
 1657 	movel d0,a2
 1658 	addqw #8,sp
 1659 	tstl d5
 1660 	jne L1738
 1661 	movel a3,d0
 1662 L1738:
 1663 	addql #6,d0
 1664 	movel d4,sp@-
 1665 	movel a2,d2
 1666 	addql #6,d2
 1667 	movel d2,sp@-
 1668 	movel d3,sp@-
 1669 	clrl sp@-
 1670 	movel d0,sp@-
 1671 	jbsr _bit_transfer__FPUsiiT0i
 1672 	movel d2,a3
 1673 	addw #20,sp
 1674 	movel d4,d2
 1675 	lsrl #4,d2
 1676 	tstl d2
 1677 	jle L1733
 1678 	movel d2,d6
 1679 	asll #1,d6
 1680 	movel d6,sp@-
 1681 	movel a3,sp@-
 1682 	jbsr _bzero
 1683 L1733:
 1684 	moveq #15,d0
 1685 	andl d4,d0
 1686 	movel #65535,d1
 1687 	asll d0,d1
 1688 	andw d1,a3@(d2:l:2)
 1689 	jra L1726
 1690 L1729:
 1691 	tstl d5
 1692 	jeq L1735
 1693 	movel d3,sp@-
 1694 	movel a2,sp@-
 1695 	jbsr _BStr_resize__FP9BitStrRepi
 1696 	movel d0,a2
 1697 	movel d2,a2@
 1698 	clrl sp@-
 1699 	addql #6,d0
 1700 	movel d0,sp@-
 1701 	movel d3,sp@-
 1702 	negl d4
 1703 	movel d4,sp@-
 1704 	movel d0,sp@-
 1705 	jra L1739
============ Listing of BitString.s ============	PAGE 32

 1706 L1735:
 1707 	movel d2,sp@-
 1708 	movel a2,sp@-
 1709 	jbsr _BStr_resize__FP9BitStrRepi
 1710 	movel d0,a2
 1711 	clrl sp@-
 1712 	pea a2@(6)
 1713 	movel d3,sp@-
 1714 	negl d4
 1715 	movel d4,sp@-
 1716 	pea a3@(6)
 1717 L1739:
 1718 	jbsr _bit_transfer__FPUsiiT0i
 1719 L1726:
 1720 	movel a2@,d0
 1721 	lsrl #4,d0
 1722 	moveq #15,d1
 1723 	andl a2@,d1
 1724 	moveq #16,d6
 1725 	subl d1,d6
 1726 	movel d6,d1
 1727 	movel #65535,d2
 1728 	asrl d1,d2
 1729 	andw d2,a2@(6,d0:l:2)
 1730 	movel a2,d0
 1731 	moveml a6@(-28),#0xc7c
 1732 	unlk a6
 1733 	rts
 1734 LC3:
 1735 	.ascii "Illegal bit index\0"
 1736 	.even
 1737 .globl _set__9BitStringi
 1738 _set__9BitStringi:
 1739 	link a6,#0
 1740 	moveml #0x2020,sp@-
 1741 	movel a6@(8),a2
 1742 	movel a6@(12),d2
 1743 	jge L1741
 1744 	pea LC3
 1745 	movel a2,sp@-
 1746 	jbsr _error__9BitStringPc
 1747 	addqw #8,sp
 1748 L1741:
 1749 	movel a2@,a0
 1750 	cmpl a0@,d2
 1751 	jcs L1742
 1752 	movel d2,a1
 1753 	pea a1@(1)
 1754 	movel a0,sp@-
 1755 	jbsr _BStr_resize__FP9BitStrRepi
 1756 	movel d0,a2@
 1757 L1742:
 1758 	movel d2,d0
 1759 	lsrl #4,d0
 1760 	moveq #15,d1
============ Listing of BitString.s ============	PAGE 33

 1761 	andl d2,d1
 1762 	movel a2@,a0
 1763 	moveq #1,d2
 1764 	asll d1,d2
 1765 	orw d2,a0@(6,d0:l:2)
 1766 	moveml a6@(-8),#0x404
 1767 	unlk a6
 1768 	rts
 1769 	.even
 1770 .globl _assign__9BitStringii
 1771 _assign__9BitStringii:
 1772 	link a6,#0
 1773 	moveml #0x3020,sp@-
 1774 	movel a6@(8),a2
 1775 	movel a6@(12),d2
 1776 	jge L1746
 1777 	pea LC3
 1778 	movel a2,sp@-
 1779 	jbsr _error__9BitStringPc
 1780 	addqw #8,sp
 1781 L1746:
 1782 	movel a2@,a0
 1783 	cmpl a0@,d2
 1784 	jcs L1747
 1785 	movel d2,a1
 1786 	pea a1@(1)
 1787 	movel a0,sp@-
 1788 	jbsr _BStr_resize__FP9BitStrRepi
 1789 	movel d0,a2@
 1790 L1747:
 1791 	tstl a6@(16)
 1792 	jeq L1748
 1793 	movel d2,d0
 1794 	lsrl #4,d0
 1795 	moveq #15,d1
 1796 	andl d2,d1
 1797 	movel a2@,a0
 1798 	moveq #1,d2
 1799 	asll d1,d2
 1800 	orw d2,a0@(6,d0:l:2)
 1801 	jra L1751
 1802 L1748:
 1803 	movel d2,d0
 1804 	lsrl #4,d0
 1805 	moveq #15,d3
 1806 	andl d3,d2
 1807 	movel a2@,a0
 1808 	moveq #1,d1
 1809 	asll d2,d1
 1810 	notw d1
 1811 	andw d1,a0@(6,d0:l:2)
 1812 L1751:
 1813 	moveml a6@(-12),#0x40c
 1814 	unlk a6
 1815 	rts
============ Listing of BitString.s ============	PAGE 34

 1816 	.even
 1817 .globl _clear__9BitStringi
 1818 _clear__9BitStringi:
 1819 	link a6,#0
 1820 	moveml #0x3020,sp@-
 1821 	movel a6@(8),a2
 1822 	movel a6@(12),d2
 1823 	jge L1755
 1824 	pea LC3
 1825 	movel a2,sp@-
 1826 	jbsr _error__9BitStringPc
 1827 	addqw #8,sp
 1828 L1755:
 1829 	movel a2@,a0
 1830 	cmpl a0@,d2
 1831 	jcs L1756
 1832 	movel d2,a1
 1833 	pea a1@(1)
 1834 	movel a0,sp@-
 1835 	jbsr _BStr_resize__FP9BitStrRepi
 1836 	movel d0,a2@
 1837 L1756:
 1838 	movel d2,d0
 1839 	lsrl #4,d0
 1840 	moveq #15,d3
 1841 	andl d3,d2
 1842 	movel a2@,a0
 1843 	moveq #1,d1
 1844 	asll d2,d1
 1845 	notw d1
 1846 	andw d1,a0@(6,d0:l:2)
 1847 	moveml a6@(-12),#0x40c
 1848 	unlk a6
 1849 	rts
 1850 	.even
 1851 .globl _clear__9BitString
 1852 _clear__9BitString:
 1853 	link a6,#0
 1854 	moveml #0x3820,sp@-
 1855 	movel a6@(8),a0
 1856 	cmpl #__nilBitStrRep,a0@
 1857 	jeq L1759
 1858 	movel a0@,a2
 1859 	addqw #6,a2
 1860 	movel a0@,a0
 1861 	movel a0@,d3
 1862 	movel d3,d2
 1863 	lsrl #4,d2
 1864 	tstl d2
 1865 	jle L1762
 1866 	movel d2,d4
 1867 	asll #1,d4
 1868 	movel d4,sp@-
 1869 	movel a2,sp@-
 1870 	jbsr _bzero
============ Listing of BitString.s ============	PAGE 35

 1871 L1762:
 1872 	moveq #15,d0
 1873 	andl d3,d0
 1874 	movel #65535,d1
 1875 	asll d0,d1
 1876 	andw d1,a2@(d2:l:2)
 1877 L1759:
 1878 	moveml a6@(-16),#0x41c
 1879 	unlk a6
 1880 	rts
 1881 	.even
 1882 .globl _set__9BitString
 1883 _set__9BitString:
 1884 	link a6,#0
 1885 	moveml #0x3020,sp@-
 1886 	movel a6@(8),a2
 1887 	cmpl #__nilBitStrRep,a2@
 1888 	jeq L1763
 1889 	movel a2@,a1
 1890 	addqw #6,a1
 1891 	movel a2@,a0
 1892 	movel a0@,d0
 1893 	lsrl #4,d0
 1894 	addql #1,d0
 1895 	lea a1@(d0:l:2),a0
 1896 	cmpl a1,a0
 1897 	jls L1770
 1898 L1768:
 1899 	movew #65535,a1@+
 1900 	cmpl a1,a0
 1901 	jhi L1768
 1902 L1770:
 1903 	movel a2@,a0
 1904 	movel a0@,d0
 1905 	lsrl #4,d0
 1906 	moveq #15,d1
 1907 	andl a0@,d1
 1908 	moveq #16,d3
 1909 	subl d1,d3
 1910 	movel d3,d1
 1911 	movel #65535,d2
 1912 	asrl d1,d2
 1913 	andw d2,a0@(6,d0:l:2)
 1914 L1763:
 1915 	moveml a6@(-12),#0x40c
 1916 	unlk a6
 1917 	rts
 1918 	.even
 1919 .globl _invert__9BitStringi
 1920 _invert__9BitStringi:
 1921 	link a6,#0
 1922 	moveml #0x2020,sp@-
 1923 	movel a6@(8),a2
 1924 	movel a6@(12),d2
 1925 	jge L1772
============ Listing of BitString.s ============	PAGE 36

 1926 	pea LC3
 1927 	movel a2,sp@-
 1928 	jbsr _error__9BitStringPc
 1929 	addqw #8,sp
 1930 L1772:
 1931 	movel a2@,a0
 1932 	cmpl a0@,d2
 1933 	jcs L1773
 1934 	movel d2,a1
 1935 	pea a1@(1)
 1936 	movel a0,sp@-
 1937 	jbsr _BStr_resize__FP9BitStrRepi
 1938 	movel d0,a2@
 1939 L1773:
 1940 	movel d2,d0
 1941 	lsrl #4,d0
 1942 	moveq #15,d1
 1943 	andl d2,d1
 1944 	movel a2@,a0
 1945 	moveq #1,d2
 1946 	asll d1,d2
 1947 	eorw d2,a0@(6,d0:l:2)
 1948 	moveml a6@(-8),#0x404
 1949 	unlk a6
 1950 	rts
 1951 	.even
 1952 .globl _set__9BitStringii
 1953 _set__9BitStringii:
 1954 	link a6,#0
 1955 	moveml #0x3e30,sp@-
 1956 	movel a6@(8),a2
 1957 	movel a6@(12),d3
 1958 	movel a6@(16),d2
 1959 	tstl d3
 1960 	jlt L1778
 1961 	cmpl d3,d2
 1962 	jge L1777
 1963 L1778:
 1964 	pea LC3
 1965 	movel a2,sp@-
 1966 	jbsr _error__9BitStringPc
 1967 	addqw #8,sp
 1968 L1777:
 1969 	movel a2@,a0
 1970 	cmpl a0@,d2
 1971 	jcs L1779
 1972 	movel d2,a3
 1973 	pea a3@(1)
 1974 	movel a0,sp@-
 1975 	jbsr _BStr_resize__FP9BitStrRepi
 1976 	movel d0,a2@
 1977 L1779:
 1978 	movel d3,d4
 1979 	lsrl #4,d4
 1980 	moveq #15,d1
============ Listing of BitString.s ============	PAGE 37

 1981 	andl d3,d1
 1982 	movel d2,d5
 1983 	lsrl #4,d5
 1984 	moveq #15,d3
 1985 	andl d2,d3
 1986 	movel d4,d0
 1987 	asll #1,d0
 1988 	addql #6,d0
 1989 	movel d0,a0
 1990 	addl a2@,a0
 1991 	tstl d1
 1992 	jgt L1785
 1993 	movel #65535,d2
 1994 	jra L1784
 1995 L1785:
 1996 	movel #65535,d6
 1997 	asll d1,d6
 1998 	movel d6,d2
 1999 L1784:
 2000 	moveq #15,d0
 2001 	subl d3,d0
 2002 	tstl d0
 2003 	jgt L1788
 2004 	movel #65535,d1
 2005 	jra L1787
 2006 L1788:
 2007 	movel #65535,d6
 2008 	asrl d0,d6
 2009 	movel d6,d1
 2010 L1787:
 2011 	cmpl d5,d4
 2012 	jne L1790
 2013 	movew d2,d0
 2014 	andw d1,d0
 2015 	orw d0,a0@
 2016 	jra L1791
 2017 L1790:
 2018 	orw d2,a0@+
 2019 	movel d5,d0
 2020 	asll #1,d0
 2021 	addql #6,d0
 2022 	movel d0,a1
 2023 	addl a2@,a1
 2024 	orw d1,a1@
 2025 	cmpl a0,a1
 2026 	jls L1791
 2027 L1794:
 2028 	movew #65535,a0@+
 2029 	cmpl a0,a1
 2030 	jhi L1794
 2031 L1791:
 2032 	moveml a6@(-28),#0xc7c
 2033 	unlk a6
 2034 	rts
 2035 	.even
============ Listing of BitString.s ============	PAGE 38

 2036 .globl _clear__9BitStringii
 2037 _clear__9BitStringii:
 2038 	link a6,#0
 2039 	moveml #0x3c30,sp@-
 2040 	movel a6@(8),a2
 2041 	movel a6@(12),d3
 2042 	movel a6@(16),d2
 2043 	tstl d3
 2044 	jlt L1798
 2045 	cmpl d3,d2
 2046 	jge L1797
 2047 L1798:
 2048 	pea LC3
 2049 	movel a2,sp@-
 2050 	jbsr _error__9BitStringPc
 2051 	addqw #8,sp
 2052 L1797:
 2053 	movel a2@,a0
 2054 	cmpl a0@,d2
 2055 	jcs L1799
 2056 	movel d2,a3
 2057 	pea a3@(1)
 2058 	movel a0,sp@-
 2059 	jbsr _BStr_resize__FP9BitStrRepi
 2060 	movel d0,a2@
 2061 L1799:
 2062 	movel d3,d4
 2063 	lsrl #4,d4
 2064 	moveq #15,d1
 2065 	andl d3,d1
 2066 	movel d2,d3
 2067 	lsrl #4,d3
 2068 	moveq #15,d5
 2069 	andl d5,d2
 2070 	movel d4,d0
 2071 	asll #1,d0
 2072 	addql #6,d0
 2073 	movel d0,a0
 2074 	addl a2@,a0
 2075 	tstl d1
 2076 	jgt L1805
 2077 	movel #65535,d1
 2078 	jra L1804
 2079 L1805:
 2080 	movel #65535,d5
 2081 	asll d1,d5
 2082 	movel d5,d1
 2083 L1804:
 2084 	moveq #15,d0
 2085 	subl d2,d0
 2086 	tstl d0
 2087 	jgt L1808
 2088 	movel #65535,d2
 2089 	jra L1807
 2090 L1808:
============ Listing of BitString.s ============	PAGE 39

 2091 	movel #65535,d5
 2092 	asrl d0,d5
 2093 	movel d5,d2
 2094 L1807:
 2095 	cmpl d3,d4
 2096 	jne L1810
 2097 	movew d1,d0
 2098 	andw d2,d0
 2099 	notw d0
 2100 	andw d0,a0@
 2101 	jra L1811
 2102 L1810:
 2103 	movew d1,d0
 2104 	notw d0
 2105 	andw d0,a0@+
 2106 	movel d3,d0
 2107 	asll #1,d0
 2108 	addql #6,d0
 2109 	movel d0,a1
 2110 	addl a2@,a1
 2111 	movew d2,d0
 2112 	notw d0
 2113 	andw d0,a1@
 2114 	cmpl a0,a1
 2115 	jls L1811
 2116 L1814:
 2117 	clrw a0@+
 2118 	cmpl a0,a1
 2119 	jhi L1814
 2120 L1811:
 2121 	moveml a6@(-24),#0xc3c
 2122 	unlk a6
 2123 	rts
 2124 	.even
 2125 .globl _invert__9BitStringii
 2126 _invert__9BitStringii:
 2127 	link a6,#0
 2128 	moveml #0x3e30,sp@-
 2129 	movel a6@(8),a2
 2130 	movel a6@(12),d3
 2131 	movel a6@(16),d2
 2132 	tstl d3
 2133 	jlt L1818
 2134 	cmpl d3,d2
 2135 	jge L1817
 2136 L1818:
 2137 	pea LC3
 2138 	movel a2,sp@-
 2139 	jbsr _error__9BitStringPc
 2140 	addqw #8,sp
 2141 L1817:
 2142 	movel a2@,a0
 2143 	cmpl a0@,d2
 2144 	jcs L1819
 2145 	movel d2,a3
============ Listing of BitString.s ============	PAGE 40

 2146 	pea a3@(1)
 2147 	movel a0,sp@-
 2148 	jbsr _BStr_resize__FP9BitStrRepi
 2149 	movel d0,a2@
 2150 L1819:
 2151 	movel d3,d4
 2152 	lsrl #4,d4
 2153 	moveq #15,d1
 2154 	andl d3,d1
 2155 	movel d2,d5
 2156 	lsrl #4,d5
 2157 	moveq #15,d3
 2158 	andl d2,d3
 2159 	movel d4,d0
 2160 	asll #1,d0
 2161 	addql #6,d0
 2162 	movel d0,a0
 2163 	addl a2@,a0
 2164 	tstl d1
 2165 	jgt L1825
 2166 	movel #65535,d2
 2167 	jra L1824
 2168 L1825:
 2169 	movel #65535,d6
 2170 	asll d1,d6
 2171 	movel d6,d2
 2172 L1824:
 2173 	moveq #15,d0
 2174 	subl d3,d0
 2175 	tstl d0
 2176 	jgt L1828
 2177 	movel #65535,d1
 2178 	jra L1827
 2179 L1828:
 2180 	movel #65535,d6
 2181 	asrl d0,d6
 2182 	movel d6,d1
 2183 L1827:
 2184 	cmpl d5,d4
 2185 	jne L1830
 2186 	movew d2,d0
 2187 	andw d1,d0
 2188 	eorw d0,a0@
 2189 	jra L1831
 2190 L1830:
 2191 	eorw d2,a0@+
 2192 	movel d5,d0
 2193 	asll #1,d0
 2194 	addql #6,d0
 2195 	movel d0,a1
 2196 	addl a2@,a1
 2197 	eorw d1,a1@
 2198 	cmpl a0,a1
 2199 	jls L1831
 2200 L1834:
============ Listing of BitString.s ============	PAGE 41

 2201 	notw a0@+
 2202 	cmpl a0,a1
 2203 	jhi L1834
 2204 L1831:
 2205 	moveml a6@(-28),#0xc7c
 2206 	unlk a6
 2207 	rts
 2208 	.even
 2209 .globl _test__9BitStringii
 2210 _test__9BitStringii:
 2211 	link a6,#0
 2212 	moveml #0x3e00,sp@-
 2213 	movel a6@(8),a1
 2214 	movel a6@(12),d0
 2215 	movel a6@(16),d1
 2216 	tstl d0
 2217 	jlt L1860
 2218 	cmpl d0,d1
 2219 	jlt L1860
 2220 	movel a1@,a0
 2221 	cmpl a0@,d0
 2222 	jcc L1860
 2223 	movel d0,d5
 2224 	lsrl #4,d5
 2225 	moveq #15,d2
 2226 	andl d0,d2
 2227 	movel d1,d3
 2228 	lsrl #4,d3
 2229 	moveq #15,d4
 2230 	andl d1,d4
 2231 	movel a1@,a0
 2232 	cmpl a0@,d1
 2233 	jcs L1843
 2234 	movel a0@,d0
 2235 	subql #1,d0
 2236 	movel d0,d3
 2237 	lsrl #4,d3
 2238 	moveq #15,d4
 2239 	andl d0,d4
 2240 L1843:
 2241 	movel d5,d0
 2242 	asll #1,d0
 2243 	addql #6,d0
 2244 	movel d0,a0
 2245 	addl a1@,a0
 2246 	tstl d2
 2247 	jgt L1847
 2248 	movel #65535,d1
 2249 	jra L1846
 2250 L1847:
 2251 	movel #65535,d6
 2252 	asll d2,d6
 2253 	movel d6,d1
 2254 L1846:
 2255 	moveq #15,d0
============ Listing of BitString.s ============	PAGE 42

 2256 	subl d4,d0
 2257 	tstl d0
 2258 	jgt L1850
 2259 	movel #65535,d2
 2260 	jra L1849
 2261 L1850:
 2262 	movel #65535,d6
 2263 	asrl d0,d6
 2264 	movel d6,d2
 2265 L1849:
 2266 	cmpl d3,d5
 2267 	jne L1852
 2268 	movew d1,d0
 2269 	andw a0@,d0
 2270 	andw d2,d0
 2271 	sne d0
 2272 	moveq #1,d6
 2273 	andl d6,d0
 2274 	jra L1836
 2275 L1852:
 2276 	movew d1,d0
 2277 	andw a0@+,d0
 2278 	jne L1861
 2279 	movel d3,d0
 2280 	asll #1,d0
 2281 	addql #6,d0
 2282 	addl a1@,d0
 2283 	movel d0,a1
 2284 	movew d2,d0
 2285 	andw a1@,d0
 2286 	jne L1861
 2287 	jra L1856
 2288 L1859:
 2289 	tstw a0@+
 2290 	jeq L1856
 2291 L1861:
 2292 	moveq #1,d0
 2293 	jra L1836
 2294 L1856:
 2295 	cmpl a0,a1
 2296 	jhi L1859
 2297 L1860:
 2298 	clrl d0
 2299 L1836:
 2300 	moveml a6@(-20),#0x7c
 2301 	unlk a6
 2302 	rts
 2303 	.even
 2304 .globl _next__9BitStringii
 2305 _next__9BitStringii:
 2306 	link a6,#0
 2307 	moveml #0x3e20,sp@-
 2308 	movel a6@(8),a1
 2309 	movel a6@(12),d2
 2310 	addql #1,d2
============ Listing of BitString.s ============	PAGE 43

 2311 	movel a1@,a0
 2312 	cmpl a0@,d2
 2313 	jcc L1910
 2314 	moveq #15,d0
 2315 	andl d2,d0
 2316 	movel a1@,a0
 2317 	movel a0@,d1
 2318 	lsrl #4,d1
 2319 	movel d1,d5
 2320 	addql #1,d5
 2321 	movel d2,d3
 2322 	lsrl #4,d3
 2323 	movel a1@,a2
 2324 	addqw #6,a2
 2325 	clrl d1
 2326 	movew a2@(d3:l:2),d1
 2327 	asrl d0,d1
 2328 	movew d1,d2
 2329 	movel d0,d1
 2330 	tstl a6@(16)
 2331 	jeq L1867
 2332 	moveq #15,d6
 2333 	cmpl d1,d6
 2334 	jlt L1875
 2335 	movel d3,d0
 2336 	asll #4,d0
 2337 L1872:
 2338 	tstw d2
 2339 	jeq L1875
 2340 	btst #0,d2
 2341 	jne L1915
 2342 	lsrw #1,d2
 2343 	addql #1,d1
 2344 	moveq #15,d6
 2345 	cmpl d1,d6
 2346 	jge L1872
 2347 	jra L1875
 2348 L1881:
 2349 	movew a2@(d3:l:2),d2
 2350 	clrl d1
 2351 	movel d3,d0
 2352 	asll #4,d0
 2353 L1880:
 2354 	tstw d2
 2355 	jeq L1875
 2356 	btst #0,d2
 2357 	jne L1915
 2358 	lsrw #1,d2
 2359 	addql #1,d1
 2360 	moveq #15,d6
 2361 	cmpl d1,d6
 2362 	jge L1880
 2363 L1875:
 2364 	addql #1,d3
 2365 	cmpl d3,d5
============ Listing of BitString.s ============	PAGE 44

 2366 	jgt L1881
 2367 	jra L1910
 2368 L1867:
 2369 	movel a1@,a0
 2370 	moveq #15,d4
 2371 	andl a0@,d4
 2372 	movel d5,d0
 2373 	subql #1,d0
 2374 	cmpl d3,d0
 2375 	jne L1884
 2376 	cmpl d1,d4
 2377 	jle L1910
 2378 	movel d3,d0
 2379 	asll #4,d0
 2380 L1889:
 2381 	btst #0,d2
 2382 	jeq L1915
 2383 	lsrw #1,d2
 2384 	addql #1,d1
 2385 	cmpl d1,d4
 2386 	jgt L1889
 2387 	jra L1910
 2388 L1884:
 2389 	moveq #15,d6
 2390 	cmpl d1,d6
 2391 	jlt L1911
 2392 	movel d3,d0
 2393 	asll #4,d0
 2394 L1894:
 2395 	btst #0,d2
 2396 	jeq L1915
 2397 	lsrw #1,d2
 2398 	addql #1,d1
 2399 	moveq #15,d6
 2400 	cmpl d1,d6
 2401 	jge L1894
 2402 L1911:
 2403 	addql #1,d3
 2404 	subql #1,d5
 2405 	jra L1895
 2406 L1904:
 2407 	movew a2@(d3:l:2),d2
 2408 	cmpw #65535,d2
 2409 	jeq L1897
 2410 	clrl d1
 2411 	movel d3,d0
 2412 	asll #4,d0
 2413 L1903:
 2414 	btst #0,d2
 2415 	jeq L1915
 2416 	lsrw #1,d2
 2417 	addql #1,d1
 2418 	moveq #15,d6
 2419 	cmpl d1,d6
 2420 	jge L1903
============ Listing of BitString.s ============	PAGE 45

 2421 L1897:
 2422 	addql #1,d3
 2423 L1895:
 2424 	cmpl d3,d5
 2425 	jgt L1904
 2426 	movew a2@(d3:l:2),d2
 2427 	clrl d1
 2428 	cmpl d1,d4
 2429 	jle L1910
 2430 	movel d3,d0
 2431 	asll #4,d0
 2432 L1909:
 2433 	btst #0,d2
 2434 	jne L1908
 2435 L1915:
 2436 	addl d1,d0
 2437 	jra L1862
 2438 L1908:
 2439 	lsrw #1,d2
 2440 	addql #1,d1
 2441 	cmpl d1,d4
 2442 	jgt L1909
 2443 L1910:
 2444 	moveq #-1,d0
 2445 L1862:
 2446 	moveml a6@(-24),#0x47c
 2447 	unlk a6
 2448 	rts
 2449 	.even
 2450 .globl _previous__9BitStringii
 2451 _previous__9BitStringii:
 2452 	link a6,#0
 2453 	moveml #0x3c00,sp@-
 2454 	movel a6@(8),a0
 2455 	movel a6@(12),d0
 2456 	subql #1,d0
 2457 	jmi L1955
 2458 	movel d0,d1
 2459 	lsrl #4,d1
 2460 	moveq #15,d4
 2461 	andl d0,d4
 2462 	movel a0@,a1
 2463 	addqw #6,a1
 2464 	movel a0@,a0
 2465 	cmpl a0@,d0
 2466 	jcs L1920
 2467 	movel a0@,d0
 2468 	subql #1,d0
 2469 	movel d0,d1
 2470 	lsrl #4,d1
 2471 	moveq #15,d4
 2472 	andl d0,d4
 2473 L1920:
 2474 	movel d1,d3
 2475 	movew a1@(d3:l:2),d2
============ Listing of BitString.s ============	PAGE 46

 2476 	movel d4,d1
 2477 	moveq #1,d0
 2478 	asll d1,d0
 2479 	movew d0,d5
 2480 	tstl a6@(16)
 2481 	jeq L1923
 2482 	tstl d1
 2483 	jlt L1925
 2484 	movel d3,d4
 2485 	asll #4,d4
 2486 L1928:
 2487 	tstw d2
 2488 	jeq L1925
 2489 	movew d2,d0
 2490 	andw d5,d0
 2491 	jne L1959
 2492 	lslw #1,d2
 2493 	subql #1,d1
 2494 	jpl L1928
 2495 L1925:
 2496 	movew #32768,d5
 2497 	jra L1931
 2498 L1937:
 2499 	movew a1@(d3:l:2),d2
 2500 	moveq #15,d1
 2501 	movel d3,d4
 2502 	asll #4,d4
 2503 L1936:
 2504 	tstw d2
 2505 	jeq L1931
 2506 	movew d2,d0
 2507 	andw d5,d0
 2508 	jne L1959
 2509 	lslw #1,d2
 2510 	subql #1,d1
 2511 	jpl L1936
 2512 L1931:
 2513 	subql #1,d3
 2514 	jpl L1937
 2515 	jra L1955
 2516 L1923:
 2517 	cmpw #65535,d2
 2518 	jeq L1939
 2519 	tstl d1
 2520 	jlt L1939
 2521 	movel d3,d4
 2522 	asll #4,d4
 2523 L1944:
 2524 	movew d2,d0
 2525 	andw d5,d0
 2526 	jeq L1959
 2527 	lslw #1,d2
 2528 	subql #1,d1
 2529 	jpl L1944
 2530 L1939:
============ Listing of BitString.s ============	PAGE 47

 2531 	movew #32768,d5
 2532 	jra L1947
 2533 L1954:
 2534 	movew a1@(d3:l:2),d2
 2535 	cmpw #65535,d2
 2536 	jeq L1947
 2537 	moveq #15,d1
 2538 	movel d3,d4
 2539 	asll #4,d4
 2540 L1953:
 2541 	movew d2,d0
 2542 	andw d5,d0
 2543 	jne L1952
 2544 L1959:
 2545 	movel d4,d0
 2546 	addl d1,d0
 2547 	jra L1916
 2548 L1952:
 2549 	lslw #1,d2
 2550 	subql #1,d1
 2551 	jpl L1953
 2552 L1947:
 2553 	subql #1,d3
 2554 	jpl L1954
 2555 L1955:
 2556 	moveq #-1,d0
 2557 L1916:
 2558 	moveml a6@(-16),#0x3c
 2559 	unlk a6
 2560 	rts
 2561 	.even
 2562 .globl _search__9BitStringiiPUsii
 2563 _search__9BitStringiiPUsii:
 2564 	link a6,#-72
 2565 	moveml #0x3f3c,sp@-
 2566 	movel a6@(12),d3
 2567 	movel a6@(16),d6
 2568 	movel a6@(24),d2
 2569 	movel a6@(28),d0
 2570 	movel a6@(8),a2
 2571 	movel a2@,a0
 2572 	addqw #6,a0
 2573 	movel d0,d1
 2574 	subl d2,d1
 2575 	movel d0,d5
 2576 	subql #1,d5
 2577 	tstl d3
 2578 	slt d0
 2579 	btst #0,d0
 2580 	jeq L1961
 2581 	clrl a6@(-4)
 2582 	movel d6,d0
 2583 	addl d3,d0
 2584 	movel d0,d3
 2585 	subl d1,d3
============ Listing of BitString.s ============	PAGE 48

 2586 	addql #1,d3
 2587 	tstl d1
 2588 	jeq L2078
 2589 	tstl d2
 2590 	jlt L2079
 2591 	tstl d5
 2592 	jlt L2079
 2593 	tstl d3
 2594 	jlt L2079
 2595 	cmpl d3,d6
 2596 	jle L2079
 2597 	movel d3,d7
 2598 	lsrl #4,d7
 2599 	movel d7,a6@(-66)
 2600 	moveq #15,d6
 2601 	andl d3,d6
 2602 	movel d2,d7
 2603 	lsrl #4,d7
 2604 	movel d7,a5
 2605 	moveq #15,d7
 2606 	andl d7,d2
 2607 	movel d2,a3
 2608 	lsrl #4,d0
 2609 	movel d0,a4
 2610 	cmpl a6@(-66),a4
 2611 	jle L1971
 2612 	clrl d0
 2613 	movel a6@(-66),d7
 2614 	movew a0@(d7:l:2),d0
 2615 	asrl d6,d0
 2616 	clrl d1
 2617 	movew a0@(2,d7:l:2),d1
 2618 	moveq #16,d2
 2619 	subl d6,d2
 2620 	asll d2,d1
 2621 	orl d1,d0
 2622 	jra L2080
 2623 L1971:
 2624 	clrl d0
 2625 	movel a6@(-66),d7
 2626 	movew a0@(d7:l:2),d0
 2627 	asrl d6,d0
 2628 L2080:
 2629 	movel d0,a6@(-70)
 2630 	movel d5,d7
 2631 	lsrl #4,d7
 2632 	movel d7,a1
 2633 	moveq #15,d7
 2634 	andl d7,d5
 2635 	movel d5,a6@(-8)
 2636 	cmpl a5,a1
 2637 	jle L1976
 2638 	clrl d0
 2639 	movel a6@(20),a2
 2640 	movew a2@(a5:l:2),d0
============ Listing of BitString.s ============	PAGE 49

 2641 	movel a3,d7
 2642 	asrl d7,d0
 2643 	clrl d1
 2644 	movew a2@(2,a5:l:2),d1
 2645 	moveq #16,d2
 2646 	subl a3,d2
 2647 	asll d2,d1
 2648 	orl d1,d0
 2649 	jra L2081
 2650 L1976:
 2651 	clrl d0
 2652 	movel a6@(20),a2
 2653 	movew a2@(a5:l:2),d0
 2654 	movel a3,d7
 2655 	asrl d7,d0
 2656 L2081:
 2657 	movel d0,a6@(-12)
 2658 	cmpl a5,a1
 2659 	jne L1978
 2660 	moveq #15,d0
 2661 	subl a6@(-8),d0
 2662 	tstl d0
 2663 	jle L2082
 2664 	jra L1985
 2665 L1978:
 2666 	movel a5,d0
 2667 	addql #1,d0
 2668 	cmpl d0,a1
 2669 	jne L1983
 2670 	moveq #16,d0
 2671 	addl a6@(-8),d0
 2672 	subl a3,d0
 2673 	addql #1,d0
 2674 	moveq #15,d7
 2675 	subl d0,d7
 2676 	movel d7,d0
 2677 	jgt L1985
 2678 L2082:
 2679 	movel #65535,a6@(-14)
 2680 	jra L1982
 2681 L1985:
 2682 	movel #65535,d7
 2683 	asrl d0,d7
 2684 	movel d7,a6@(-14)
 2685 	jra L1982
 2686 L1983:
 2687 	movew #65535,a6@(-12)
 2688 L1982:
 2689 	movel d3,a6@(-72)
 2690 	moveq #16,d7
 2691 	subl a3,d7
 2692 	movel d7,a6@(-20)
 2693 	moveq #15,d7
 2694 	subl a6@(-8),d7
 2695 	movel d7,a6@(-24)
============ Listing of BitString.s ============	PAGE 50

 2696 	movel #65535,a6@(-28)
 2697 	movel a6@(-28),d7
 2698 	movel a6@(-24),d4
 2699 	asrl d4,d7
 2700 	movel d7,a6@(-28)
 2701 L1988:
 2702 	movew a6@(-68),d0
 2703 	andw a6@(-12),d0
 2704 	cmpw a6@(-10),d0
 2705 	jne L1991
 2706 	movel a6@(-66),d5
 2707 	movel a5,d3
 2708 	clrl d2
 2709 	moveq #16,d7
 2710 	subl d6,d7
 2711 	movel d7,a6@(-16)
 2712 L1992:
 2713 	addql #1,d3
 2714 	cmpl d3,a1
 2715 	jlt L2055
 2716 	addql #1,d5
 2717 	cmpl d5,a4
 2718 	jlt L2055
 2719 	jle L1998
 2720 	movew a0@(d5:l:2),d2
 2721 	movel d2,d0
 2722 	asrl d6,d0
 2723 	movew a0@(2,d5:l:2),d2
 2724 	movel d2,d1
 2725 	movel a6@(-16),d7
 2726 	asll d7,d1
 2727 	orl d1,d0
 2728 	jra L1997
 2729 L1998:
 2730 	movew a0@(d5:l:2),d2
 2731 	movel d2,d7
 2732 	asrl d6,d7
 2733 	movel d7,d0
 2734 L1997:
 2735 	movew d0,a6@(-68)
 2736 	cmpl d3,a1
 2737 	jle L2001
 2738 	movel a6@(20),a2
 2739 	movew a2@(d3:l:2),d2
 2740 	movel d2,d0
 2741 	movel a3,d7
 2742 	asrl d7,d0
 2743 	movew a2@(2,d3:l:2),d2
 2744 	movel d2,d1
 2745 	movel a6@(-20),d7
 2746 	asll d7,d1
 2747 	orl d1,d0
 2748 	jra L2000
 2749 L2001:
 2750 	movel a6@(20),a2
============ Listing of BitString.s ============	PAGE 51

 2751 	movew a2@(d3:l:2),d2
 2752 	movel d2,d7
 2753 	movel a3,d4
 2754 	asrl d4,d7
 2755 	movel d7,d0
 2756 L2000:
 2757 	movew d0,d1
 2758 	cmpl d3,a1
 2759 	jne L2003
 2760 	tstl a6@(-24)
 2761 	jle L2086
 2762 	movel a6@(-28),d0
 2763 	jra L2009
 2764 L2003:
 2765 	movel d3,d0
 2766 	addql #1,d0
 2767 	cmpl d0,a1
 2768 	jne L2007
 2769 	moveq #16,d0
 2770 	addl a6@(-8),d0
 2771 	subl a3,d0
 2772 	addql #1,d0
 2773 	moveq #15,d7
 2774 	subl d0,d7
 2775 	movel d7,d0
 2776 	jgt L2010
 2777 L2086:
 2778 	movel #65535,d0
 2779 	jra L2009
 2780 L2010:
 2781 	movel #65535,d7
 2782 	asrl d0,d7
 2783 	movel d7,d0
 2784 L2009:
 2785 	andw d0,a6@(-68)
 2786 L2007:
 2787 	cmpw a6@(-68),d1
 2788 	jeq L1992
 2789 L1991:
 2790 	subql #1,a6@(-72)
 2791 	movel a6@(-72),d7
 2792 	cmpl a6@(-4),d7
 2793 	jlt L2079
 2794 	subql #1,d6
 2795 	jpl L2014
 2796 	moveq #15,d6
 2797 	subql #1,a6@(-66)
 2798 L2014:
 2799 	cmpl a6@(-66),a4
 2800 	jle L2016
 2801 	clrl d0
 2802 	movel a6@(-66),d7
 2803 	movew a0@(d7:l:2),d0
 2804 	asrl d6,d0
 2805 	clrl d1
============ Listing of BitString.s ============	PAGE 52

 2806 	movew a0@(2,d7:l:2),d1
 2807 	moveq #16,d2
 2808 	subl d6,d2
 2809 	asll d2,d1
 2810 	orl d1,d0
 2811 	jra L2015
 2812 L2016:
 2813 	clrl d0
 2814 	movel a6@(-66),d7
 2815 	movew a0@(d7:l:2),d0
 2816 	asrl d6,d0
 2817 L2015:
 2818 	movew d0,a6@(-68)
 2819 	jra L1988
 2820 L1961:
 2821 	movel d6,d7
 2822 	subql #1,d7
 2823 	movel d7,a6@(-32)
 2824 	tstl d1
 2825 	jne L2019
 2826 L2078:
 2827 	movel d3,d0
 2828 	jra L1960
 2829 L2019:
 2830 	tstl d2
 2831 	jlt L2079
 2832 	tstl d5
 2833 	jlt L2079
 2834 	tstl d3
 2835 	jlt L2079
 2836 	cmpl d3,d6
 2837 	jle L2079
 2838 	movel d3,d7
 2839 	lsrl #4,d7
 2840 	movel d7,a1
 2841 	moveq #15,d6
 2842 	andl d3,d6
 2843 	movel d2,d7
 2844 	lsrl #4,d7
 2845 	movel d7,a6@(-36)
 2846 	moveq #15,d7
 2847 	andl d7,d2
 2848 	movel d2,a3
 2849 	movel a6@(-32),d7
 2850 	lsrl #4,d7
 2851 	movel d7,a5
 2852 	cmpl a1,a5
 2853 	jle L2028
 2854 	clrl d0
 2855 	movew a0@(a1:l:2),d0
 2856 	asrl d6,d0
 2857 	clrl d1
 2858 	movew a0@(2,a1:l:2),d1
 2859 	moveq #16,d2
 2860 	subl d6,d2
============ Listing of BitString.s ============	PAGE 53

 2861 	asll d2,d1
 2862 	orl d1,d0
 2863 	jra L2083
 2864 L2028:
 2865 	clrl d0
 2866 	movew a0@(a1:l:2),d0
 2867 	asrl d6,d0
 2868 L2083:
 2869 	movel d0,a6@(-40)
 2870 	cmpl a1,a5
 2871 	jgt L2030
 2872 	movew #0,a4
 2873 	jra L2031
 2874 L2030:
 2875 	clrl d0
 2876 	movew a0@(2,a1:l:2),d0
 2877 	asrl d6,d0
 2878 	movew d0,a4
 2879 L2031:
 2880 	movel d5,d7
 2881 	lsrl #4,d7
 2882 	movel d7,a6@(-66)
 2883 	moveq #15,d7
 2884 	andl d7,d5
 2885 	movel d5,a6@(-42)
 2886 	movel a6@(-36),d7
 2887 	cmpl a6@(-66),d7
 2888 	jge L2035
 2889 	clrl d0
 2890 	movel a6@(20),a2
 2891 	movew a2@(d7:l:2),d0
 2892 	movel a3,d7
 2893 	asrl d7,d0
 2894 	clrl d1
 2895 	movel a6@(-36),d7
 2896 	movew a2@(2,d7:l:2),d1
 2897 	moveq #16,d2
 2898 	subl a3,d2
 2899 	asll d2,d1
 2900 	orl d1,d0
 2901 	jra L2084
 2902 L2035:
 2903 	clrl d0
 2904 	movel a6@(20),a2
 2905 	movel a6@(-36),d7
 2906 	movew a2@(d7:l:2),d0
 2907 	movel a3,d7
 2908 	asrl d7,d0
 2909 L2084:
 2910 	movel d0,a6@(-46)
 2911 	movel a6@(-36),d7
 2912 	cmpl a6@(-66),d7
 2913 	jne L2037
 2914 	moveq #15,d0
 2915 	subl a6@(-42),d0
============ Listing of BitString.s ============	PAGE 54

 2916 	tstl d0
 2917 	jle L2085
 2918 	jra L2044
 2919 L2037:
 2920 	movel a6@(-36),d0
 2921 	addql #1,d0
 2922 	cmpl a6@(-66),d0
 2923 	jne L2042
 2924 	moveq #16,d0
 2925 	addl a6@(-42),d0
 2926 	subl a3,d0
 2927 	addql #1,d0
 2928 	moveq #15,d7
 2929 	subl d0,d7
 2930 	movel d7,d0
 2931 	jgt L2044
 2932 L2085:
 2933 	movel #65535,a6@(-48)
 2934 	jra L2041
 2935 L2044:
 2936 	movel #65535,d7
 2937 	asrl d0,d7
 2938 	movel d7,a6@(-48)
 2939 	jra L2041
 2940 L2042:
 2941 	movew #65535,a6@(-46)
 2942 L2041:
 2943 	movel d3,a6@(-72)
 2944 	moveq #16,d7
 2945 	subl a3,d7
 2946 	movel d7,a6@(-54)
 2947 	moveq #15,d7
 2948 	subl a6@(-42),d7
 2949 	movel d7,a6@(-58)
 2950 	movel #65535,a6@(-62)
 2951 	movel a6@(-62),d7
 2952 	movel a6@(-58),d4
 2953 	asrl d4,d7
 2954 	movel d7,a6@(-62)
 2955 L2047:
 2956 	movew a6@(-38),d0
 2957 	andw a6@(-46),d0
 2958 	cmpw a6@(-44),d0
 2959 	jne L2050
 2960 	movel a1,d5
 2961 	movel a6@(-36),d3
 2962 	clrl d2
 2963 	moveq #16,d7
 2964 	subl d6,d7
 2965 	movel d7,a6@(-50)
 2966 L2051:
 2967 	addql #1,d3
 2968 	cmpl a6@(-66),d3
 2969 	jgt L2055
 2970 	addql #1,d5
============ Listing of BitString.s ============	PAGE 55

 2971 	cmpl d5,a5
 2972 	jge L2054
 2973 L2055:
 2974 	movel a6@(-72),d0
 2975 	jra L1960
 2976 L2054:
 2977 	cmpl d5,a5
 2978 	jle L2057
 2979 	movew a0@(d5:l:2),d2
 2980 	movel d2,d0
 2981 	asrl d6,d0
 2982 	movew a0@(2,d5:l:2),d2
 2983 	movel d2,d1
 2984 	movel a6@(-50),d7
 2985 	asll d7,d1
 2986 	orl d1,d0
 2987 	jra L2056
 2988 L2057:
 2989 	movew a0@(d5:l:2),d2
 2990 	movel d2,d7
 2991 	asrl d6,d7
 2992 	movel d7,d0
 2993 L2056:
 2994 	movew d0,a6@(-68)
 2995 	cmpl a6@(-66),d3
 2996 	jge L2060
 2997 	movel a6@(20),a2
 2998 	movew a2@(d3:l:2),d2
 2999 	movel d2,d0
 3000 	movel a3,d7
 3001 	asrl d7,d0
 3002 	movew a2@(2,d3:l:2),d2
 3003 	movel d2,d1
 3004 	movel a6@(-54),d7
 3005 	asll d7,d1
 3006 	orl d1,d0
 3007 	jra L2059
 3008 L2060:
 3009 	movel a6@(20),a2
 3010 	movew a2@(d3:l:2),d2
 3011 	movel d2,d7
 3012 	movel a3,d4
 3013 	asrl d4,d7
 3014 	movel d7,d0
 3015 L2059:
 3016 	movew d0,d1
 3017 	cmpl a6@(-66),d3
 3018 	jne L2062
 3019 	tstl a6@(-58)
 3020 	jle L2087
 3021 	movel a6@(-62),d0
 3022 	jra L2068
 3023 L2062:
 3024 	movel d3,d0
 3025 	addql #1,d0
============ Listing of BitString.s ============	PAGE 56

 3026 	cmpl a6@(-66),d0
 3027 	jne L2066
 3028 	moveq #16,d0
 3029 	addl a6@(-42),d0
 3030 	subl a3,d0
 3031 	addql #1,d0
 3032 	moveq #15,d7
 3033 	subl d0,d7
 3034 	movel d7,d0
 3035 	jgt L2069
 3036 L2087:
 3037 	movel #65535,d0
 3038 	jra L2068
 3039 L2069:
 3040 	movel #65535,d7
 3041 	asrl d0,d7
 3042 	movel d7,d0
 3043 L2068:
 3044 	andw d0,a6@(-68)
 3045 L2066:
 3046 	cmpw a6@(-68),d1
 3047 	jeq L2051
 3048 L2050:
 3049 	addql #1,a6@(-72)
 3050 	movel a6@(-72),d7
 3051 	cmpl a6@(-32),d7
 3052 	jle L2072
 3053 L2079:
 3054 	moveq #-1,d0
 3055 	jra L1960
 3056 L2072:
 3057 	addql #1,d6
 3058 	moveq #16,d7
 3059 	cmpl d6,d7
 3060 	jne L2073
 3061 	clrl d6
 3062 	addqw #1,a1
 3063 	movew a0@(a1:l:2),a6@(-38)
 3064 	cmpl a1,a5
 3065 	jgt L2074
 3066 	clrw d0
 3067 	jra L2075
 3068 L2074:
 3069 	movew a0@(2,a1:l:2),d0
 3070 L2075:
 3071 	movew d0,a4
 3072 	jra L2047
 3073 L2073:
 3074 	movew a6@(-38),d7
 3075 	lsrw #1,d7
 3076 	movew d7,a6@(-38)
 3077 	movew a4,d7
 3078 	btst #0,d7
 3079 	jeq L2077
 3080 	orw #32768,a6@(-38)
============ Listing of BitString.s ============	PAGE 57

 3081 L2077:
 3082 	movew a4,d7
 3083 	lsrw #1,d7
 3084 	movew d7,a4
 3085 	jra L2047
 3086 L1960:
 3087 	moveml a6@(-112),#0x3cfc
 3088 	unlk a6
 3089 	rts
 3090 	.even
 3091 .globl _search__10BitPatternPUsii
 3092 _search__10BitPatternPUsii:
 3093 	link a6,#-64
 3094 	moveml #0x3f3c,sp@-
 3095 	movel a6@(8),a0
 3096 	movel a6@(16),d4
 3097 	movel a6@(20),d2
 3098 	movel a0@,a5
 3099 	addqw #6,a5
 3100 	movel a0@(4),a4
 3101 	addqw #6,a4
 3102 	movel a0@,a1
 3103 	movel a1@,d1
 3104 	subql #1,d1
 3105 	movel a0@(4),a0
 3106 	movel a0@,d3
 3107 	subql #1,d3
 3108 	tstl d4
 3109 	slt d0
 3110 	btst #0,d0
 3111 	jeq L2089
 3112 	clrl a6@(-4)
 3113 	movel d2,d0
 3114 	addl d4,d0
 3115 	movel d0,d4
 3116 	subl d1,d4
 3117 	tstl d1
 3118 	jlt L2202
 3119 	tstl d4
 3120 	jlt L2203
 3121 	cmpl d4,d2
 3122 	jle L2203
 3123 	movel d4,d6
 3124 	lsrl #4,d6
 3125 	movel d6,a1
 3126 	moveq #15,d6
 3127 	andl d4,d6
 3128 	movel d6,a0
 3129 	lsrl #4,d0
 3130 	movel d0,a2
 3131 	lsrl #4,d3
 3132 	movel d3,a6@(-8)
 3133 	lsrl #4,d1
 3134 	movel d1,a6@(-12)
 3135 	cmpl a1,a2
============ Listing of BitString.s ============	PAGE 58

 3136 	jge L2099
 3137 	clrl a6@(-56)
 3138 	jra L2098
 3139 L2099:
 3140 	cmpl a1,a2
 3141 	jne L2101
 3142 	clrl d0
 3143 	movel a6@(12),a3
 3144 	movew a3@(a1:l:2),d0
 3145 	movel a0,d6
 3146 	asrl d6,d0
 3147 	jra L2204
 3148 L2101:
 3149 	clrl d0
 3150 	movel a6@(12),a3
 3151 	movew a3@(a1:l:2),d0
 3152 	movel a0,d6
 3153 	asrl d6,d0
 3154 	clrl d1
 3155 	movew a3@(2,a1:l:2),d1
 3156 	moveq #16,d2
 3157 	subl a0,d2
 3158 	asll d2,d1
 3159 	orl d1,d0
 3160 L2204:
 3161 	movel d0,a6@(-56)
 3162 L2098:
 3163 	clrl d2
 3164 	clrl d3
 3165 	cmpl a6@(-8),d2
 3166 	jle L2104
 3167 	clrl a6@(-16)
 3168 	jra L2103
 3169 L2104:
 3170 	cmpl a6@(-8),d2
 3171 	jne L2106
 3172 	clrl d0
 3173 	movew a4@(d2:l:2),d0
 3174 	asrl d3,d0
 3175 	jra L2205
 3176 L2106:
 3177 	clrl d0
 3178 	movew a4@(d2:l:2),d0
 3179 	asrl d3,d0
 3180 	clrl d1
 3181 	movew a4@(2,d2:l:2),d1
 3182 	moveq #16,d2
 3183 	subl d3,d2
 3184 	asll d2,d1
 3185 	orl d1,d0
 3186 L2205:
 3187 	movel d0,a6@(-16)
 3188 L2103:
 3189 	clrl d2
 3190 	clrl d3
============ Listing of BitString.s ============	PAGE 59

 3191 	cmpl a6@(-12),d2
 3192 	jle L2109
 3193 	clrl d0
 3194 	jra L2108
 3195 L2109:
 3196 	cmpl a6@(-12),d2
 3197 	jne L2111
 3198 	clrl d0
 3199 	movew a5@(d2:l:2),d0
 3200 	asrl d3,d0
 3201 	jra L2108
 3202 L2111:
 3203 	clrl d0
 3204 	movew a5@(d2:l:2),d0
 3205 	asrl d3,d0
 3206 	clrl d1
 3207 	movew a5@(2,d2:l:2),d1
 3208 	moveq #16,d2
 3209 	subl d3,d2
 3210 	asll d2,d1
 3211 	orl d1,d0
 3212 L2108:
 3213 	andw a6@(-14),d0
 3214 	movew d0,a6@(-16)
 3215 	movel d4,a6@(-62)
 3216 	moveq #16,d6
 3217 	clrl d7
 3218 	subl d7,d6
 3219 	movel d6,a6@(-20)
 3220 	clrl d5
 3221 L2113:
 3222 	movew a6@(-54),d0
 3223 	andw a6@(-14),d0
 3224 	cmpw a6@(-16),d0
 3225 	jne L2116
 3226 	movel a1,d4
 3227 	clrl d3
 3228 	clrl d2
 3229 	moveq #16,d6
 3230 	subl a0,d6
 3231 	movel d6,a6@(-24)
 3232 L2117:
 3233 	addql #1,d3
 3234 	cmpl a6@(-12),d3
 3235 	jgt L2121
 3236 	addql #1,d4
 3237 	cmpl d4,a2
 3238 	jge L2120
 3239 L2121:
 3240 	movel a6@(-62),d0
 3241 	jra L2088
 3242 L2120:
 3243 	cmpl a6@(-8),d3
 3244 	jle L2123
 3245 	clrl d0
============ Listing of BitString.s ============	PAGE 60

 3246 	jra L2122
 3247 L2123:
 3248 	cmpl a6@(-8),d3
 3249 	jne L2125
 3250 	movew a4@(d3:l:2),d2
 3251 	movel d2,d6
 3252 	clrl d7
 3253 	asrl d7,d6
 3254 	movel d6,d0
 3255 	jra L2122
 3256 L2125:
 3257 	movew a4@(d3:l:2),d2
 3258 	movel d2,d0
 3259 	clrl d6
 3260 	asrl d6,d0
 3261 	movew a4@(2,d3:l:2),d2
 3262 	movel d2,d1
 3263 	movel a6@(-20),d6
 3264 	asll d6,d1
 3265 	orl d1,d0
 3266 L2122:
 3267 	movew d0,a6@(-52)
 3268 	cmpl a6@(-12),d3
 3269 	jle L2128
 3270 	clrl d0
 3271 	jra L2127
 3272 L2128:
 3273 	cmpl a6@(-12),d3
 3274 	jne L2130
 3275 	movew a5@(d3:l:2),d2
 3276 	movel d2,d6
 3277 	clrl d7
 3278 	asrl d7,d6
 3279 	movel d6,d0
 3280 	jra L2127
 3281 L2130:
 3282 	movew a5@(d3:l:2),d2
 3283 	movel d2,d0
 3284 	clrl d6
 3285 	asrl d6,d0
 3286 	movew a5@(2,d3:l:2),d2
 3287 	movel d2,d1
 3288 	movel a6@(-20),d6
 3289 	asll d6,d1
 3290 	orl d1,d0
 3291 L2127:
 3292 	movew d0,a6@(-54)
 3293 	cmpl d4,a2
 3294 	jge L2133
 3295 	clrl d0
 3296 	jra L2132
 3297 L2133:
 3298 	cmpl d4,a2
 3299 	jne L2135
 3300 	movel a6@(12),a3
============ Listing of BitString.s ============	PAGE 61

 3301 	movew a3@(d4:l:2),d2
 3302 	movel d2,d6
 3303 	movel a0,d7
 3304 	asrl d7,d6
 3305 	movel d6,d0
 3306 	jra L2132
 3307 L2135:
 3308 	movel a6@(12),a3
 3309 	movew a3@(d4:l:2),d2
 3310 	movel d2,d0
 3311 	movel a0,d6
 3312 	asrl d6,d0
 3313 	movew a3@(2,d4:l:2),d2
 3314 	movel d2,d1
 3315 	movel a6@(-24),d6
 3316 	asll d6,d1
 3317 	orl d1,d0
 3318 L2132:
 3319 	andw a6@(-52),d0
 3320 	movew a6@(-54),d1
 3321 	andw a6@(-52),d1
 3322 	cmpw d0,d1
 3323 	jeq L2117
 3324 L2116:
 3325 	subql #1,a6@(-62)
 3326 	movel a6@(-62),d6
 3327 	cmpl a6@(-4),d6
 3328 	jlt L2203
 3329 	subqw #1,a0
 3330 	tstl a0
 3331 	jge L2139
 3332 	movew #15,a0
 3333 	subqw #1,a1
 3334 L2139:
 3335 	cmpl a1,a2
 3336 	jge L2141
 3337 	clrl d0
 3338 	jra L2140
 3339 L2141:
 3340 	cmpl a1,a2
 3341 	jne L2143
 3342 	movel a6@(12),a3
 3343 	movew a3@(a1:l:2),d5
 3344 	movel d5,d6
 3345 	movel a0,d7
 3346 	asrl d7,d6
 3347 	movel d6,d0
 3348 	jra L2140
 3349 L2143:
 3350 	movel a6@(12),a3
 3351 	movew a3@(a1:l:2),d5
 3352 	movel d5,d0
 3353 	movel a0,d6
 3354 	asrl d6,d0
 3355 	movew a3@(2,a1:l:2),d5
============ Listing of BitString.s ============	PAGE 62

 3356 	moveq #16,d1
 3357 	subl a0,d1
 3358 	movel d5,d6
 3359 	asll d1,d6
 3360 	movel d6,d1
 3361 	orl d1,d0
 3362 L2140:
 3363 	movew d0,a6@(-54)
 3364 	jra L2113
 3365 L2089:
 3366 	movel d2,d6
 3367 	subql #1,d6
 3368 	movel d6,a6@(-28)
 3369 	tstl d1
 3370 	jge L2146
 3371 L2202:
 3372 	movel d4,d0
 3373 	jra L2088
 3374 L2146:
 3375 	tstl d4
 3376 	jlt L2203
 3377 	cmpl d4,d2
 3378 	jle L2203
 3379 	movel d4,d6
 3380 	lsrl #4,d6
 3381 	movel d6,a0
 3382 	moveq #15,d6
 3383 	andl d4,d6
 3384 	movel d6,a6@(-58)
 3385 	movel a6@(-28),d6
 3386 	lsrl #4,d6
 3387 	movel d6,a6@(-62)
 3388 	lsrl #4,d3
 3389 	movel d3,a6@(-32)
 3390 	lsrl #4,d1
 3391 	movel d1,a6@(-36)
 3392 	cmpl a0,d6
 3393 	jge L2155
 3394 	clrl a6@(-40)
 3395 	jra L2154
 3396 L2155:
 3397 	cmpl a6@(-62),a0
 3398 	jne L2157
 3399 	clrl d0
 3400 	movel a6@(12),a3
 3401 	movew a3@(a0:l:2),d0
 3402 	movel a6@(-58),d6
 3403 	asrl d6,d0
 3404 	jra L2206
 3405 L2157:
 3406 	clrl d0
 3407 	movel a6@(12),a3
 3408 	movew a3@(a0:l:2),d0
 3409 	movel a6@(-58),d6
 3410 	asrl d6,d0
============ Listing of BitString.s ============	PAGE 63

 3411 	clrl d1
 3412 	movew a3@(2,a0:l:2),d1
 3413 	moveq #16,d2
 3414 	subl d6,d2
 3415 	asll d2,d1
 3416 	orl d1,d0
 3417 L2206:
 3418 	movel d0,a6@(-40)
 3419 L2154:
 3420 	clrl d2
 3421 	clrl d3
 3422 	cmpl a6@(-32),d2
 3423 	jle L2160
 3424 	clrl a6@(-42)
 3425 	jra L2159
 3426 L2160:
 3427 	cmpl a6@(-32),d2
 3428 	jne L2162
 3429 	clrl d0
 3430 	movew a4@(d2:l:2),d0
 3431 	asrl d3,d0
 3432 	jra L2207
 3433 L2162:
 3434 	clrl d0
 3435 	movew a4@(d2:l:2),d0
 3436 	asrl d3,d0
 3437 	clrl d1
 3438 	movew a4@(2,d2:l:2),d1
 3439 	moveq #16,d2
 3440 	subl d3,d2
 3441 	asll d2,d1
 3442 	orl d1,d0
 3443 L2207:
 3444 	movel d0,a6@(-42)
 3445 L2159:
 3446 	clrl d2
 3447 	clrl d3
 3448 	cmpl a6@(-36),d2
 3449 	jle L2165
 3450 	clrl d0
 3451 	jra L2164
 3452 L2165:
 3453 	cmpl a6@(-36),d2
 3454 	jne L2167
 3455 	clrl d0
 3456 	movew a5@(d2:l:2),d0
 3457 	asrl d3,d0
 3458 	jra L2164
 3459 L2167:
 3460 	clrl d0
 3461 	movew a5@(d2:l:2),d0
 3462 	asrl d3,d0
 3463 	clrl d1
 3464 	movew a5@(2,d2:l:2),d1
 3465 	moveq #16,d2
============ Listing of BitString.s ============	PAGE 64

 3466 	subl d3,d2
 3467 	asll d2,d1
 3468 	orl d1,d0
 3469 L2164:
 3470 	andw a6@(-40),d0
 3471 	movew d0,a6@(-42)
 3472 	cmpl a6@(-62),a0
 3473 	jlt L2169
 3474 	movew #0,a1
 3475 	jra L2170
 3476 L2169:
 3477 	clrl d0
 3478 	movel a6@(12),a3
 3479 	movew a3@(2,a0:l:2),d0
 3480 	movel a6@(-58),d6
 3481 	asrl d6,d0
 3482 	movew d0,a1
 3483 L2170:
 3484 	movel d4,a2
 3485 	moveq #16,d6
 3486 	clrl d7
 3487 	subl d7,d6
 3488 	movel d6,a6@(-46)
 3489 L2171:
 3490 	movew a6@(-38),d0
 3491 	andw a6@(-40),d0
 3492 	cmpw a6@(-42),d0
 3493 	jne L2174
 3494 	movel a0,d4
 3495 	clrl d3
 3496 	clrl d2
 3497 	moveq #16,d6
 3498 	subl a6@(-58),d6
 3499 	movel d6,a6@(-50)
 3500 L2175:
 3501 	addql #1,d3
 3502 	cmpl a6@(-36),d3
 3503 	jgt L2179
 3504 	addql #1,d4
 3505 	cmpl a6@(-62),d4
 3506 	jle L2178
 3507 L2179:
 3508 	movel a2,d0
 3509 	jra L2088
 3510 L2178:
 3511 	cmpl a6@(-32),d3
 3512 	jle L2181
 3513 	clrl d0
 3514 	jra L2180
 3515 L2181:
 3516 	cmpl a6@(-32),d3
 3517 	jne L2183
 3518 	movew a4@(d3:l:2),d2
 3519 	movel d2,d6
 3520 	clrl d7
============ Listing of BitString.s ============	PAGE 65

 3521 	asrl d7,d6
 3522 	movel d6,d0
 3523 	jra L2180
 3524 L2183:
 3525 	movew a4@(d3:l:2),d2
 3526 	movel d2,d0
 3527 	clrl d6
 3528 	asrl d6,d0
 3529 	movew a4@(2,d3:l:2),d2
 3530 	movel d2,d1
 3531 	movel a6@(-46),d6
 3532 	asll d6,d1
 3533 	orl d1,d0
 3534 L2180:
 3535 	movew d0,d5
 3536 	cmpl a6@(-36),d3
 3537 	jle L2186
 3538 	clrl d0
 3539 	jra L2185
 3540 L2186:
 3541 	cmpl a6@(-36),d3
 3542 	jne L2188
 3543 	movew a5@(d3:l:2),d2
 3544 	movel d2,d6
 3545 	clrl d7
 3546 	asrl d7,d6
 3547 	movel d6,d0
 3548 	jra L2185
 3549 L2188:
 3550 	movew a5@(d3:l:2),d2
 3551 	movel d2,d0
 3552 	clrl d6
 3553 	asrl d6,d0
 3554 	movew a5@(2,d3:l:2),d2
 3555 	movel d2,d1
 3556 	movel a6@(-46),d6
 3557 	asll d6,d1
 3558 	orl d1,d0
 3559 L2185:
 3560 	movew d0,a6@(-52)
 3561 	cmpl a6@(-62),d4
 3562 	jle L2191
 3563 	clrl d0
 3564 	jra L2190
 3565 L2191:
 3566 	cmpl a6@(-62),d4
 3567 	jne L2193
 3568 	movel a6@(12),a3
 3569 	movew a3@(d4:l:2),d2
 3570 	movel d2,d6
 3571 	movel a6@(-58),d7
 3572 	asrl d7,d6
 3573 	movel d6,d0
 3574 	jra L2190
 3575 L2193:
============ Listing of BitString.s ============	PAGE 66

 3576 	movel a6@(12),a3
 3577 	movew a3@(d4:l:2),d2
 3578 	movel d2,d0
 3579 	movel a6@(-58),d6
 3580 	asrl d6,d0
 3581 	movew a3@(2,d4:l:2),d2
 3582 	movel d2,d1
 3583 	movel a6@(-50),d6
 3584 	asll d6,d1
 3585 	orl d1,d0
 3586 L2190:
 3587 	andw d5,d0
 3588 	movew a6@(-52),d1
 3589 	andw d5,d1
 3590 	cmpw d0,d1
 3591 	jeq L2175
 3592 L2174:
 3593 	addqw #1,a2
 3594 	cmpl a6@(-28),a2
 3595 	jle L2196
 3596 L2203:
 3597 	moveq #-1,d0
 3598 	jra L2088
 3599 L2196:
 3600 	addql #1,a6@(-58)
 3601 	moveq #16,d6
 3602 	cmpl a6@(-58),d6
 3603 	jne L2197
 3604 	clrl a6@(-58)
 3605 	addqw #1,a0
 3606 	movel a6@(12),a3
 3607 	movew a3@(a0:l:2),a6@(-38)
 3608 	cmpl a6@(-62),a0
 3609 	jlt L2198
 3610 	clrw d0
 3611 	jra L2199
 3612 L2198:
 3613 	movel a6@(12),a3
 3614 	movew a3@(2,a0:l:2),d0
 3615 L2199:
 3616 	movew d0,a1
 3617 	jra L2171
 3618 L2197:
 3619 	movew a6@(-38),d6
 3620 	lsrw #1,d6
 3621 	movew d6,a6@(-38)
 3622 	movew a1,d6
 3623 	btst #0,d6
 3624 	jeq L2201
 3625 	orw #32768,a6@(-38)
 3626 L2201:
 3627 	movew a1,d6
 3628 	lsrw #1,d6
 3629 	movew d6,a1
 3630 	jra L2171
============ Listing of BitString.s ============	PAGE 67

 3631 L2088:
 3632 	moveml a6@(-104),#0x3cfc
 3633 	unlk a6
 3634 	rts
 3635 	.even
 3636 .globl _match__9BitStringiiiPUsii
 3637 _match__9BitStringiiiPUsii:
 3638 	link a6,#-24
 3639 	moveml #0x3f3c,sp@-
 3640 	movel a6@(12),d1
 3641 	movel a6@(16),d5
 3642 	movel a6@(20),a0
 3643 	movel a6@(24),a4
 3644 	movel a6@(28),a2
 3645 	movel a6@(32),d0
 3646 	movel a6@(8),a5
 3647 	movel a5@,a1
 3648 	addqw #6,a1
 3649 	movel d0,d3
 3650 	subl a2,d3
 3651 	movel d0,d4
 3652 	subql #1,d4
 3653 	tstl d1
 3654 	slt d0
 3655 	btst #0,d0
 3656 	jeq L2209
 3657 	movel d5,d2
 3658 	addl d1,d2
 3659 	movel d2,d1
 3660 	subl d3,d1
 3661 	addql #1,d1
 3662 	tstl a0
 3663 	jeq L2211
 3664 	tstl d1
 3665 	jeq L2211
 3666 L2246:
 3667 	clrl d0
 3668 	jra L2208
 3669 L2209:
 3670 	movel d5,d2
 3671 	subql #1,d2
 3672 	tstl a0
 3673 	jeq L2211
 3674 	movel d2,d0
 3675 	subl d1,d0
 3676 	cmpl d0,d4
 3677 	jne L2246
 3678 L2211:
 3679 	tstl d3
 3680 	jeq L2244
 3681 	tstl d4
 3682 	jlt L2246
 3683 	tstl d1
 3684 	jlt L2246
 3685 	cmpl d1,d5
============ Listing of BitString.s ============	PAGE 68

 3686 	jle L2246
 3687 	movel d1,d5
 3688 	lsrl #4,d5
 3689 	moveq #15,d7
 3690 	andl d7,d1
 3691 	movel d1,a6@(-4)
 3692 	movel a2,d3
 3693 	lsrl #4,d3
 3694 	moveq #15,d7
 3695 	movel a2,d6
 3696 	andl d6,d7
 3697 	movel d7,a6@(-16)
 3698 	lsrl #4,d2
 3699 	movel d2,a0
 3700 	movel d4,d7
 3701 	lsrl #4,d7
 3702 	movel d7,a6@(-20)
 3703 	moveq #15,d7
 3704 	andl d7,d4
 3705 	movel d4,a3
 3706 	clrl d2
 3707 	moveq #16,d7
 3708 	subl d1,d7
 3709 	movel d7,a6@(-8)
 3710 	moveq #16,d7
 3711 	subl a6@(-16),d7
 3712 	movel d7,a6@(-12)
 3713 	moveq #15,d7
 3714 	subl a3,d7
 3715 	movel d7,a2
 3716 	movel #65535,a6@(-24)
 3717 	movel a6@(-24),d7
 3718 	movel a2,d6
 3719 	asrl d6,d7
 3720 	movel d7,a6@(-24)
 3721 L2223:
 3722 	cmpl d5,a0
 3723 	jle L2227
 3724 	movew a1@(d5:l:2),d2
 3725 	movel d2,d0
 3726 	movel a6@(-4),d7
 3727 	asrl d7,d0
 3728 	movew a1@(2,d5:l:2),d2
 3729 	movel d2,d1
 3730 	movel a6@(-8),d7
 3731 	asll d7,d1
 3732 	orl d1,d0
 3733 	jra L2226
 3734 L2227:
 3735 	movew a1@(d5:l:2),d2
 3736 	movel d2,d7
 3737 	movel a6@(-4),d6
 3738 	asrl d6,d7
 3739 	movel d7,d0
 3740 L2226:
============ Listing of BitString.s ============	PAGE 69

 3741 	movew d0,d4
 3742 	cmpl a6@(-20),d3
 3743 	jge L2230
 3744 	movew a4@(d3:l:2),d2
 3745 	movel d2,d0
 3746 	movel a6@(-16),d7
 3747 	asrl d7,d0
 3748 	movew a4@(2,d3:l:2),d2
 3749 	movel d2,d1
 3750 	movel a6@(-12),d7
 3751 	asll d7,d1
 3752 	orl d1,d0
 3753 	jra L2229
 3754 L2230:
 3755 	movew a4@(d3:l:2),d2
 3756 	movel d2,d7
 3757 	movel a6@(-16),d6
 3758 	asrl d6,d7
 3759 	movel d7,d0
 3760 L2229:
 3761 	movew d0,d1
 3762 	cmpl a6@(-20),d3
 3763 	jne L2232
 3764 	tstl a2
 3765 	jle L2247
 3766 	movel a6@(-24),d0
 3767 	jra L2238
 3768 L2232:
 3769 	movel d3,d0
 3770 	addql #1,d0
 3771 	cmpl a6@(-20),d0
 3772 	jne L2236
 3773 	moveq #16,d0
 3774 	addl a3,d0
 3775 	subl a6@(-16),d0
 3776 	addql #1,d0
 3777 	moveq #15,d7
 3778 	subl d0,d7
 3779 	movel d7,d0
 3780 	jgt L2239
 3781 L2247:
 3782 	movel #65535,d0
 3783 	jra L2238
 3784 L2239:
 3785 	movel #65535,d7
 3786 	asrl d0,d7
 3787 	movel d7,d0
 3788 L2238:
 3789 	andw d0,d4
 3790 L2236:
 3791 	cmpw d4,d1
 3792 	jne L2246
 3793 	addql #1,d3
 3794 	cmpl a6@(-20),d3
 3795 	jgt L2244
============ Listing of BitString.s ============	PAGE 70

 3796 	addql #1,d5
 3797 	cmpl d5,a0
 3798 	jge L2223
 3799 L2244:
 3800 	moveq #1,d0
 3801 L2208:
 3802 	moveml a6@(-64),#0x3cfc
 3803 	unlk a6
 3804 	rts
 3805 	.even
 3806 .globl _match__10BitPatternPUsiii
 3807 _match__10BitPatternPUsiii:
 3808 	link a6,#-16
 3809 	moveml #0x3f3c,sp@-
 3810 	movel a6@(8),a0
 3811 	movel a6@(16),d1
 3812 	movel a6@(20),d3
 3813 	movel a6@(24),d4
 3814 	movel a0@,a5
 3815 	addqw #6,a5
 3816 	movel a0@,a1
 3817 	movel a1@,a3
 3818 	subqw #1,a3
 3819 	movel a0@(4),a4
 3820 	addqw #6,a4
 3821 	movel a0@(4),a0
 3822 	movel a0@,d7
 3823 	subql #1,d7
 3824 	tstl d1
 3825 	slt d0
 3826 	btst #0,d0
 3827 	jeq L2249
 3828 	movel d3,d2
 3829 	addl d1,d2
 3830 	movel d2,d1
 3831 	subl a3,d1
 3832 	tstl d4
 3833 	jeq L2251
 3834 	tstl d1
 3835 	jeq L2251
 3836 L2284:
 3837 	clrl d0
 3838 	jra L2248
 3839 L2249:
 3840 	movel d3,d2
 3841 	subql #1,d2
 3842 	tstl d4
 3843 	jeq L2251
 3844 	movel d2,d0
 3845 	subl d1,d0
 3846 	cmpl d0,a3
 3847 	jne L2284
 3848 L2251:
 3849 	tstl a3
 3850 	jlt L2282
============ Listing of BitString.s ============	PAGE 71

 3851 	tstl d1
 3852 	jlt L2284
 3853 	cmpl d1,d3
 3854 	jle L2284
 3855 	movel d1,d4
 3856 	lsrl #4,d4
 3857 	moveq #15,d6
 3858 	andl d6,d1
 3859 	movel d1,a6@(-4)
 3860 	clrl d3
 3861 	lsrl #4,d2
 3862 	movel d2,a1
 3863 	movel a3,d6
 3864 	lsrl #4,d6
 3865 	movel d6,a0
 3866 	lsrl #4,d7
 3867 	movel d7,a3
 3868 	clrl d7
 3869 	clrl d2
 3870 	moveq #16,d6
 3871 	subl d7,d6
 3872 	movel d6,a6@(-16)
 3873 	moveq #16,d6
 3874 	subl d1,d6
 3875 	movel d6,a6@(-8)
 3876 L2261:
 3877 	cmpl d3,a3
 3878 	jge L2265
 3879 	clrl d0
 3880 	jra L2264
 3881 L2265:
 3882 	cmpl d3,a3
 3883 	jne L2267
 3884 	movew a4@(d3:l:2),d2
 3885 	movel d2,d6
 3886 	asrl d7,d6
 3887 	movel d6,d0
 3888 	jra L2264
 3889 L2267:
 3890 	movew a4@(d3:l:2),d2
 3891 	movel d2,d0
 3892 	asrl d7,d0
 3893 	movew a4@(2,d3:l:2),d2
 3894 	movel d2,d1
 3895 	movel a6@(-16),d6
 3896 	asll d6,d1
 3897 	orl d1,d0
 3898 L2264:
 3899 	movew d0,a6@(-10)
 3900 	cmpl d4,a1
 3901 	jge L2270
 3902 	clrl d0
 3903 	jra L2269
 3904 L2270:
 3905 	cmpl d4,a1
============ Listing of BitString.s ============	PAGE 72

 3906 	jne L2272
 3907 	movel a6@(12),a2
 3908 	movew a2@(d4:l:2),d2
 3909 	movel d2,d6
 3910 	movel a6@(-4),d5
 3911 	asrl d5,d6
 3912 	movel d6,d0
 3913 	jra L2269
 3914 L2272:
 3915 	movel a6@(12),a2
 3916 	movew a2@(d4:l:2),d2
 3917 	movel d2,d0
 3918 	movel a6@(-4),d6
 3919 	asrl d6,d0
 3920 	movew a2@(2,d4:l:2),d2
 3921 	movel d2,d1
 3922 	movel a6@(-8),d6
 3923 	asll d6,d1
 3924 	orl d1,d0
 3925 L2269:
 3926 	andw a6@(-10),d0
 3927 	movew d0,a6@(-12)
 3928 	cmpl d3,a0
 3929 	jge L2275
 3930 	clrl d0
 3931 	jra L2274
 3932 L2275:
 3933 	cmpl d3,a0
 3934 	jne L2277
 3935 	movew a5@(d3:l:2),d2
 3936 	movel d2,d6
 3937 	asrl d7,d6
 3938 	movel d6,d0
 3939 	jra L2274
 3940 L2277:
 3941 	movew a5@(d3:l:2),d2
 3942 	movel d2,d0
 3943 	asrl d7,d0
 3944 	movew a5@(2,d3:l:2),d2
 3945 	movel d2,d1
 3946 	movel a6@(-16),d6
 3947 	asll d6,d1
 3948 	orl d1,d0
 3949 L2274:
 3950 	andw a6@(-10),d0
 3951 	cmpw a6@(-12),d0
 3952 	jne L2284
 3953 	addql #1,d3
 3954 	cmpl d3,a0
 3955 	jlt L2282
 3956 	addql #1,d4
 3957 	cmpl d4,a1
 3958 	jge L2261
 3959 L2282:
 3960 	moveq #1,d0
============ Listing of BitString.s ============	PAGE 73

 3961 L2248:
 3962 	moveml a6@(-56),#0x3cfc
 3963 	unlk a6
 3964 	rts
 3965 	.even
 3966 .globl ___12BitSubStringP9BitStringii
 3967 ___12BitSubStringP9BitStringii:
 3968 	link a6,#0
 3969 	moveml #0x2020,sp@-
 3970 	movel a6@(8),a1
 3971 	movel a6@(12),a2
 3972 	movel a6@(16),d1
 3973 	movel a6@(20),d2
 3974 	tstl d1
 3975 	jlt L2287
 3976 	tstl d2
 3977 	jle L2287
 3978 	movel d1,d0
 3979 	addl d2,d0
 3980 	movel a2@,a0
 3981 	cmpl a0@,d0
 3982 	jls L2286
 3983 L2287:
 3984 	movel #__nil_BitString,a1@
 3985 	clrl a1@(8)
 3986 	clrl a1@(4)
 3987 	jra L2288
 3988 L2286:
 3989 	movel a2,a1@
 3990 	movel d1,a1@(4)
 3991 	movel d2,a1@(8)
 3992 L2288:
 3993 	movel a1,d0
 3994 	moveml a6@(-8),#0x404
 3995 	unlk a6
 3996 	rts
 3997 	.even
 3998 .globl _op$assign_nop__12BitSubStringR9BitString
 3999 _op$assign_nop__12BitSubStringR9BitString:
 4000 	link a6,#0
 4001 	moveml #0x3c3c,sp@-
 4002 	movel a6@(8),a5
 4003 	cmpl #__nil_BitString,a5@
 4004 	jeq L2289
 4005 	movel a5@,a0
 4006 	movel a0@,a4
 4007 	movel a6@(12),a1
 4008 	movel a1@,a0
 4009 	movel a0@,d4
 4010 	movel a4@,d0
 4011 	subl a5@(8),d0
 4012 	movel d0,d3
 4013 	addl d4,d3
 4014 	cmpl a1@,a4
 4015 	jeq L2292
============ Listing of BitString.s ============	PAGE 74

 4016 	cmpl a5@(8),d4
 4017 	jle L2291
 4018 L2292:
 4019 	movel a4,a2
 4020 	movel d3,sp@-
 4021 	clrl sp@-
 4022 	clrl sp@-
 4023 	clrl sp@-
 4024 	clrl sp@-
 4025 	jbsr _BStr_alloc__FP9BitStrRepPUsiii
 4026 	movel d0,a4
 4027 	clrl sp@-
 4028 	movel a4,d2
 4029 	addql #6,d2
 4030 	movel d2,sp@-
 4031 	movel a5@(4),sp@-
 4032 	clrl sp@-
 4033 	movel a2,d3
 4034 	addql #6,d3
 4035 	movel d3,sp@-
 4036 	lea _bit_transfer__FPUsiiT0i,a3
 4037 	jbsr a3@
 4038 	addw #40,sp
 4039 	movel a5@(4),sp@-
 4040 	movel d2,sp@-
 4041 	movel d4,sp@-
 4042 	clrl sp@-
 4043 	movel a6@(12),a1
 4044 	movel a1@,d5
 4045 	addql #6,d5
 4046 	movel d5,sp@-
 4047 	jbsr a3@
 4048 	addl a5@(4),d4
 4049 	movel d4,sp@-
 4050 	movel d2,sp@-
 4051 	movel a2@,sp@-
 4052 	movel a5@(4),d5
 4053 	addl a5@(8),d5
 4054 	movel d5,sp@-
 4055 	movel d3,sp@-
 4056 	jbsr a3@
 4057 	addw #40,sp
 4058 	movel a2,sp@-
 4059 	jbsr ___builtin_delete
 4060 	jra L2293
 4061 L2291:
 4062 	cmpl a5@(8),d4
 4063 	jne L2294
 4064 	movel a5@(4),sp@-
 4065 	pea a4@(6)
 4066 	movel a5@(8),sp@-
 4067 	clrl sp@-
 4068 	movel a6@(12),a1
 4069 	movel a1@,d5
 4070 	addql #6,d5
============ Listing of BitString.s ============	PAGE 75

 4071 	movel d5,sp@-
 4072 	jbsr _bit_transfer__FPUsiiT0i
 4073 	jra L2293
 4074 L2294:
 4075 	cmpl a5@(8),d4
 4076 	jge L2293
 4077 	movel a5@(4),sp@-
 4078 	movel a4,d2
 4079 	addql #6,d2
 4080 	movel d2,sp@-
 4081 	movel d4,sp@-
 4082 	clrl sp@-
 4083 	movel a6@(12),a1
 4084 	movel a1@,d5
 4085 	addql #6,d5
 4086 	movel d5,sp@-
 4087 	lea _bit_transfer__FPUsiiT0i,a2
 4088 	jbsr a2@
 4089 	addl a5@(4),d4
 4090 	movel d4,sp@-
 4091 	movel d2,sp@-
 4092 	movel a4@,sp@-
 4093 	movel a5@(4),d5
 4094 	addl a5@(8),d5
 4095 	movel d5,sp@-
 4096 	movel d2,sp@-
 4097 	jbsr a2@
 4098 	movel d3,a4@
 4099 L2293:
 4100 	movel a4@,d0
 4101 	lsrl #4,d0
 4102 	moveq #15,d1
 4103 	andl a4@,d1
 4104 	moveq #16,d5
 4105 	subl d1,d5
 4106 	movel d5,d1
 4107 	movel #65535,d2
 4108 	asrl d1,d2
 4109 	andw d2,a4@(6,d0:l:2)
 4110 	movel a5@,a0
 4111 	movel a4,a0@
 4112 L2289:
 4113 	moveml a6@(-32),#0x3c3c
 4114 	unlk a6
 4115 	rts
 4116 	.even
 4117 .globl _op$assign_nop__12BitSubStringR12BitSubString
 4118 _op$assign_nop__12BitSubStringR12BitSubString:
 4119 	link a6,#0
 4120 	moveml #0x3c3c,sp@-
 4121 	movel a6@(12),a4
 4122 	movel a6@(8),a1
 4123 	cmpl #__nil_BitString,a1@
 4124 	jeq L2298
 4125 	movel a1@,a0
============ Listing of BitString.s ============	PAGE 76

 4126 	movel a0@,a3
 4127 	tstl a1@(8)
 4128 	jeq L2298
 4129 	movel a1@(4),d5
 4130 	cmpl a3@,d5
 4131 	jcc L2298
 4132 	movel a3@,d0
 4133 	subl a1@(8),d0
 4134 	movel d0,d3
 4135 	addl a4@(8),d3
 4136 	movel a4@,a0
 4137 	cmpl a0@,a3
 4138 	jeq L2303
 4139 	movel a4@(8),d5
 4140 	cmpl a1@(8),d5
 4141 	jle L2302
 4142 L2303:
 4143 	movel a3,d4
 4144 	movel d3,sp@-
 4145 	clrl sp@-
 4146 	clrl sp@-
 4147 	clrl sp@-
 4148 	clrl sp@-
 4149 	jbsr _BStr_alloc__FP9BitStrRepPUsiii
 4150 	movel d0,a3
 4151 	movel d4,a5
 4152 	addqw #6,a5
 4153 	lea a3@(6),a2
 4154 	movel a6@(8),a1
 4155 	movel a1@(4),d3
 4156 	addw #20,sp
 4157 	cmpl a5,a2
 4158 	jeq L2304
 4159 	movel d3,d2
 4160 	lsrl #4,d2
 4161 	tstl d2
 4162 	jle L2306
 4163 	movel d2,d5
 4164 	asll #1,d5
 4165 	movel d5,sp@-
 4166 	movel a2,sp@-
 4167 	movel a5,sp@-
 4168 	jbsr _bcopy
 4169 	addw #12,sp
 4170 L2306:
 4171 	moveq #15,d0
 4172 	andl d3,d0
 4173 	movel #65535,d1
 4174 	asll d0,d1
 4175 	movew d1,d0
 4176 	notw d0
 4177 	andw a5@(d2:l:2),d0
 4178 	andw a2@(d2:l:2),d1
 4179 	orw d1,d0
 4180 	movew d0,a2@(d2:l:2)
============ Listing of BitString.s ============	PAGE 77

 4181 L2304:
 4182 	movel a6@(8),a1
 4183 	movel a1@(4),sp@-
 4184 	movel a3,d2
 4185 	addql #6,d2
 4186 	movel d2,sp@-
 4187 	movel a4@(4),d5
 4188 	addl a4@(8),d5
 4189 	movel d5,sp@-
 4190 	movel a4@(4),sp@-
 4191 	movel a4@,a0
 4192 	movel a0@,d5
 4193 	addql #6,d5
 4194 	movel d5,sp@-
 4195 	lea _bit_transfer__FPUsiiT0i,a2
 4196 	jbsr a2@
 4197 	movel a6@(8),a1
 4198 	movel a1@(4),d5
 4199 	addl a4@(8),d5
 4200 	movel d5,sp@-
 4201 	movel d2,sp@-
 4202 	movel d4,a1
 4203 	movel a1@,sp@-
 4204 	movel a6@(8),a1
 4205 	movel a1@(4),d5
 4206 	addl a1@(8),d5
 4207 	movel d5,sp@-
 4208 	movel d4,a1
 4209 	pea a1@(6)
 4210 	jbsr a2@
 4211 	addw #40,sp
 4212 	movel d4,sp@-
 4213 	jbsr ___builtin_delete
 4214 	jra L2307
 4215 L2302:
 4216 	movel a6@(8),a1
 4217 	movel a1@(8),d5
 4218 	cmpl a4@(8),d5
 4219 	jne L2308
 4220 	movel a1@(4),sp@-
 4221 	pea a3@(6)
 4222 	movel a4@(4),d5
 4223 	addl a4@(8),d5
 4224 	movel d5,sp@-
 4225 	movel a4@(4),sp@-
 4226 	movel a4@,a0
 4227 	movel a0@,d5
 4228 	addql #6,d5
 4229 	movel d5,sp@-
 4230 	jbsr _bit_transfer__FPUsiiT0i
 4231 	jra L2307
 4232 L2308:
 4233 	movel a4@(8),d5
 4234 	movel a6@(8),a1
 4235 	cmpl a1@(8),d5
============ Listing of BitString.s ============	PAGE 78

 4236 	jge L2307
 4237 	movel a1@(4),sp@-
 4238 	movel a3,d2
 4239 	addql #6,d2
 4240 	movel d2,sp@-
 4241 	movel a4@(4),d5
 4242 	addl a4@(8),d5
 4243 	movel d5,sp@-
 4244 	movel a4@(4),sp@-
 4245 	movel a4@,a0
 4246 	movel a0@,d5
 4247 	addql #6,d5
 4248 	movel d5,sp@-
 4249 	lea _bit_transfer__FPUsiiT0i,a2
 4250 	jbsr a2@
 4251 	movel a6@(8),a1
 4252 	movel a1@(4),d5
 4253 	addl a4@(8),d5
 4254 	movel d5,sp@-
 4255 	movel d2,sp@-
 4256 	movel a3@,sp@-
 4257 	movel a1@(4),d5
 4258 	addl a1@(8),d5
 4259 	movel d5,sp@-
 4260 	movel d2,sp@-
 4261 	jbsr a2@
 4262 	movel d3,a3@
 4263 L2307:
 4264 	movel a3@,d0
 4265 	lsrl #4,d0
 4266 	moveq #15,d1
 4267 	andl a3@,d1
 4268 	moveq #16,d5
 4269 	subl d1,d5
 4270 	movel d5,d1
 4271 	movel #65535,d2
 4272 	asrl d1,d2
 4273 	andw d2,a3@(6,d0:l:2)
 4274 	movel a6@(8),a1
 4275 	movel a1@,a0
 4276 	movel a3,a0@
 4277 L2298:
 4278 	moveml a6@(-32),#0x3c3c
 4279 	unlk a6
 4280 	rts
 4281 	.even
 4282 .globl _at__9BitStringii
 4283 _at__9BitStringii:
 4284 	link a6,#-12
 4285 	moveml #0x30,sp@-
 4286 	movel a1,a3
 4287 	movel a6@(16),sp@-
 4288 	movel a6@(12),sp@-
 4289 	movel a6@(8),sp@-
 4290 	lea a6@(-12),a2
============ Listing of BitString.s ============	PAGE 79

 4291 	movel a2,sp@-
 4292 	jbsr ___12BitSubStringP9BitStringii
 4293 	movel a2@,a3@
 4294 	movel a2@(4),a3@(4)
 4295 	movel a2@(8),a3@(8)
 4296 	movel a3,d0
 4297 	moveml a6@(-20),#0xc00
 4298 	unlk a6
 4299 	rts
 4300 	.even
 4301 .globl _before__9BitStringi
 4302 _before__9BitStringi:
 4303 	link a6,#-12
 4304 	moveml #0x30,sp@-
 4305 	movel a1,a3
 4306 	movel a6@(12),sp@-
 4307 	clrl sp@-
 4308 	movel a6@(8),sp@-
 4309 	lea a6@(-12),a2
 4310 	movel a2,sp@-
 4311 	jbsr ___12BitSubStringP9BitStringii
 4312 	movel a2@,a3@
 4313 	movel a2@(4),a3@(4)
 4314 	movel a2@(8),a3@(8)
 4315 	movel a3,d0
 4316 	moveml a6@(-20),#0xc00
 4317 	unlk a6
 4318 	rts
 4319 	.even
 4320 .globl _after__9BitStringi
 4321 _after__9BitStringi:
 4322 	link a6,#-12
 4323 	moveml #0x30,sp@-
 4324 	movel a1,a3
 4325 	movel a6@(8),a0
 4326 	movel a6@(12),a1
 4327 	movel a0@,a2
 4328 	movel a2@,d0
 4329 	subql #1,d0
 4330 	subl a1,d0
 4331 	movel d0,sp@-
 4332 	pea a1@(1)
 4333 	movel a0,sp@-
 4334 	lea a6@(-12),a2
 4335 	movel a2,sp@-
 4336 	jbsr ___12BitSubStringP9BitStringii
 4337 	movel a2@,a3@
 4338 	movel a2@(4),a3@(4)
 4339 	movel a2@(8),a3@(8)
 4340 	movel a3,d0
 4341 	moveml a6@(-20),#0xc00
 4342 	unlk a6
 4343 	rts
 4344 	.even
 4345 .globl _at__9BitStringR9BitStringi
============ Listing of BitString.s ============	PAGE 80

 4346 _at__9BitStringR9BitStringi:
 4347 	link a6,#-12
 4348 	moveml #0x38,sp@-
 4349 	movel a1,a3
 4350 	movel a6@(8),a2
 4351 	movel a6@(12),a4
 4352 	movel a4@,a0
 4353 	movel a0@,sp@-
 4354 	clrl sp@-
 4355 	movel a0,d1
 4356 	addql #6,d1
 4357 	movel d1,sp@-
 4358 	movel a2@,a0
 4359 	movel a0@,sp@-
 4360 	movel a6@(16),sp@-
 4361 	movel a2,sp@-
 4362 	jbsr _search__9BitStringiiPUsii
 4363 	movel a4@,a4
 4364 	movel a4@,sp@-
 4365 	movel d0,sp@-
 4366 	movel a2,sp@-
 4367 	lea a6@(-12),a2
 4368 	movel a2,sp@-
 4369 	jbsr ___12BitSubStringP9BitStringii
 4370 	movel a2@,a3@
 4371 	movel a2@(4),a3@(4)
 4372 	movel a2@(8),a3@(8)
 4373 	movel a3,d0
 4374 	moveml a6@(-24),#0x1c00
 4375 	unlk a6
 4376 	rts
 4377 	.even
 4378 .globl _before__9BitStringR9BitStringi
 4379 _before__9BitStringR9BitStringi:
 4380 	link a6,#-12
 4381 	moveml #0x30,sp@-
 4382 	movel a1,a3
 4383 	movel a6@(8),a2
 4384 	movel a6@(12),a0
 4385 	movel a0@,a1
 4386 	movel a1@,sp@-
 4387 	clrl sp@-
 4388 	movel a1,d1
 4389 	addql #6,d1
 4390 	movel d1,sp@-
 4391 	movel a2@,a0
 4392 	movel a0@,sp@-
 4393 	movel a6@(16),sp@-
 4394 	movel a2,sp@-
 4395 	jbsr _search__9BitStringiiPUsii
 4396 	movel d0,sp@-
 4397 	clrl sp@-
 4398 	movel a2,sp@-
 4399 	lea a6@(-12),a2
 4400 	movel a2,sp@-
============ Listing of BitString.s ============	PAGE 81

 4401 	jbsr ___12BitSubStringP9BitStringii
 4402 	movel a2@,a3@
 4403 	movel a2@(4),a3@(4)
 4404 	movel a2@(8),a3@(8)
 4405 	movel a3,d0
 4406 	moveml a6@(-20),#0xc00
 4407 	unlk a6
 4408 	rts
 4409 	.even
 4410 .globl _after__9BitStringR9BitStringi
 4411 _after__9BitStringR9BitStringi:
 4412 	link a6,#-12
 4413 	moveml #0x38,sp@-
 4414 	movel a1,a3
 4415 	movel a6@(8),a4
 4416 	movel a6@(12),a2
 4417 	movel a2@,a0
 4418 	movel a0@,sp@-
 4419 	clrl sp@-
 4420 	movel a0,d1
 4421 	addql #6,d1
 4422 	movel d1,sp@-
 4423 	movel a4@,a0
 4424 	movel a0@,sp@-
 4425 	movel a6@(16),sp@-
 4426 	movel a4,sp@-
 4427 	jbsr _search__9BitStringiiPUsii
 4428 	addw #24,sp
 4429 	tstl d0
 4430 	jlt L2353
 4431 	movel a2@,a0
 4432 	addl a0@,d0
 4433 L2353:
 4434 	movel a4@,a0
 4435 	movel a0@,d1
 4436 	subl d0,d1
 4437 	movel d1,sp@-
 4438 	movel d0,sp@-
 4439 	movel a4,sp@-
 4440 	lea a6@(-12),a2
 4441 	movel a2,sp@-
 4442 	jbsr ___12BitSubStringP9BitStringii
 4443 	movel a2@,a3@
 4444 	movel a2@(4),a3@(4)
 4445 	movel a2@(8),a3@(8)
 4446 	movel a3,d0
 4447 	moveml a6@(-24),#0x1c00
 4448 	unlk a6
 4449 	rts
 4450 	.even
 4451 .globl _at__9BitStringR12BitSubStringi
 4452 _at__9BitStringR12BitSubStringi:
 4453 	link a6,#-12
 4454 	moveml #0x38,sp@-
 4455 	movel a1,a3
============ Listing of BitString.s ============	PAGE 82

 4456 	movel a6@(8),a2
 4457 	movel a6@(12),a4
 4458 	movel a4@(8),sp@-
 4459 	movel a4@(4),sp@-
 4460 	movel a4@,a0
 4461 	movel a0@,d1
 4462 	addql #6,d1
 4463 	movel d1,sp@-
 4464 	movel a2@,a0
 4465 	movel a0@,sp@-
 4466 	movel a6@(16),sp@-
 4467 	movel a2,sp@-
 4468 	jbsr _search__9BitStringiiPUsii
 4469 	movel a4@(8),sp@-
 4470 	movel d0,sp@-
 4471 	movel a2,sp@-
 4472 	lea a6@(-12),a2
 4473 	movel a2,sp@-
 4474 	jbsr ___12BitSubStringP9BitStringii
 4475 	movel a2@,a3@
 4476 	movel a2@(4),a3@(4)
 4477 	movel a2@(8),a3@(8)
 4478 	movel a3,d0
 4479 	moveml a6@(-24),#0x1c00
 4480 	unlk a6
 4481 	rts
 4482 	.even
 4483 .globl _before__9BitStringR12BitSubStringi
 4484 _before__9BitStringR12BitSubStringi:
 4485 	link a6,#-12
 4486 	moveml #0x30,sp@-
 4487 	movel a1,a3
 4488 	movel a6@(8),a2
 4489 	movel a6@(12),a0
 4490 	movel a0@(8),sp@-
 4491 	movel a0@(4),sp@-
 4492 	movel a0@,a0
 4493 	movel a0@,d1
 4494 	addql #6,d1
 4495 	movel d1,sp@-
 4496 	movel a2@,a0
 4497 	movel a0@,sp@-
 4498 	movel a6@(16),sp@-
 4499 	movel a2,sp@-
 4500 	jbsr _search__9BitStringiiPUsii
 4501 	movel d0,sp@-
 4502 	clrl sp@-
 4503 	movel a2,sp@-
 4504 	lea a6@(-12),a2
 4505 	movel a2,sp@-
 4506 	jbsr ___12BitSubStringP9BitStringii
 4507 	movel a2@,a3@
 4508 	movel a2@(4),a3@(4)
 4509 	movel a2@(8),a3@(8)
 4510 	movel a3,d0
============ Listing of BitString.s ============	PAGE 83

 4511 	moveml a6@(-20),#0xc00
 4512 	unlk a6
 4513 	rts
 4514 	.even
 4515 .globl _after__9BitStringR12BitSubStringi
 4516 _after__9BitStringR12BitSubStringi:
 4517 	link a6,#-12
 4518 	moveml #0x38,sp@-
 4519 	movel a1,a3
 4520 	movel a6@(8),a4
 4521 	movel a6@(12),a2
 4522 	movel a2@(8),sp@-
 4523 	movel a2@(4),sp@-
 4524 	movel a2@,a0
 4525 	movel a0@,d1
 4526 	addql #6,d1
 4527 	movel d1,sp@-
 4528 	movel a4@,a0
 4529 	movel a0@,sp@-
 4530 	movel a6@(16),sp@-
 4531 	movel a4,sp@-
 4532 	jbsr _search__9BitStringiiPUsii
 4533 	addw #24,sp
 4534 	tstl d0
 4535 	jlt L2378
 4536 	addl a2@(8),d0
 4537 L2378:
 4538 	movel a4@,a0
 4539 	movel a0@,d1
 4540 	subl d0,d1
 4541 	movel d1,sp@-
 4542 	movel d0,sp@-
 4543 	movel a4,sp@-
 4544 	lea a6@(-12),a2
 4545 	movel a2,sp@-
 4546 	jbsr ___12BitSubStringP9BitStringii
 4547 	movel a2@,a3@
 4548 	movel a2@(4),a3@(4)
 4549 	movel a2@(8),a3@(8)
 4550 	movel a3,d0
 4551 	moveml a6@(-24),#0x1c00
 4552 	unlk a6
 4553 	rts
 4554 	.even
 4555 .globl _at__9BitStringR10BitPatterni
 4556 _at__9BitStringR10BitPatterni:
 4557 	link a6,#-12
 4558 	moveml #0x38,sp@-
 4559 	movel a1,a3
 4560 	movel a6@(8),a2
 4561 	movel a6@(12),a4
 4562 	movel a2@,a0
 4563 	movel a0@,sp@-
 4564 	movel a6@(16),sp@-
 4565 	movel a0,d1
============ Listing of BitString.s ============	PAGE 84

 4566 	addql #6,d1
 4567 	movel d1,sp@-
 4568 	movel a4,sp@-
 4569 	jbsr _search__10BitPatternPUsii
 4570 	movel a4@,a4
 4571 	movel a4@,sp@-
 4572 	movel d0,sp@-
 4573 	movel a2,sp@-
 4574 	lea a6@(-12),a2
 4575 	movel a2,sp@-
 4576 	jbsr ___12BitSubStringP9BitStringii
 4577 	movel a2@,a3@
 4578 	movel a2@(4),a3@(4)
 4579 	movel a2@(8),a3@(8)
 4580 	movel a3,d0
 4581 	moveml a6@(-24),#0x1c00
 4582 	unlk a6
 4583 	rts
 4584 	.even
 4585 .globl _before__9BitStringR10BitPatterni
 4586 _before__9BitStringR10BitPatterni:
 4587 	link a6,#-12
 4588 	moveml #0x30,sp@-
 4589 	movel a1,a3
 4590 	movel a6@(8),a2
 4591 	movel a2@,a0
 4592 	movel a0@,sp@-
 4593 	movel a6@(16),sp@-
 4594 	movel a0,d1
 4595 	addql #6,d1
 4596 	movel d1,sp@-
 4597 	movel a6@(12),sp@-
 4598 	jbsr _search__10BitPatternPUsii
 4599 	movel d0,sp@-
 4600 	clrl sp@-
 4601 	movel a2,sp@-
 4602 	lea a6@(-12),a2
 4603 	movel a2,sp@-
 4604 	jbsr ___12BitSubStringP9BitStringii
 4605 	movel a2@,a3@
 4606 	movel a2@(4),a3@(4)
 4607 	movel a2@(8),a3@(8)
 4608 	movel a3,d0
 4609 	moveml a6@(-20),#0xc00
 4610 	unlk a6
 4611 	rts
 4612 	.even
 4613 .globl _after__9BitStringR10BitPatterni
 4614 _after__9BitStringR10BitPatterni:
 4615 	link a6,#-12
 4616 	moveml #0x38,sp@-
 4617 	movel a1,a3
 4618 	movel a6@(8),a2
 4619 	movel a6@(12),a4
 4620 	movel a2@,a0
============ Listing of BitString.s ============	PAGE 85

 4621 	movel a0@,sp@-
 4622 	movel a6@(16),sp@-
 4623 	movel a0,d1
 4624 	addql #6,d1
 4625 	movel d1,sp@-
 4626 	movel a4,sp@-
 4627 	jbsr _search__10BitPatternPUsii
 4628 	addw #16,sp
 4629 	tstl d0
 4630 	jlt L2403
 4631 	movel a4@,a0
 4632 	addl a0@,d0
 4633 L2403:
 4634 	movel a2@,a0
 4635 	movel a0@,d1
 4636 	subl d0,d1
 4637 	movel d1,sp@-
 4638 	movel d0,sp@-
 4639 	movel a2,sp@-
 4640 	lea a6@(-12),a2
 4641 	movel a2,sp@-
 4642 	jbsr ___12BitSubStringP9BitStringii
 4643 	movel a2@,a3@
 4644 	movel a2@(4),a3@(4)
 4645 	movel a2@(8),a3@(8)
 4646 	movel a3,d0
 4647 	moveml a6@(-24),#0x1c00
 4648 	unlk a6
 4649 	rts
 4650 	.even
 4651 .globl _common_prefix__FR9BitStringT0i
 4652 _common_prefix__FR9BitStringT0i:
 4653 	link a6,#-4
 4654 	moveml #0x3f3c,sp@-
 4655 	movel a1,a5
 4656 	movel a6@(16),d0
 4657 	movel a6@(8),a2
 4658 	movel a2@,a0
 4659 	movel a0@,a3
 4660 	movel a6@(12),a2
 4661 	movel a2@,a0
 4662 	movel a0@,a4
 4663 	jge L2412
 4664 	movel a3,d6
 4665 	addl d0,d6
 4666 	movel a4,d1
 4667 	addl d0,d1
 4668 	jra L2413
 4669 L2412:
 4670 	movel d0,d6
 4671 	movel d6,d1
 4672 L2413:
 4673 	tstl d6
 4674 	jlt L2415
 4675 	cmpl d6,a3
============ Listing of BitString.s ============	PAGE 86

 4676 	jls L2415
 4677 	tstl d1
 4678 	jlt L2415
 4679 	cmpl d1,a4
 4680 	jhi L2414
 4681 L2415:
 4682 	movel #__nilBitStrRep,d0
 4683 	movel d0,a5@
 4684 	jra L2432
 4685 L2414:
 4686 	movel d6,d0
 4687 	lsrl #4,d0
 4688 	asll #1,d0
 4689 	addql #6,d0
 4690 	movel d0,a1
 4691 	movel a6@(8),a2
 4692 	addl a2@,a1
 4693 	movew a1@+,a6@(-4)
 4694 	movel d6,d2
 4695 	movel d1,d0
 4696 	lsrl #4,d0
 4697 	asll #1,d0
 4698 	addql #6,d0
 4699 	movel d0,a0
 4700 	movel a6@(12),a2
 4701 	addl a2@,a0
 4702 	movew a0@+,a6@(-2)
 4703 	movel d1,d3
 4704 	cmpl d2,a3
 4705 	jls L2421
 4706 L2428:
 4707 	cmpl d3,a4
 4708 	jls L2421
 4709 	moveq #15,d0
 4710 	andl d2,d0
 4711 	moveq #1,d1
 4712 	asll d0,d1
 4713 	movew d1,d4
 4714 	moveq #15,d0
 4715 	andl d3,d0
 4716 	moveq #1,d1
 4717 	asll d0,d1
 4718 	movew d1,d5
 4719 	movew a6@(-4),d0
 4720 	andw d4,d0
 4721 	seq d1
 4722 	moveq #1,d7
 4723 	andl d7,d1
 4724 	movew a6@(-2),d0
 4725 	andw d5,d0
 4726 	seq d0
 4727 	andl d7,d0
 4728 	cmpl d1,d0
 4729 	jne L2421
 4730 	cmpw #32768,d4
============ Listing of BitString.s ============	PAGE 87

 4731 	jne L2426
 4732 	movew a1@+,a6@(-4)
 4733 L2426:
 4734 	cmpw #32768,d5
 4735 	jne L2422
 4736 	movew a0@+,a6@(-2)
 4737 L2422:
 4738 	addql #1,d2
 4739 	addql #1,d3
 4740 	cmpl d2,a3
 4741 	jhi L2428
 4742 L2421:
 4743 	movel d2,d7
 4744 	subl d6,d7
 4745 	movel d7,sp@-
 4746 	movel d2,sp@-
 4747 	movel d6,sp@-
 4748 	movel a6@(8),a2
 4749 	movel a2@,d7
 4750 	addql #6,d7
 4751 	movel d7,sp@-
 4752 	clrl sp@-
 4753 	jbsr _BStr_alloc__FP9BitStrRepPUsiii
 4754 	movel #__nilBitStrRep,a5@
 4755 L2432:
 4756 	movel d0,a5@
 4757 	movel a5,d0
 4758 	moveml a6@(-44),#0x3cfc
 4759 	unlk a6
 4760 	rts
 4761 	.even
 4762 .globl _common_suffix__FR9BitStringT0i
 4763 _common_suffix__FR9BitStringT0i:
 4764 	link a6,#-4
 4765 	moveml #0x3f3c,sp@-
 4766 	movel a1,a3
 4767 	movel a6@(8),a4
 4768 	movel a6@(16),d0
 4769 	movel a4@,a0
 4770 	movel a0@,d2
 4771 	movel a6@(12),a5
 4772 	movel a5@,a0
 4773 	movel a0@,d3
 4774 	tstl d0
 4775 	jge L2434
 4776 	movel d2,d6
 4777 	addl d0,d6
 4778 	movel d3,d1
 4779 	addl d0,d1
 4780 	jra L2435
 4781 L2434:
 4782 	movel d0,d6
 4783 	movel d6,d1
 4784 L2435:
 4785 	tstl d6
============ Listing of BitString.s ============	PAGE 88

 4786 	jlt L2437
 4787 	cmpl d6,d2
 4788 	jls L2437
 4789 	tstl d1
 4790 	jlt L2437
 4791 	cmpl d1,d3
 4792 	jhi L2436
 4793 L2437:
 4794 	movel #__nilBitStrRep,d0
 4795 	movel d0,a3@
 4796 	jra L2454
 4797 L2436:
 4798 	movel d6,d0
 4799 	lsrl #4,d0
 4800 	asll #1,d0
 4801 	addql #6,d0
 4802 	movel d0,a1
 4803 	addl a4@,a1
 4804 	movew a1@,a2
 4805 	subqw #2,a1
 4806 	movel d6,d2
 4807 	movel d1,d0
 4808 	lsrl #4,d0
 4809 	asll #1,d0
 4810 	addql #6,d0
 4811 	movel d0,a0
 4812 	movel a6@(12),a5
 4813 	addl a5@,a0
 4814 	movew a0@,a6@(-2)
 4815 	subqw #2,a0
 4816 	movel d1,d3
 4817 	tstl d2
 4818 	jlt L2443
 4819 L2450:
 4820 	tstl d3
 4821 	jlt L2443
 4822 	moveq #15,d0
 4823 	andl d2,d0
 4824 	moveq #1,d1
 4825 	asll d0,d1
 4826 	movew d1,d4
 4827 	moveq #15,d0
 4828 	andl d3,d0
 4829 	moveq #1,d1
 4830 	asll d0,d1
 4831 	movew d1,d5
 4832 	movew a2,d0
 4833 	andw d4,d0
 4834 	seq d1
 4835 	moveq #1,d7
 4836 	andl d7,d1
 4837 	movew a6@(-2),d0
 4838 	andw d5,d0
 4839 	seq d0
 4840 	andl d7,d0
============ Listing of BitString.s ============	PAGE 89

 4841 	cmpl d1,d0
 4842 	jne L2443
 4843 	cmpw #1,d4
 4844 	jne L2448
 4845 	movew a1@,a2
 4846 	subqw #2,a1
 4847 L2448:
 4848 	cmpw #1,d5
 4849 	jne L2444
 4850 	movew a0@,a6@(-2)
 4851 	subqw #2,a0
 4852 L2444:
 4853 	subql #1,d2
 4854 	subql #1,d3
 4855 	tstl d2
 4856 	jge L2450
 4857 L2443:
 4858 	movel d6,d7
 4859 	subl d2,d7
 4860 	movel d7,sp@-
 4861 	movel d6,a5
 4862 	pea a5@(1)
 4863 	movel d2,a5
 4864 	pea a5@(1)
 4865 	movel a4@,d7
 4866 	addql #6,d7
 4867 	movel d7,sp@-
 4868 	clrl sp@-
 4869 	jbsr _BStr_alloc__FP9BitStrRepPUsiii
 4870 	movel #__nilBitStrRep,a3@
 4871 L2454:
 4872 	movel d0,a3@
 4873 	movel a3,d0
 4874 	moveml a6@(-44),#0x3cfc
 4875 	unlk a6
 4876 	rts
 4877 	.even
 4878 .globl _reverse__FR9BitString
 4879 _reverse__FR9BitString:
 4880 	link a6,#0
 4881 	moveml #0x3c38,sp@-
 4882 	movel a1,a2
 4883 	movel a6@(8),a3
 4884 	movel a3@,a0
 4885 	movel a0@,d4
 4886 	movel d4,sp@-
 4887 	clrl sp@-
 4888 	jbsr _BStr_resize__FP9BitStrRepi
 4889 	movel d0,a4
 4890 	tstl d4
 4891 	jeq L2456
 4892 	movel a3@,a1
 4893 	addqw #6,a1
 4894 	moveq #1,d2
 4895 	movel d4,d0
============ Listing of BitString.s ============	PAGE 90

 4896 	subql #1,d0
 4897 	movel d0,d1
 4898 	lsrl #4,d1
 4899 	lea a4@(6,d1:l:2),a0
 4900 	moveq #15,d5
 4901 	andl d5,d0
 4902 	moveq #1,d1
 4903 	asll d0,d1
 4904 	clrl d3
 4905 	cmpl d3,d4
 4906 	jls L2456
 4907 L2467:
 4908 	movew d2,d0
 4909 	andw a1@,d0
 4910 	jeq L2462
 4911 	orw d1,a0@
 4912 L2462:
 4913 	cmpw #32768,d2
 4914 	jne L2463
 4915 	addqw #2,a1
 4916 	moveq #1,d2
 4917 	jra L2464
 4918 L2463:
 4919 	lslw #1,d2
 4920 L2464:
 4921 	cmpw #1,d1
 4922 	jne L2465
 4923 	subqw #2,a0
 4924 	movew #32768,d1
 4925 	jra L2461
 4926 L2465:
 4927 	lsrw #1,d1
 4928 L2461:
 4929 	addql #1,d3
 4930 	cmpl d3,d4
 4931 	jhi L2467
 4932 L2456:
 4933 	movel #__nilBitStrRep,a2@
 4934 	movel a4,a2@
 4935 	movel a2,d0
 4936 	moveml a6@(-28),#0x1c3c
 4937 	unlk a6
 4938 	rts
 4939 	.even
 4940 .globl _BitStringtoa__FR9BitStringcc
 4941 _BitStringtoa__FR9BitStringcc:
 4942 	link a6,#0
 4943 	moveml #0x3f30,sp@-
 4944 	movel a6@(8),a2
 4945 	moveb a6@(15),d6
 4946 	moveb a6@(19),d5
 4947 	movel a2@,a0
 4948 	movel a0@,d7
 4949 	addql #2,d7
 4950 	movel d7,sp@-
============ Listing of BitString.s ============	PAGE 91

 4951 	pea __libgxx_fmtq
 4952 	jbsr _alloc__10AllocQueuei
 4953 	movel d0,d4
 4954 	movel d4,a3
 4955 	movel a2@,a0
 4956 	movel a0@,d3
 4957 	movel a2@,a0
 4958 	addqw #6,a0
 4959 	clrw d2
 4960 	clrl d1
 4961 	cmpl d1,d3
 4962 	jls L2480
 4963 L2479:
 4964 	moveq #15,d0
 4965 	andl d1,d0
 4966 	jne L2476
 4967 	movew a0@+,d2
 4968 L2476:
 4969 	movel a3,a1
 4970 	addqw #1,a3
 4971 	btst #0,d2
 4972 	jeq L2477
 4973 	moveb d5,d0
 4974 	jra L2478
 4975 L2477:
 4976 	moveb d6,d0
 4977 L2478:
 4978 	moveb d0,a1@
 4979 	lsrw #1,d2
 4980 	addql #1,d1
 4981 	cmpl d1,d3
 4982 	jhi L2479
 4983 L2480:
 4984 	clrb a3@
 4985 	movel d4,d0
 4986 	moveml a6@(-32),#0xcfc
 4987 	unlk a6
 4988 	rts
 4989 	.even
 4990 .globl _atoBitString__FPCccc
 4991 _atoBitString__FPCccc:
 4992 	link a6,#-4
 4993 	moveml #0x3f30,sp@-
 4994 	movel a1,a2
 4995 	movel a6@(8),a3
 4996 	moveb a6@(15),a6@(-1)
 4997 	moveb a6@(19),d6
 4998 	movel a3,sp@-
 4999 	jbsr _strlen
 5000 	movel d0,d5
 5001 	movel d5,sp@-
 5002 	clrl sp@-
 5003 	jbsr _BStr_resize__FP9BitStrRepi
 5004 	movel d0,d7
 5005 	addw #12,sp
============ Listing of BitString.s ============	PAGE 92

 5006 	tstl d5
 5007 	jeq L2482
 5008 	clrl d4
 5009 	movel d7,a0
 5010 	addqw #6,a0
 5011 	clrw d1
 5012 	moveq #1,d3
 5013 	clrl d2
 5014 L2483:
 5015 	moveb a3@(d2:l),d0
 5016 	cmpb d0,d6
 5017 	jeq L2486
 5018 	cmpb a6@(-1),d0
 5019 	jne L2494
 5020 L2486:
 5021 	addql #1,d4
 5022 	cmpb d0,d6
 5023 	jne L2487
 5024 	orw d3,d1
 5025 L2487:
 5026 	addql #1,d2
 5027 	cmpl d2,d5
 5028 	jne L2488
 5029 L2494:
 5030 	movew d1,a0@
 5031 	jra L2484
 5032 L2488:
 5033 	moveq #15,d0
 5034 	andl d2,d0
 5035 	jne L2490
 5036 	movew d1,a0@+
 5037 	clrw d1
 5038 	moveq #1,d3
 5039 	jra L2483
 5040 L2490:
 5041 	lslw #1,d3
 5042 	jra L2483
 5043 L2484:
 5044 	movel d4,sp@-
 5045 	movel d7,sp@-
 5046 	jbsr _BStr_resize__FP9BitStrRepi
 5047 	movel d0,d7
 5048 L2482:
 5049 	movel #__nilBitStrRep,a2@
 5050 	movel d7,a2@
 5051 	movel a2,d0
 5052 	moveml a6@(-36),#0xcfc
 5053 	unlk a6
 5054 	rts
 5055 	.even
 5056 .globl _op$alshift__FR7ostreamR9BitString
 5057 _op$alshift__FR7ostreamR9BitString:
 5058 	link a6,#0
 5059 	moveml #0x2020,sp@-
 5060 	movel a6@(8),a2
============ Listing of BitString.s ============	PAGE 93

 5061 	pea 49:w
 5062 	pea 48:w
 5063 	movel a6@(12),sp@-
 5064 	jbsr _BitStringtoa__FR9BitStringcc
 5065 	addw #12,sp
 5066 	clrl d2
 5067 	tstl a2@(4)
 5068 	jne L2498
 5069 	movel d0,sp@-
 5070 	movel a2@,sp@-
 5071 	jbsr _sputs__9streambufPCc
 5072 	moveq #-1,d1
 5073 	cmpl d0,d1
 5074 	jne L2497
 5075 L2498:
 5076 	moveq #1,d2
 5077 L2497:
 5078 	tstl d2
 5079 	jeq L2500
 5080 	moveq #2,d1
 5081 	orl d1,a2@(4)
 5082 L2500:
 5083 	movel a2,d0
 5084 	moveml a6@(-8),#0x404
 5085 	unlk a6
 5086 	rts
 5087 	.even
 5088 .globl _BitPatterntoa__FR10BitPatternccc
 5089 _BitPatterntoa__FR10BitPatternccc:
 5090 	link a6,#0
 5091 	moveml #0x3f38,sp@-
 5092 	movel a6@(8),a2
 5093 	moveb a6@(15),d7
 5094 	moveb a6@(19),d6
 5095 	moveb a6@(23),d5
 5096 	movel a2@,a0
 5097 	movel a2@(4),a1
 5098 	movel a1@,d0
 5099 	movel a0@,a4
 5100 	cmpl a4,d0
 5101 	jcc L2503
 5102 	movel d0,a4
 5103 L2503:
 5104 	pea a4@(2)
 5105 	pea __libgxx_fmtq
 5106 	jbsr _alloc__10AllocQueuei
 5107 	movel d0,d4
 5108 	movel d4,a0
 5109 	movel a2@,a3
 5110 	addqw #6,a3
 5111 	movel a2@(4),a2
 5112 	addqw #6,a2
 5113 	clrw d3
 5114 	clrw d2
 5115 	clrl d1
============ Listing of BitString.s ============	PAGE 94

 5116 	cmpl d1,a4
 5117 	jls L2513
 5118 L2512:
 5119 	moveq #15,d0
 5120 	andl d1,d0
 5121 	jne L2507
 5122 	movew a3@+,d3
 5123 	movew a2@+,d2
 5124 L2507:
 5125 	btst #0,d2
 5126 	jeq L2508
 5127 	movel a0,a1
 5128 	addqw #1,a0
 5129 	btst #0,d3
 5130 	jeq L2509
 5131 	moveb d6,d0
 5132 	jra L2510
 5133 L2509:
 5134 	moveb d7,d0
 5135 L2510:
 5136 	moveb d0,a1@
 5137 	jra L2511
 5138 L2508:
 5139 	moveb d5,a0@+
 5140 L2511:
 5141 	lsrw #1,d3
 5142 	lsrw #1,d2
 5143 	addql #1,d1
 5144 	cmpl d1,a4
 5145 	jhi L2512
 5146 L2513:
 5147 	clrb a0@
 5148 	movel d4,d0
 5149 	moveml a6@(-36),#0x1cfc
 5150 	unlk a6
 5151 	rts
 5152 	.even
 5153 .globl _atoBitPattern__FPCcccc
 5154 _atoBitPattern__FPCcccc:
 5155 	link a6,#-16
 5156 	moveml #0x3f3c,sp@-
 5157 	movel a1,a6@(-12)
 5158 	movel a6@(8),a3
 5159 	moveb a6@(15),a6@(-13)
 5160 	moveb a6@(19),d7
 5161 	moveb a6@(23),a6@(-15)
 5162 	lea a6@(-8),a0
 5163 	movel #__nilBitStrRep,a0@+
 5164 	movel #__nilBitStrRep,a0@
 5165 	movel a3,sp@-
 5166 	jbsr _strlen
 5167 	movel d0,d5
 5168 	addqw #4,sp
 5169 	jeq L2518
 5170 	clrl d6
============ Listing of BitString.s ============	PAGE 95

 5171 	movel d5,sp@-
 5172 	movel a6@(-8),sp@-
 5173 	lea _BStr_resize__FP9BitStrRepi,a2
 5174 	jbsr a2@
 5175 	movel d0,a6@(-8)
 5176 	movel d5,sp@-
 5177 	movel a6@(-4),sp@-
 5178 	jbsr a2@
 5179 	movel d0,a6@(-4)
 5180 	movel a6@(-8),a0
 5181 	addqw #6,a0
 5182 	movel d0,a1
 5183 	addqw #6,a1
 5184 	clrw d3
 5185 	clrw d1
 5186 	moveq #1,d2
 5187 	clrl d4
 5188 	addw #16,sp
 5189 L2519:
 5190 	moveb a3@(d4:l),d0
 5191 	cmpb d0,d7
 5192 	jeq L2522
 5193 	cmpb a6@(-13),d0
 5194 	jeq L2522
 5195 	cmpb a6@(-15),d0
 5196 	jne L2575
 5197 L2522:
 5198 	addql #1,d6
 5199 	cmpb d0,d7
 5200 	jne L2523
 5201 	orw d2,d3
 5202 	jra L2576
 5203 L2523:
 5204 	cmpb a6@(-13),d0
 5205 	jne L2524
 5206 L2576:
 5207 	orw d2,d1
 5208 L2524:
 5209 	addql #1,d4
 5210 	cmpl d4,d5
 5211 	jne L2526
 5212 L2575:
 5213 	movew d3,a0@
 5214 	movew d1,a1@
 5215 	jra L2520
 5216 L2526:
 5217 	moveq #15,d0
 5218 	andl d4,d0
 5219 	jne L2528
 5220 	movew d3,a0@+
 5221 	movew d1,a1@+
 5222 	clrw d3
 5223 	clrw d1
 5224 	moveq #1,d2
 5225 	jra L2519
============ Listing of BitString.s ============	PAGE 96

 5226 L2528:
 5227 	lslw #1,d2
 5228 	jra L2519
 5229 L2520:
 5230 	movel d6,sp@-
 5231 	movel a6@(-8),sp@-
 5232 	lea _BStr_resize__FP9BitStrRepi,a2
 5233 	jbsr a2@
 5234 	movel d0,a6@(-8)
 5235 	movel d6,sp@-
 5236 	movel a6@(-4),sp@-
 5237 	jbsr a2@
 5238 	movel d0,a6@(-4)
 5239 	addw #16,sp
 5240 L2518:
 5241 	lea a6@(-8),a2
 5242 	movel a6@(-12),a4
 5243 	movel #__nilBitStrRep,a4@
 5244 	movel a4,a3
 5245 	addqw #4,a3
 5246 	movel #__nilBitStrRep,a3@
 5247 	movel a2@,sp@-
 5248 	movel a4@,sp@-
 5249 	jbsr _BStr_copy__FP9BitStrRepT0
 5250 	movel d0,a4@
 5251 	addqw #8,sp
 5252 	lea a2@(4),a5
 5253 	movel a5@,sp@-
 5254 	movel a3@,sp@-
 5255 	jbsr _BStr_copy__FP9BitStrRepT0
 5256 	movel d0,a3@
 5257 	addqw #8,sp
 5258 	movel a2,a3
 5259 	clrl d3
 5260 	tstl a5
 5261 	jeq L2560
 5262 	movel a5,a2
 5263 	clrl d2
 5264 	cmpl #__nilBitStrRep,a2@
 5265 	jeq L2563
 5266 	movel a2@,sp@-
 5267 	jbsr ___builtin_delete
 5268 	addqw #4,sp
 5269 L2563:
 5270 	tstl d2
 5271 	jeq L2560
 5272 	movel a2,sp@-
 5273 	jbsr ___builtin_delete
 5274 	addqw #4,sp
 5275 L2560:
 5276 	tstl a3
 5277 	jeq L2567
 5278 	clrl d2
 5279 	cmpl #__nilBitStrRep,a3@
 5280 	jeq L2570
============ Listing of BitString.s ============	PAGE 97

 5281 	movel a3@,sp@-
 5282 	jbsr ___builtin_delete
 5283 	addqw #4,sp
 5284 L2570:
 5285 	tstl d2
 5286 	jeq L2567
 5287 	movel a3,sp@-
 5288 	jbsr ___builtin_delete
 5289 	addqw #4,sp
 5290 L2567:
 5291 	tstl d3
 5292 	jeq L2514
 5293 	movel a3,sp@-
 5294 	jbsr ___builtin_delete
 5295 L2514:
 5296 	movel a6@(-12),d0
 5297 	moveml a6@(-56),#0x3cfc
 5298 	unlk a6
 5299 	rts
 5300 	.even
 5301 .globl _op$alshift__FR7ostreamR10BitPattern
 5302 _op$alshift__FR7ostreamR10BitPattern:
 5303 	link a6,#0
 5304 	moveml #0x2020,sp@-
 5305 	movel a6@(8),a2
 5306 	pea 88:w
 5307 	pea 49:w
 5308 	pea 48:w
 5309 	movel a6@(12),sp@-
 5310 	jbsr _BitPatterntoa__FR10BitPatternccc
 5311 	addw #16,sp
 5312 	clrl d2
 5313 	tstl a2@(4)
 5314 	jne L2580
 5315 	movel d0,sp@-
 5316 	movel a2@,sp@-
 5317 	jbsr _sputs__9streambufPCc
 5318 	moveq #-1,d1
 5319 	cmpl d0,d1
 5320 	jne L2579
 5321 L2580:
 5322 	moveq #1,d2
 5323 L2579:
 5324 	tstl d2
 5325 	jeq L2582
 5326 	moveq #2,d1
 5327 	orl d1,a2@(4)
 5328 L2582:
 5329 	movel a2,d0
 5330 	moveml a6@(-8),#0x404
 5331 	unlk a6
 5332 	rts
 5333 LC4:
 5334 	.ascii "invariant failure\0"
 5335 	.even
============ Listing of BitString.s ============	PAGE 98

 5336 .globl _OK__9BitString
 5337 _OK__9BitString:
 5338 	link a6,#0
 5339 	moveml #0x3000,sp@-
 5340 	movel a6@(8),a1
 5341 	tstl a1@
 5342 	sne d0
 5343 	moveq #1,d2
 5344 	andl d0,d2
 5345 	movel a1@,a0
 5346 	movel a0@,d0
 5347 	lsrl #4,d0
 5348 	addql #1,d0
 5349 	clrl d1
 5350 	movew a0@(4),d1
 5351 	cmpl d0,d1
 5352 	sge d1
 5353 	moveq #1,d3
 5354 	andl d3,d1
 5355 	andl d1,d2
 5356 	jne L2586
 5357 	pea LC4
 5358 	movel a1,sp@-
 5359 	jbsr _error__9BitStringPc
 5360 L2586:
 5361 	movel d2,d0
 5362 	moveml a6@(-8),#0xc
 5363 	unlk a6
 5364 	rts
 5365 LC5:
 5366 	.ascii "BitSubString\0"
 5367 	.even
 5368 .globl _OK__12BitSubString
 5369 _OK__12BitSubString:
 5370 	link a6,#0
 5371 	moveml #0x2020,sp@-
 5372 	movel a6@(8),a2
 5373 	tstl a2@
 5374 	sne d0
 5375 	moveq #1,d2
 5376 	andl d0,d2
 5377 	movel a2@,sp@-
 5378 	jbsr _OK__9BitString
 5379 	andl d0,d2
 5380 	addqw #4,sp
 5381 	clrl d0
 5382 	tstl a2@(4)
 5383 	jlt L2588
 5384 	tstl a2@(8)
 5385 	jlt L2588
 5386 	moveq #1,d0
 5387 L2588:
 5388 	andl d0,d2
 5389 	movel a2@(4),d0
 5390 	addl a2@(8),d0
============ Listing of BitString.s ============	PAGE 99

 5391 	movel a2@,a0
 5392 	movel a0@,a0
 5393 	cmpl a0@,d0
 5394 	sls d0
 5395 	moveq #1,d1
 5396 	andl d1,d0
 5397 	andl d0,d2
 5398 	jne L2589
 5399 	pea LC4
 5400 	pea LC5
 5401 	movel _lib_error_handler,a0
 5402 	jbsr a0@
 5403 L2589:
 5404 	movel d2,d0
 5405 	moveml a6@(-8),#0x404
 5406 	unlk a6
 5407 	rts
 5408 LC6:
 5409 	.ascii "BitPattern\0"
 5410 	.even
 5411 .globl _OK__10BitPattern
 5412 _OK__10BitPattern:
 5413 	link a6,#0
 5414 	moveml #0x2030,sp@-
 5415 	movel a6@(8),a3
 5416 	clrl d2
 5417 	movel a3,sp@-
 5418 	lea _OK__9BitString,a2
 5419 	jbsr a2@
 5420 	addqw #4,sp
 5421 	tstl d0
 5422 	jeq L2591
 5423 	pea a3@(4)
 5424 	jbsr a2@
 5425 	addqw #4,sp
 5426 	tstl d0
 5427 	jeq L2591
 5428 	moveq #1,d2
 5429 L2591:
 5430 	tstl d2
 5431 	jne L2592
 5432 	pea LC4
 5433 	pea LC6
 5434 	movel _lib_error_handler,a0
 5435 	jbsr a0@
 5436 L2592:
 5437 	movel d2,d0
 5438 	moveml a6@(-12),#0xc04
 5439 	unlk a6
 5440 	rts
 5441 .stabs "_fini",10,0,0,0
 5442 .stabs "__GLOBAL_$D$BitString_cc",4,0,0,0
 5443 	.even
 5444 .globl __GLOBAL_$D$BitString_cc
 5445 __GLOBAL_$D$BitString_cc:
============ Listing of BitString.s ============	PAGE 100

 5446 	link a6,#0
 5447 	moveml #0x2020,sp@-
 5448 	lea __nil_BitString,a2
 5449 	clrl d2
 5450 	cmpl #__nilBitStrRep,a2@
 5451 	jeq L2598
 5452 	movel a2@,sp@-
 5453 	jbsr ___builtin_delete
 5454 	addqw #4,sp
 5455 L2598:
 5456 	tstl d2
 5457 	jeq L2595
 5458 	movel a2,sp@-
 5459 	jbsr ___builtin_delete
 5460 L2595:
 5461 	moveml a6@(-8),#0x404
 5462 	unlk a6
 5463 	rts
 5464 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$BitString_cc
 5465 .stabs "_init",10,0,0,0
 5466 .stabs "__GLOBAL_$I$BitString_cc",4,0,0,0
 5467 	.even
 5468 .globl __GLOBAL_$I$BitString_cc
 5469 __GLOBAL_$I$BitString_cc:
 5470 	link a6,#0
 5471 	movel #__nilBitStrRep,__nil_BitString
 5472 	unlk a6
 5473 	rts
 5474 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$BitString_cc

============ Listing Complete ============
============ Listing of EH.cc ============ 	PAGE 1


    1 /* Library code for programs which use -fhandle-exceptions.
    2    Note: do *not* compile this with -fhandle-exceptions.  */
    3 
    4 
    5 #include <setjmp.h>
    6 #include <stream.h>
    7 
    8 struct
    9 ExceptionHandler
   10 {
   11   ExceptionHandler *prev;
   12   jmp_buf handler;
   13   void *name;
   14   void *parameters;
   15   ExceptionHandler ();
   16   ~ExceptionHandler ();
   17 } EHS, *exceptionHandlerStack = &EHS;
   18 
   19 ExceptionHandler::ExceptionHandler ()
   20 {
   21   if (this == &EHS)
   22     {
   23       if (setjmp (EHS.handler))
   24 	{
   25 	  cerr << ("unhandled exception, aborting...\n");
   26 	  abort ();
   27 	}
   28     }
   29   else
   30     {
   31       this->prev = exceptionHandlerStack;
   32       exceptionHandlerStack = this;
   33     }
   34 }
   35 
   36 ExceptionHandler::~ExceptionHandler ()
   37 {
   38   exceptionHandlerStack = this->prev;
   39 }
   40 

============ Listing Complete ============
============ Listing of EH.s ============ 	PAGE 1


    1 #NO_APP
    2 gcc_compiled.:
    3 .globl _EHS
    4 .data
    5 	.even
    6 _EHS:
    7 	.skip 244
    8 .globl _exceptionHandlerStack
    9 	.even
   10 _exceptionHandlerStack:
   11 	.long _EHS
   12 .text
   13 LC0:
   14 	.ascii "unhandled exception, aborting...\12\0"
   15 	.even
   16 .globl ___16ExceptionHandler
   17 ___16ExceptionHandler:
   18 	link a6,#0
   19 	moveml #0x2020,sp@-
   20 	movel a6@(8),a2
   21 	cmpl #_EHS,a2
   22 	jne L808
   23 	pea _EHS+4
   24 	jbsr _setjmp
   25 	addqw #4,sp
   26 	tstl d0
   27 	jeq L816
   28 	lea _cerr,a2
   29 	movel #LC0,d0
   30 	clrl d2
   31 	tstl _cerr+4
   32 	jne L812
   33 	movel d0,sp@-
   34 	movel a2@,sp@-
   35 	jbsr _sputs__9streambufPCc
   36 	addqw #8,sp
   37 	moveq #-1,d1
   38 	cmpl d0,d1
   39 	jne L811
   40 L812:
   41 	moveq #1,d2
   42 L811:
   43 	tstl d2
   44 	jeq L814
   45 	moveq #2,d1
   46 	orl d1,a2@(4)
   47 L814:
   48 	jbsr _abort
   49 L808:
   50 	movel _exceptionHandlerStack,a2@
   51 	movel a2,_exceptionHandlerStack
   52 L816:
   53 	movel a2,d0
   54 	moveml a6@(-8),#0x404
   55 	unlk a6
============ Listing of EH.s ============	PAGE 2

   56 	rts
   57 	.even
   58 .globl __$_ExceptionHandler
   59 __$_ExceptionHandler:
   60 	link a6,#0
   61 	movel a6@(8),a0
   62 	movel a0@,_exceptionHandlerStack
   63 	tstl a6@(12)
   64 	jeq L820
   65 	movel a0,sp@-
   66 	jbsr ___builtin_delete
   67 L820:
   68 	unlk a6
   69 	rts
   70 .stabs "_fini",10,0,0,0
   71 .stabs "__GLOBAL_$D$EH_cc",4,0,0,0
   72 	.even
   73 .globl __GLOBAL_$D$EH_cc
   74 __GLOBAL_$D$EH_cc:
   75 	link a6,#0
   76 	clrl sp@-
   77 	pea _EHS
   78 	jbsr __$_ExceptionHandler
   79 	unlk a6
   80 	rts
   81 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$EH_cc
   82 .stabs "_init",10,0,0,0
   83 .stabs "__GLOBAL_$I$EH_cc",4,0,0,0
   84 	.even
   85 .globl __GLOBAL_$I$EH_cc
   86 __GLOBAL_$I$EH_cc:
   87 	link a6,#0
   88 	pea _EHS
   89 	jbsr ___16ExceptionHandler
   90 	unlk a6
   91 	rts
   92 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$EH_cc

============ Listing Complete ============
============ Listing of Rational.cc ============ 	PAGE 1


    1 /* 
    2 Copyright (C) 1988 Free Software Foundation
    3     written by Doug Lea (dl@rocky.oswego.edu)
    4 
    5 This file is part of GNU CC.
    6 
    7 GNU CC is distributed in the hope that it will be useful,
    8 but WITHOUT ANY WARRANTY.  No author or distributor
    9 accepts responsibility to anyone for the consequences of using it
   10 or for whether it serves any particular purpose or works at all,
   11 unless he says so in writing.  Refer to the GNU CC General Public
   12 License for full details.
   13 
   14 Everyone is granted permission to copy, modify and redistribute
   15 GNU CC, but only under the conditions described in the
   16 GNU CC General Public License.   A copy of this license is
   17 supposed to have been given to you along with GNU CC so you
   18 can know your rights and responsibilities.  It should be in a
   19 file named COPYING.  Among other things, the copyright notice
   20 and this notice must be preserved on all copies.  
   21 */
   22 
   23 #include <Rational.h>
   24 #include <std.h>
   25 #include <math.h>
   26 #include <values.h>
   27 
   28 
   29 
   30 void Rational::error(char* msg)
   31 {
   32   (*lib_error_handler)("Rational", msg);
   33 }
   34 
   35 static Integer _Int_One(1);
   36 
   37 void Rational::normalize()
   38 {
   39   int s = sign(den);
   40   if (s == 0)
   41     error("Zero denominator.");
   42   else if (s < 0)
   43   {
   44     den.negate();
   45     num.negate();
   46   }
   47 
   48   Integer g = gcd(num, den);
   49   if (ucompare(g, _Int_One) != 0)
   50   {
   51     num /= g;
   52     den /= g;
   53   }
   54 }
   55 
============ Listing of Rational.cc ============	PAGE 2

   56 RatTmp Rational::operator + (Rational& y)
   57 {
   58   return RatTmp(num * y.den + den * y.num, den * y.den);
   59 }
   60 
   61 RatTmp Rational::operator - (Rational& y)
   62 {
   63   return RatTmp(num * y.den - den * y.num, den * y.den);
   64 }
   65 
   66 RatTmp Rational::operator * (Rational& y)
   67 {
   68   return RatTmp(num * y.num, den * y.den);
   69 }
   70 
   71 RatTmp Rational::operator / (Rational& y)
   72 {
   73   return RatTmp(num * y.den, den * y.num);
   74 }
   75 
   76 RatTmp Rational::operator - ()
   77 {
   78   Integer d = den;
   79   return RatTmp(-num, d);
   80 }
   81 
   82 RatTmp RatTmp::operator - ()
   83 {
   84   num.negate();
   85   return *this;
   86 }
   87 
   88 RatTmp abs(Rational& x)
   89 {
   90   Integer d = x.den;
   91   return RatTmp(abs(x.num), d);
   92 }
   93 
   94 RatTmp abs(RatTmp& x)
   95 {
   96   x.num.abs();
   97   return x;
   98 }
   99 
  100 RatTmp sqr(Rational& x)
  101 {
  102   return RatTmp(x.num * x.num, x.den * x.den);
  103 }
  104 
  105 RatTmp sqr(RatTmp& x)
  106 {
  107   x.num *= x.num;
  108   x.den *= x.den;
  109   return x;
  110 }
============ Listing of Rational.cc ============	PAGE 3

  111 
  112 void Rational::operator +=(Rational& y)
  113 {
  114   num = num * y.den + den * y.num;
  115   den *= y.den;
  116   normalize();
  117 }
  118 
  119 void Rational::operator -=(Rational& y)
  120 {
  121   num = num * y.den - den * y.num;
  122   den *= y.den;
  123   normalize();
  124 }
  125 
  126 void Rational::operator *=(Rational& y)
  127 {
  128   num *= y.num;
  129   den *= y.den;
  130   normalize();
  131 }
  132 
  133 void Rational::operator /=(Rational& y)
  134 {
  135   if (&y == this)
  136   {
  137     Integer n = num * y.den;
  138     den *= y.num;
  139     num = n;
  140   }
  141   else
  142   {
  143     num *= y.den;
  144     den *= y.num;
  145   }
  146   normalize();
  147 }
  148 
  149 RatTmp RatTmp::operator + (Rational& y)
  150 {
  151   num = num * y.den + den * y.num;
  152   den *= y.den;
  153   normalize();
  154   return *this;
  155 }
  156 
  157 RatTmp RatTmp::operator - (Rational& y)
  158 {
  159   num = num * y.den - den * y.num;
  160   den *= y.den;
  161   normalize();
  162   return *this;
  163 }
  164 
  165 RatTmp RatTmp::operator * (Rational& y)
============ Listing of Rational.cc ============	PAGE 4

  166 {
  167   num *= y.num;
  168   den *= y.den;
  169   normalize();
  170   return *this;
  171 }
  172 
  173 RatTmp RatTmp::operator / (Rational& y)
  174 {
  175   if (&y == this)
  176   {
  177     Integer n = num * y.den;
  178     den *= y.num;
  179     num = n;
  180   }
  181   else
  182   {
  183     num *= y.den;
  184     den *= y.num;
  185   }
  186   normalize();
  187   return *this;
  188 }
  189 
  190 void Rational::invert()
  191 {
  192   Integer tmp = num;  
  193   num = den;  
  194   den = tmp;  
  195   int s = sign(den);
  196   if (s == 0)
  197     error("Zero denominator.");
  198   else if (s < 0)
  199   {
  200     den.negate();
  201     num.negate();
  202   }
  203 }
  204 
  205 int compare(Rational& x, Rational& y)
  206 {
  207   int xsgn = sign(x.num);
  208   int ysgn = sign(y.num);
  209   int d = xsgn - ysgn;
  210   if (d == 0 && xsgn != 0) d = compare(x.num * y.den, x.den * y.num);
  211   return d;
  212 }
  213 
  214 Rational::Rational(double x)
  215 {
  216   num = 0;
  217   den = 1;
  218   if (x != 0.0)
  219   {
  220     int neg = x < 0;
============ Listing of Rational.cc ============	PAGE 5

  221     if (neg)
  222       x = -x;
  223 
  224     const long shift = 15;         // a safe shift per step
  225     const double width = 32768.0;  // = 2^shift
  226     const int maxiter = 20;        // ought not be necessary, but just in case,
  227                                    // max 300 bits of precision
  228     int expt;
  229     double mantissa = frexp(x, &expt);
  230     long exponent = expt;
  231     double intpart;
  232     int k = 0;
  233     while (mantissa != 0.0 && k++ < maxiter)
  234     {
  235       mantissa *= width;
  236       mantissa = modf(mantissa, &intpart);
  237       num <<= shift;
  238       num += (long)intpart;
  239       exponent -= shift;
  240     }
  241     if (exponent > 0)
  242       num <<= exponent;
  243     else if (exponent < 0)
  244       den <<= -exponent;
  245     if (neg)
  246       num.negate();
  247   }
  248   normalize();
  249 }
  250 
  251 IntTmp floor(Rational& x)
  252 {
  253   Integer q, r;
  254   divide(x.num, x.den, q, r);
  255   if (sign(x.num) < 0 && sign(r) != 0) q--;
  256   return q;
  257 }
  258 
  259 IntTmp ceil(Rational& x)
  260 {
  261   Integer q, r;
  262   divide(x.num, x.den, q, r);
  263   if (sign(x.num) >= 0 && sign(r) != 0) q++;
  264   return q;
  265 }
  266 
  267 IntTmp round(Rational& x)
  268 {
  269   Integer q, r;
  270   divide(x.num, x.den, q, r);
  271   r <<= 1;
  272   if (ucompare(r, x.den) >= 0)
  273   {
  274     if (sign(x.num) >= 0)
  275       q++;
============ Listing of Rational.cc ============	PAGE 6

  276     else
  277       q--;
  278   }
  279   return q;
  280 }
  281 
  282 IntTmp trunc(Rational& x)
  283 {
  284   return x.num / x.den ;
  285 }
  286 
  287 IntTmp Rational::numerator()
  288 {
  289   Integer n = num;
  290   return n;
  291 }
  292 
  293 IntTmp Rational::denominator()
  294 {
  295   Integer d = den;
  296   return d;
  297 }
  298 
  299 RatTmp pow(Rational& x, Integer& y)
  300 {
  301   long yy = long(y);
  302   return pow(x, yy);
  303 }               
  304 
  305 Rational::operator double()
  306 {
  307   return ratio(num, den);
  308 }
  309 
  310 
  311 // power: no need to normalize since num & den already relatively prime
  312 
  313 RatTmp pow(Rational& x, long y)
  314 {
  315   Rational r;
  316   if (y >= 0)
  317   {
  318     r.num = pow(x.num, y);
  319     r.den = pow(x.den, y);
  320   }
  321   else
  322   {
  323     y = -y;
  324     r.den = pow(x.num, y);
  325     r.num = pow(x.den, y);
  326     if (sign(r.den) < 0)
  327     {
  328       r.num.negate();
  329       r.den.negate();
  330     }
============ Listing of Rational.cc ============	PAGE 7

  331   }
  332   return r;
  333 }
  334 
  335 
  336 ostream& operator << (ostream& s, Rational& y)
  337 {
  338   if (y.den == 1)
  339     s << Itoa(y.num);
  340   else
  341   {
  342     s << Itoa(y.num);
  343     s << "/";
  344     s << Itoa(y.den);
  345   }
  346   return s;
  347 }
  348 
  349 istream& operator >> (istream& s, Rational& y)
  350 {
  351   s >> y.num;
  352   if (s)
  353   {
  354     char ch = 0;
  355     s.get(ch);
  356     if (ch == '/')
  357     {
  358       s >> y.den;
  359       y.normalize();
  360     }
  361     else
  362     {
  363       s.unget(ch);
  364       y.den = 1;
  365     }
  366   }
  367   return s;
  368 }
  369 
  370 int Rational::OK()
  371 {
  372   int v = num.OK() && den.OK(); // have valid num and denom
  373   v &= sign(den) > 0;           // denominator positive;
  374   v &=  ucompare(gcd(num, den), _Int_One) == 0; // relatively prime
  375   if (!v) error("invariant failure");
  376   return v;
  377 }
  378 

============ Listing Complete ============
============ Listing of Rational.s ============ 	PAGE 1


    1 #NO_APP
    2 gcc_compiled.:
    3 .text
    4 LC0:
    5 	.ascii "Rational\0"
    6 	.even
    7 .globl _error__8RationalPc
    8 _error__8RationalPc:
    9 	link a6,#0
   10 	movel a6@(12),sp@-
   11 	pea LC0
   12 	movel _lib_error_handler,a0
   13 	jbsr a0@
   14 	unlk a6
   15 	rts
   16 .data
   17 	.even
   18 __Int_One:
   19 	.skip 4
   20 .text
   21 LC1:
   22 	.ascii "Zero denominator.\0"
   23 	.even
   24 .globl _normalize__8Rational
   25 _normalize__8Rational:
   26 	link a6,#-8
   27 	moveml #0x3c,sp@-
   28 	movel a6@(8),a5
   29 	lea a5@(4),a1
   30 	movel a1@,a0
   31 	tstw a0@
   32 	jne L1878
   33 	clrl d0
   34 	jra L1879
   35 L1878:
   36 	movel a1@,a0
   37 	cmpw #1,a0@(4)
   38 	jne L1880
   39 	moveq #1,d0
   40 	jra L1879
   41 L1880:
   42 	moveq #-1,d0
   43 L1879:
   44 	tstl d0
   45 	jne L1882
   46 	pea LC1
   47 	movel a5,sp@-
   48 	jbsr _error__8RationalPc
   49 	addqw #8,sp
   50 	jra L1883
   51 L1882:
   52 	tstl d0
   53 	jge L1883
   54 	movel a5@(4),a0
   55 	tstw a0@
============ Listing of Rational.s ============	PAGE 2

   56 	jeq L1885
   57 	tstw a0@(4)
   58 	seq d0
   59 	andw #1,d0
   60 	movew d0,a0@(4)
   61 L1885:
   62 	movel a5@,a0
   63 	tstw a0@
   64 	jeq L1883
   65 	tstw a0@(4)
   66 	seq d0
   67 	andw #1,d0
   68 	movew d0,a0@(4)
   69 L1883:
   70 	lea a6@(-4),a3
   71 	lea a5@(4),a4
   72 	lea a6@(-8),a2
   73 	movel a4@,sp@-
   74 	movel a5@,sp@-
   75 	jbsr _gcd__FP6IntRepT0
   76 	movel d0,d1
   77 	addqw #8,sp
   78 	clrl a2@
   79 	movel d1,a2@
   80 	movel a2,d0
   81 	movel d1,sp@-
   82 	clrl sp@-
   83 	jbsr _Icopy__FP6IntRepT0
   84 	movel d0,a3@
   85 	addqw #8,sp
   86 	movel a2@,sp@-
   87 	jbsr ___builtin_delete
   88 	addqw #4,sp
   89 	movel __Int_One,sp@-
   90 	movel a3@,sp@-
   91 	jbsr _ucompare__FP6IntRepT0
   92 	addqw #8,sp
   93 	tstl d0
   94 	jeq L1903
   95 	movel a5@,sp@-
   96 	movel a3@,sp@-
   97 	movel a5@,sp@-
   98 	lea _div__FP6IntRepN20,a2
   99 	jbsr a2@
  100 	movel d0,a5@
  101 	addw #12,sp
  102 	movel a4@,sp@-
  103 	movel a3@,sp@-
  104 	movel a4@,sp@-
  105 	jbsr a2@
  106 	movel d0,a4@
  107 	addw #12,sp
  108 L1903:
  109 	movel a6@(-4),sp@-
  110 	jbsr ___builtin_delete
============ Listing of Rational.s ============	PAGE 3

  111 	moveml a6@(-24),#0x3c00
  112 	unlk a6
  113 	rts
  114 	.even
  115 .globl _op$plus__8RationalR8Rational
  116 _op$plus__8RationalR8Rational:
  117 	link a6,#-52
  118 	moveml #0x303c,sp@-
  119 	movel a1,d3
  120 	movel a6@(8),a5
  121 	movel a6@(12),a3
  122 	lea a6@(-8),a2
  123 	movel a3,a0
  124 	addqw #4,a0
  125 	movel a0,a6@(-44)
  126 	lea a6@(-16),a4
  127 	clrl sp@-
  128 	movel a0@,sp@-
  129 	movel a5@+,sp@-
  130 	jbsr _multiply__FP6IntRepN20
  131 	addw #12,sp
  132 	clrl a4@
  133 	movel d0,a4@
  134 	movel a4,d0
  135 	movel a5,a6@(-48)
  136 	lea a6@(-20),a5
  137 	clrl sp@-
  138 	movel a3@,sp@-
  139 	movel a6@(-48),a0
  140 	movel a0@,sp@-
  141 	jbsr _multiply__FP6IntRepN20
  142 	movel d0,d1
  143 	addw #12,sp
  144 	clrl a5@
  145 	movel d1,a5@
  146 	movel a5,d0
  147 	lea a6@(-12),a3
  148 	movel a4@,sp@-
  149 	clrl sp@-
  150 	movel d1,sp@-
  151 	clrl sp@-
  152 	movel a4@,sp@-
  153 	jbsr _add__FP6IntRepiT0iT0
  154 	clrl a4@
  155 	addw #20,sp
  156 	clrl a3@
  157 	movel d0,a3@
  158 	movel a3,d0
  159 	movel a5@,sp@-
  160 	jbsr ___builtin_delete
  161 	addqw #4,sp
  162 	movel a4@,sp@-
  163 	jbsr ___builtin_delete
  164 	addqw #4,sp
  165 	lea a6@(-24),a4
============ Listing of Rational.s ============	PAGE 4

  166 	clrl sp@-
  167 	movel a6@(-44),a0
  168 	movel a0@,sp@-
  169 	movel a6@(-48),a0
  170 	movel a0@,sp@-
  171 	jbsr _multiply__FP6IntRepN20
  172 	addw #12,sp
  173 	clrl a4@
  174 	movel d0,a4@
  175 	movel a4,d0
  176 	clrl a2@
  177 	movel a2,a0
  178 	addqw #4,a0
  179 	movel a0,a6@(-52)
  180 	clrl a0@
  181 	lea a6@(-28),a5
  182 	clrl a5@
  183 	movel a3@,a5@
  184 	clrl a3@
  185 	movel a2@,sp@-
  186 	jbsr ___builtin_delete
  187 	movel a5@,a2@
  188 	clrl a5@
  189 	addqw #4,sp
  190 	clrl sp@-
  191 	jbsr ___builtin_delete
  192 	addqw #4,sp
  193 	lea a6@(-32),a5
  194 	clrl a5@
  195 	movel a4@,a5@
  196 	clrl a4@
  197 	movel a6@(-52),a0
  198 	movel a0@,sp@-
  199 	jbsr ___builtin_delete
  200 	movel a6@(-52),a0
  201 	movel a5@,a0@
  202 	clrl a5@
  203 	addqw #4,sp
  204 	clrl sp@-
  205 	jbsr ___builtin_delete
  206 	addqw #4,sp
  207 	movel a2,sp@-
  208 	jbsr _normalize__8Rational
  209 	addqw #4,sp
  210 	movel a4@,sp@-
  211 	jbsr ___builtin_delete
  212 	addqw #4,sp
  213 	movel a3@,sp@-
  214 	jbsr ___builtin_delete
  215 	addqw #4,sp
  216 	movel d3,a0
  217 	clrl a0@
  218 	movel d3,a4
  219 	addqw #4,a4
  220 	clrl a4@
============ Listing of Rational.s ============	PAGE 5

  221 	lea a6@(-36),a3
  222 	clrl a3@
  223 	movel a2@,a3@
  224 	clrl a2@
  225 	movel a0@,sp@-
  226 	jbsr ___builtin_delete
  227 	movel d3,a0
  228 	movel a3@,a0@
  229 	clrl a3@
  230 	addqw #4,sp
  231 	clrl sp@-
  232 	jbsr ___builtin_delete
  233 	addqw #4,sp
  234 	lea a6@(-40),a3
  235 	clrl a3@
  236 	movel a6@(-52),a0
  237 	movel a0@,a3@
  238 	clrl a0@
  239 	movel a4@,sp@-
  240 	jbsr ___builtin_delete
  241 	movel a3@,a4@
  242 	clrl a3@
  243 	addqw #4,sp
  244 	clrl sp@-
  245 	jbsr ___builtin_delete
  246 	addqw #4,sp
  247 	clrl d2
  248 	tstl a6@(-52)
  249 	jeq L2035
  250 	movel a6@(-52),a0
  251 	movel a0@,sp@-
  252 	jbsr ___builtin_delete
  253 	addqw #4,sp
  254 L2035:
  255 	tstl a2
  256 	jeq L2041
  257 	movel a2@,sp@-
  258 	jbsr ___builtin_delete
  259 	addqw #4,sp
  260 L2041:
  261 	tstl d2
  262 	jeq L1913
  263 	movel a2,sp@-
  264 	jbsr ___builtin_delete
  265 L1913:
  266 	movel d3,d0
  267 	moveml a6@(-76),#0x3c0c
  268 	unlk a6
  269 	rts
  270 	.even
  271 .globl _op$minus__8RationalR8Rational
  272 _op$minus__8RationalR8Rational:
  273 	link a6,#-52
  274 	moveml #0x303c,sp@-
  275 	movel a1,d3
============ Listing of Rational.s ============	PAGE 6

  276 	movel a6@(8),a5
  277 	movel a6@(12),a3
  278 	lea a6@(-8),a2
  279 	movel a3,a0
  280 	addqw #4,a0
  281 	movel a0,a6@(-44)
  282 	lea a6@(-16),a4
  283 	clrl sp@-
  284 	movel a0@,sp@-
  285 	movel a5@+,sp@-
  286 	jbsr _multiply__FP6IntRepN20
  287 	addw #12,sp
  288 	clrl a4@
  289 	movel d0,a4@
  290 	movel a4,d0
  291 	movel a5,a6@(-48)
  292 	lea a6@(-20),a5
  293 	clrl sp@-
  294 	movel a3@,sp@-
  295 	movel a6@(-48),a0
  296 	movel a0@,sp@-
  297 	jbsr _multiply__FP6IntRepN20
  298 	movel d0,d1
  299 	addw #12,sp
  300 	clrl a5@
  301 	movel d1,a5@
  302 	movel a5,d0
  303 	lea a6@(-12),a3
  304 	movel a4@,sp@-
  305 	pea 1:w
  306 	movel d1,sp@-
  307 	clrl sp@-
  308 	movel a4@,sp@-
  309 	jbsr _add__FP6IntRepiT0iT0
  310 	clrl a4@
  311 	addw #20,sp
  312 	clrl a3@
  313 	movel d0,a3@
  314 	movel a3,d0
  315 	movel a5@,sp@-
  316 	jbsr ___builtin_delete
  317 	addqw #4,sp
  318 	movel a4@,sp@-
  319 	jbsr ___builtin_delete
  320 	addqw #4,sp
  321 	lea a6@(-24),a4
  322 	clrl sp@-
  323 	movel a6@(-44),a0
  324 	movel a0@,sp@-
  325 	movel a6@(-48),a0
  326 	movel a0@,sp@-
  327 	jbsr _multiply__FP6IntRepN20
  328 	addw #12,sp
  329 	clrl a4@
  330 	movel d0,a4@
============ Listing of Rational.s ============	PAGE 7

  331 	movel a4,d0
  332 	clrl a2@
  333 	movel a2,a0
  334 	addqw #4,a0
  335 	movel a0,a6@(-52)
  336 	clrl a0@
  337 	lea a6@(-28),a5
  338 	clrl a5@
  339 	movel a3@,a5@
  340 	clrl a3@
  341 	movel a2@,sp@-
  342 	jbsr ___builtin_delete
  343 	movel a5@,a2@
  344 	clrl a5@
  345 	addqw #4,sp
  346 	clrl sp@-
  347 	jbsr ___builtin_delete
  348 	addqw #4,sp
  349 	lea a6@(-32),a5
  350 	clrl a5@
  351 	movel a4@,a5@
  352 	clrl a4@
  353 	movel a6@(-52),a0
  354 	movel a0@,sp@-
  355 	jbsr ___builtin_delete
  356 	movel a6@(-52),a0
  357 	movel a5@,a0@
  358 	clrl a5@
  359 	addqw #4,sp
  360 	clrl sp@-
  361 	jbsr ___builtin_delete
  362 	addqw #4,sp
  363 	movel a2,sp@-
  364 	jbsr _normalize__8Rational
  365 	addqw #4,sp
  366 	movel a4@,sp@-
  367 	jbsr ___builtin_delete
  368 	addqw #4,sp
  369 	movel a3@,sp@-
  370 	jbsr ___builtin_delete
  371 	addqw #4,sp
  372 	movel d3,a0
  373 	clrl a0@
  374 	movel d3,a4
  375 	addqw #4,a4
  376 	clrl a4@
  377 	lea a6@(-36),a3
  378 	clrl a3@
  379 	movel a2@,a3@
  380 	clrl a2@
  381 	movel a0@,sp@-
  382 	jbsr ___builtin_delete
  383 	movel d3,a0
  384 	movel a3@,a0@
  385 	clrl a3@
============ Listing of Rational.s ============	PAGE 8

  386 	addqw #4,sp
  387 	clrl sp@-
  388 	jbsr ___builtin_delete
  389 	addqw #4,sp
  390 	lea a6@(-40),a3
  391 	clrl a3@
  392 	movel a6@(-52),a0
  393 	movel a0@,a3@
  394 	clrl a0@
  395 	movel a4@,sp@-
  396 	jbsr ___builtin_delete
  397 	movel a3@,a4@
  398 	clrl a3@
  399 	addqw #4,sp
  400 	clrl sp@-
  401 	jbsr ___builtin_delete
  402 	addqw #4,sp
  403 	clrl d2
  404 	tstl a6@(-52)
  405 	jeq L2170
  406 	movel a6@(-52),a0
  407 	movel a0@,sp@-
  408 	jbsr ___builtin_delete
  409 	addqw #4,sp
  410 L2170:
  411 	tstl a2
  412 	jeq L2176
  413 	movel a2@,sp@-
  414 	jbsr ___builtin_delete
  415 	addqw #4,sp
  416 L2176:
  417 	tstl d2
  418 	jeq L2048
  419 	movel a2,sp@-
  420 	jbsr ___builtin_delete
  421 L2048:
  422 	movel d3,d0
  423 	moveml a6@(-76),#0x3c0c
  424 	unlk a6
  425 	rts
  426 	.even
  427 .globl _op$mult__8RationalR8Rational
  428 _op$mult__8RationalR8Rational:
  429 	link a6,#-36
  430 	moveml #0x303c,sp@-
  431 	movel a1,d3
  432 	movel a6@(8),a5
  433 	movel a6@(12),d2
  434 	lea a6@(-8),a2
  435 	lea a6@(-12),a3
  436 	clrl sp@-
  437 	movel d2,a0
  438 	addql #4,d2
  439 	movel a0@,sp@-
  440 	movel a5@+,sp@-
============ Listing of Rational.s ============	PAGE 9

  441 	jbsr _multiply__FP6IntRepN20
  442 	addw #12,sp
  443 	clrl a3@
  444 	movel d0,a3@
  445 	movel a3,d0
  446 	lea a6@(-16),a4
  447 	clrl sp@-
  448 	movel d2,a0
  449 	movel a0@,sp@-
  450 	movel a5@,sp@-
  451 	jbsr _multiply__FP6IntRepN20
  452 	addw #12,sp
  453 	clrl a4@
  454 	movel d0,a4@
  455 	movel a4,d0
  456 	clrl a2@
  457 	movel a2,a0
  458 	addqw #4,a0
  459 	movel a0,a6@(-36)
  460 	clrl a0@
  461 	lea a6@(-20),a5
  462 	clrl a5@
  463 	movel a3@,a5@
  464 	clrl a3@
  465 	movel a2@,sp@-
  466 	jbsr ___builtin_delete
  467 	movel a5@,a2@
  468 	clrl a5@
  469 	addqw #4,sp
  470 	clrl sp@-
  471 	jbsr ___builtin_delete
  472 	addqw #4,sp
  473 	lea a6@(-24),a5
  474 	clrl a5@
  475 	movel a4@,a5@
  476 	clrl a4@
  477 	movel a6@(-36),a0
  478 	movel a0@,sp@-
  479 	jbsr ___builtin_delete
  480 	movel a6@(-36),a0
  481 	movel a5@,a0@
  482 	clrl a5@
  483 	addqw #4,sp
  484 	clrl sp@-
  485 	jbsr ___builtin_delete
  486 	addqw #4,sp
  487 	movel a2,sp@-
  488 	jbsr _normalize__8Rational
  489 	addqw #4,sp
  490 	movel a4@,sp@-
  491 	jbsr ___builtin_delete
  492 	addqw #4,sp
  493 	movel a3@,sp@-
  494 	jbsr ___builtin_delete
  495 	addqw #4,sp
============ Listing of Rational.s ============	PAGE 10

  496 	movel d3,a0
  497 	clrl a0@
  498 	movel d3,a4
  499 	addqw #4,a4
  500 	clrl a4@
  501 	lea a6@(-28),a3
  502 	clrl a3@
  503 	movel a2@,a3@
  504 	clrl a2@
  505 	movel a0@,sp@-
  506 	jbsr ___builtin_delete
  507 	movel d3,a0
  508 	movel a3@,a0@
  509 	clrl a3@
  510 	addqw #4,sp
  511 	clrl sp@-
  512 	jbsr ___builtin_delete
  513 	addqw #4,sp
  514 	lea a6@(-32),a3
  515 	clrl a3@
  516 	movel a6@(-36),a0
  517 	movel a0@,a3@
  518 	clrl a0@
  519 	movel a4@,sp@-
  520 	jbsr ___builtin_delete
  521 	movel a3@,a4@
  522 	clrl a3@
  523 	addqw #4,sp
  524 	clrl sp@-
  525 	jbsr ___builtin_delete
  526 	addqw #4,sp
  527 	clrl d2
  528 	tstl a6@(-36)
  529 	jeq L2279
  530 	movel a6@(-36),a0
  531 	movel a0@,sp@-
  532 	jbsr ___builtin_delete
  533 	addqw #4,sp
  534 L2279:
  535 	tstl a2
  536 	jeq L2285
  537 	movel a2@,sp@-
  538 	jbsr ___builtin_delete
  539 	addqw #4,sp
  540 L2285:
  541 	tstl d2
  542 	jeq L2183
  543 	movel a2,sp@-
  544 	jbsr ___builtin_delete
  545 L2183:
  546 	movel d3,d0
  547 	moveml a6@(-60),#0x3c0c
  548 	unlk a6
  549 	rts
  550 	.even
============ Listing of Rational.s ============	PAGE 11

  551 .globl _op$trunc_div__8RationalR8Rational
  552 _op$trunc_div__8RationalR8Rational:
  553 	link a6,#-36
  554 	moveml #0x303c,sp@-
  555 	movel a1,d3
  556 	movel a6@(8),a5
  557 	lea a6@(-8),a2
  558 	lea a6@(-12),a3
  559 	clrl sp@-
  560 	movel a6@(12),a0
  561 	movel a0@(4),sp@-
  562 	movel a5@+,sp@-
  563 	jbsr _multiply__FP6IntRepN20
  564 	addw #12,sp
  565 	clrl a3@
  566 	movel d0,a3@
  567 	movel a3,d0
  568 	lea a6@(-16),a4
  569 	clrl sp@-
  570 	movel a6@(12),a0
  571 	movel a0@,sp@-
  572 	movel a5@,sp@-
  573 	jbsr _multiply__FP6IntRepN20
  574 	addw #12,sp
  575 	clrl a4@
  576 	movel d0,a4@
  577 	movel a4,d0
  578 	clrl a2@
  579 	movel a2,a0
  580 	addqw #4,a0
  581 	movel a0,a6@(-36)
  582 	clrl a0@
  583 	lea a6@(-20),a5
  584 	clrl a5@
  585 	movel a3@,a5@
  586 	clrl a3@
  587 	movel a2@,sp@-
  588 	jbsr ___builtin_delete
  589 	movel a5@,a2@
  590 	clrl a5@
  591 	addqw #4,sp
  592 	clrl sp@-
  593 	jbsr ___builtin_delete
  594 	addqw #4,sp
  595 	lea a6@(-24),a5
  596 	clrl a5@
  597 	movel a4@,a5@
  598 	clrl a4@
  599 	movel a6@(-36),a0
  600 	movel a0@,sp@-
  601 	jbsr ___builtin_delete
  602 	movel a6@(-36),a0
  603 	movel a5@,a0@
  604 	clrl a5@
  605 	addqw #4,sp
============ Listing of Rational.s ============	PAGE 12

  606 	clrl sp@-
  607 	jbsr ___builtin_delete
  608 	addqw #4,sp
  609 	movel a2,sp@-
  610 	jbsr _normalize__8Rational
  611 	addqw #4,sp
  612 	movel a4@,sp@-
  613 	jbsr ___builtin_delete
  614 	addqw #4,sp
  615 	movel a3@,sp@-
  616 	jbsr ___builtin_delete
  617 	addqw #4,sp
  618 	movel d3,a0
  619 	clrl a0@
  620 	movel d3,a4
  621 	addqw #4,a4
  622 	clrl a4@
  623 	lea a6@(-28),a3
  624 	clrl a3@
  625 	movel a2@,a3@
  626 	clrl a2@
  627 	movel a0@,sp@-
  628 	jbsr ___builtin_delete
  629 	movel d3,a0
  630 	movel a3@,a0@
  631 	clrl a3@
  632 	addqw #4,sp
  633 	clrl sp@-
  634 	jbsr ___builtin_delete
  635 	addqw #4,sp
  636 	lea a6@(-32),a3
  637 	clrl a3@
  638 	movel a6@(-36),a0
  639 	movel a0@,a3@
  640 	clrl a0@
  641 	movel a4@,sp@-
  642 	jbsr ___builtin_delete
  643 	movel a3@,a4@
  644 	clrl a3@
  645 	addqw #4,sp
  646 	clrl sp@-
  647 	jbsr ___builtin_delete
  648 	addqw #4,sp
  649 	clrl d2
  650 	tstl a6@(-36)
  651 	jeq L2388
  652 	movel a6@(-36),a0
  653 	movel a0@,sp@-
  654 	jbsr ___builtin_delete
  655 	addqw #4,sp
  656 L2388:
  657 	tstl a2
  658 	jeq L2394
  659 	movel a2@,sp@-
  660 	jbsr ___builtin_delete
============ Listing of Rational.s ============	PAGE 13

  661 	addqw #4,sp
  662 L2394:
  663 	tstl d2
  664 	jeq L2292
  665 	movel a2,sp@-
  666 	jbsr ___builtin_delete
  667 L2292:
  668 	movel d3,d0
  669 	moveml a6@(-60),#0x3c0c
  670 	unlk a6
  671 	rts
  672 	.even
  673 .globl _op$negate__8Rational
  674 _op$negate__8Rational:
  675 	link a6,#-40
  676 	moveml #0x383c,sp@-
  677 	movel a1,d3
  678 	movel a6@(8),a3
  679 	lea a6@(-4),a2
  680 	movel a3@(4),sp@-
  681 	clrl sp@-
  682 	jbsr _Icopy__FP6IntRepT0
  683 	movel d0,a2@
  684 	addqw #8,sp
  685 	moveq #-12,d4
  686 	addl a6,d4
  687 	movel d4,a6@(-36)
  688 	lea a6@(-16),a2
  689 	movel a3@,a1
  690 	tstw a1@
  691 	jne L2404
  692 	movew a1@(4),d1
  693 	extl d1
  694 	jra L2405
  695 L2404:
  696 	movel a3@,a0
  697 	tstw a0@(4)
  698 	seq d0
  699 	moveq #1,d1
  700 	andl d0,d1
  701 L2405:
  702 	movel a3@,a6@(-40)
  703 	clrl d0
  704 	movel a6@(-40),a0
  705 	movew a0@,d0
  706 	movel d0,sp@-
  707 	movel d1,sp@-
  708 	clrl d0
  709 	movew a0@,d0
  710 	movel d0,sp@-
  711 	movel a3@,d4
  712 	addql #6,d4
  713 	movel d4,sp@-
  714 	clrl sp@-
  715 	jbsr _Ialloc__FP6IntRepPCUsiii
============ Listing of Rational.s ============	PAGE 14

  716 	addw #20,sp
  717 	clrl a2@
  718 	movel d0,a2@
  719 	movel a2,d0
  720 	lea a6@(-16),a2
  721 	lea a6@(-4),a3
  722 	movel a6@(-36),a0
  723 	clrl a0@
  724 	movel a0,a5
  725 	addqw #4,a5
  726 	clrl a5@
  727 	lea a6@(-20),a4
  728 	clrl a4@
  729 	movel a2@,a4@
  730 	clrl a2@
  731 	movel a0@,sp@-
  732 	jbsr ___builtin_delete
  733 	movel a6@(-36),a0
  734 	movel a4@,a0@
  735 	clrl a4@
  736 	addqw #4,sp
  737 	clrl sp@-
  738 	jbsr ___builtin_delete
  739 	addqw #4,sp
  740 	lea a6@(-24),a4
  741 	clrl a4@
  742 	movel a3@,a4@
  743 	clrl a3@
  744 	movel a5@,sp@-
  745 	jbsr ___builtin_delete
  746 	movel a4@,a5@
  747 	clrl a4@
  748 	addqw #4,sp
  749 	clrl sp@-
  750 	jbsr ___builtin_delete
  751 	addqw #4,sp
  752 	movel a6@(-36),sp@-
  753 	jbsr _normalize__8Rational
  754 	addqw #4,sp
  755 	movel a2@,sp@-
  756 	jbsr ___builtin_delete
  757 	addqw #4,sp
  758 	lea a6@(-12),a2
  759 	movel d3,a0
  760 	clrl a0@
  761 	movel d3,a4
  762 	addqw #4,a4
  763 	clrl a4@
  764 	lea a6@(-28),a3
  765 	clrl a3@
  766 	movel a2@,a3@
  767 	clrl a2@
  768 	movel a0@,sp@-
  769 	jbsr ___builtin_delete
  770 	movel d3,a0
============ Listing of Rational.s ============	PAGE 15

  771 	movel a3@,a0@
  772 	clrl a3@
  773 	addqw #4,sp
  774 	clrl sp@-
  775 	jbsr ___builtin_delete
  776 	addqw #4,sp
  777 	lea a6@(-32),a3
  778 	lea a2@(4),a5
  779 	clrl a3@
  780 	movel a5@,a3@
  781 	clrl a5@
  782 	movel a4@,sp@-
  783 	jbsr ___builtin_delete
  784 	movel a3@,a4@
  785 	clrl a3@
  786 	addqw #4,sp
  787 	clrl sp@-
  788 	jbsr ___builtin_delete
  789 	addqw #4,sp
  790 	clrl d2
  791 	tstl a5
  792 	jeq L2487
  793 	movel a5@,sp@-
  794 	jbsr ___builtin_delete
  795 	addqw #4,sp
  796 L2487:
  797 	tstl a2
  798 	jeq L2493
  799 	movel a2@,sp@-
  800 	jbsr ___builtin_delete
  801 	addqw #4,sp
  802 L2493:
  803 	tstl d2
  804 	jeq L2479
  805 	movel a2,sp@-
  806 	jbsr ___builtin_delete
  807 	addqw #4,sp
  808 L2479:
  809 	movel a6@(-4),sp@-
  810 	jbsr ___builtin_delete
  811 	movel d3,d0
  812 	moveml a6@(-68),#0x3c1c
  813 	unlk a6
  814 	rts
  815 	.even
  816 .globl _op$negate__6RatTmp
  817 _op$negate__6RatTmp:
  818 	link a6,#-12
  819 	moveml #0x203c,sp@-
  820 	movel a1,d2
  821 	movel a6@(8),a5
  822 	movel a5@,a0
  823 	tstw a0@
  824 	jeq L2513
  825 	tstw a0@(4)
============ Listing of Rational.s ============	PAGE 16

  826 	seq d0
  827 	andw #1,d0
  828 	movew d0,a0@(4)
  829 L2513:
  830 	movel d2,a3
  831 	clrl a3@
  832 	addqw #4,a3
  833 	movel a3,a6@(-12)
  834 	clrl a3@
  835 	lea a6@(-4),a2
  836 	clrl a2@
  837 	movel a5@,a2@
  838 	clrl a5@+
  839 	movel d2,a3
  840 	movel a3@,sp@-
  841 	lea ___builtin_delete,a4
  842 	jbsr a4@
  843 	movel a2@,a3@
  844 	clrl a2@
  845 	addqw #4,sp
  846 	clrl sp@-
  847 	jbsr a4@
  848 	addqw #4,sp
  849 	lea a6@(-8),a2
  850 	movel a5,a0
  851 	clrl a2@
  852 	movel a0@,a2@
  853 	clrl a0@
  854 	movel a6@(-12),a3
  855 	movel a3@,sp@-
  856 	jbsr a4@
  857 	movel a2@,a3@
  858 	clrl a2@
  859 	addqw #4,sp
  860 	clrl sp@-
  861 	jbsr a4@
  862 	movel d2,d0
  863 	moveml a6@(-32),#0x3c04
  864 	unlk a6
  865 	rts
  866 	.even
  867 .globl _abs__FR8Rational
  868 _abs__FR8Rational:
  869 	link a6,#-40
  870 	moveml #0x303c,sp@-
  871 	movel a1,d3
  872 	movel a6@(8),a5
  873 	lea a6@(-4),a4
  874 	movel a5@(4),sp@-
  875 	clrl sp@-
  876 	jbsr _Icopy__FP6IntRepT0
  877 	movel d0,a4@
  878 	addqw #8,sp
  879 	lea a6@(-12),a2
  880 	lea a6@(-16),a3
============ Listing of Rational.s ============	PAGE 17

  881 	movel a5@,a6@(-40)
  882 	clrl d0
  883 	movel a6@(-40),a0
  884 	movew a0@,d0
  885 	movel d0,sp@-
  886 	pea 1:w
  887 	clrl d0
  888 	movew a0@,d0
  889 	movel d0,sp@-
  890 	movel a5@,a0
  891 	addqw #6,a0
  892 	movel a0,sp@-
  893 	clrl sp@-
  894 	jbsr _Ialloc__FP6IntRepPCUsiii
  895 	addw #20,sp
  896 	clrl a3@
  897 	movel d0,a3@
  898 	movel a3,d0
  899 	clrl a2@
  900 	movel a2,a0
  901 	addqw #4,a0
  902 	movel a0,a6@(-36)
  903 	clrl a0@
  904 	lea a6@(-20),a5
  905 	clrl a5@
  906 	movel a3@,a5@
  907 	clrl a3@
  908 	movel a2@,sp@-
  909 	jbsr ___builtin_delete
  910 	movel a5@,a2@
  911 	clrl a5@
  912 	addqw #4,sp
  913 	clrl sp@-
  914 	jbsr ___builtin_delete
  915 	addqw #4,sp
  916 	lea a6@(-24),a5
  917 	clrl a5@
  918 	movel a4@,a5@
  919 	clrl a4@
  920 	movel a6@(-36),a0
  921 	movel a0@,sp@-
  922 	jbsr ___builtin_delete
  923 	movel a6@(-36),a0
  924 	movel a5@,a0@
  925 	clrl a5@
  926 	addqw #4,sp
  927 	clrl sp@-
  928 	jbsr ___builtin_delete
  929 	addqw #4,sp
  930 	movel a2,sp@-
  931 	jbsr _normalize__8Rational
  932 	addqw #4,sp
  933 	movel a3@,sp@-
  934 	jbsr ___builtin_delete
  935 	addqw #4,sp
============ Listing of Rational.s ============	PAGE 18

  936 	movel d3,a0
  937 	clrl a0@
  938 	movel d3,a4
  939 	addqw #4,a4
  940 	clrl a4@
  941 	lea a6@(-28),a3
  942 	clrl a3@
  943 	movel a2@,a3@
  944 	clrl a2@
  945 	movel a0@,sp@-
  946 	jbsr ___builtin_delete
  947 	movel d3,a0
  948 	movel a3@,a0@
  949 	clrl a3@
  950 	addqw #4,sp
  951 	clrl sp@-
  952 	jbsr ___builtin_delete
  953 	addqw #4,sp
  954 	lea a6@(-32),a3
  955 	clrl a3@
  956 	movel a6@(-36),a0
  957 	movel a0@,a3@
  958 	clrl a0@
  959 	movel a4@,sp@-
  960 	jbsr ___builtin_delete
  961 	movel a3@,a4@
  962 	clrl a3@
  963 	addqw #4,sp
  964 	clrl sp@-
  965 	jbsr ___builtin_delete
  966 	addqw #4,sp
  967 	clrl d2
  968 	tstl a6@(-36)
  969 	jeq L2629
  970 	movel a6@(-36),a0
  971 	movel a0@,sp@-
  972 	jbsr ___builtin_delete
  973 	addqw #4,sp
  974 L2629:
  975 	tstl a2
  976 	jeq L2635
  977 	movel a2@,sp@-
  978 	jbsr ___builtin_delete
  979 	addqw #4,sp
  980 L2635:
  981 	tstl d2
  982 	jeq L2621
  983 	movel a2,sp@-
  984 	jbsr ___builtin_delete
  985 	addqw #4,sp
  986 L2621:
  987 	movel a6@(-4),sp@-
  988 	jbsr ___builtin_delete
  989 	movel d3,d0
  990 	moveml a6@(-64),#0x3c0c
============ Listing of Rational.s ============	PAGE 19

  991 	unlk a6
  992 	rts
  993 	.even
  994 .globl _abs__FR6RatTmp
  995 _abs__FR6RatTmp:
  996 	link a6,#-8
  997 	moveml #0x3c,sp@-
  998 	movel a1,a3
  999 	movel a6@(8),a4
 1000 	movel a4@,a0
 1001 	movew #1,a0@(4)
 1002 	clrl a3@
 1003 	lea a3@(4),a5
 1004 	clrl a5@
 1005 	lea a6@(-4),a2
 1006 	clrl a2@
 1007 	movel a4@,a2@
 1008 	clrl a4@+
 1009 	movel a3@,sp@-
 1010 	jbsr ___builtin_delete
 1011 	movel a2@,a3@
 1012 	clrl a2@
 1013 	addqw #4,sp
 1014 	clrl sp@-
 1015 	jbsr ___builtin_delete
 1016 	addqw #4,sp
 1017 	lea a6@(-8),a2
 1018 	clrl a2@
 1019 	movel a4@,a2@
 1020 	clrl a4@
 1021 	movel a5@,sp@-
 1022 	jbsr ___builtin_delete
 1023 	movel a2@,a5@
 1024 	clrl a2@
 1025 	addqw #4,sp
 1026 	clrl sp@-
 1027 	jbsr ___builtin_delete
 1028 	movel a3,d0
 1029 	moveml a6@(-24),#0x3c00
 1030 	unlk a6
 1031 	rts
 1032 	.even
 1033 .globl _sqr__FR8Rational
 1034 _sqr__FR8Rational:
 1035 	link a6,#-36
 1036 	moveml #0x303c,sp@-
 1037 	movel a1,d3
 1038 	movel a6@(8),a5
 1039 	lea a6@(-8),a2
 1040 	lea a6@(-12),a3
 1041 	clrl sp@-
 1042 	movel a5@,sp@-
 1043 	movel a5@+,sp@-
 1044 	jbsr _multiply__FP6IntRepN20
 1045 	addw #12,sp
============ Listing of Rational.s ============	PAGE 20

 1046 	clrl a3@
 1047 	movel d0,a3@
 1048 	movel a3,d0
 1049 	lea a6@(-16),a4
 1050 	clrl sp@-
 1051 	movel a5@,sp@-
 1052 	movel a5@,sp@-
 1053 	jbsr _multiply__FP6IntRepN20
 1054 	addw #12,sp
 1055 	clrl a4@
 1056 	movel d0,a4@
 1057 	movel a4,d0
 1058 	clrl a2@
 1059 	movel a2,a0
 1060 	addqw #4,a0
 1061 	movel a0,a6@(-36)
 1062 	clrl a0@
 1063 	lea a6@(-20),a5
 1064 	clrl a5@
 1065 	movel a3@,a5@
 1066 	clrl a3@
 1067 	movel a2@,sp@-
 1068 	jbsr ___builtin_delete
 1069 	movel a5@,a2@
 1070 	clrl a5@
 1071 	addqw #4,sp
 1072 	clrl sp@-
 1073 	jbsr ___builtin_delete
 1074 	addqw #4,sp
 1075 	lea a6@(-24),a5
 1076 	clrl a5@
 1077 	movel a4@,a5@
 1078 	clrl a4@
 1079 	movel a6@(-36),a0
 1080 	movel a0@,sp@-
 1081 	jbsr ___builtin_delete
 1082 	movel a6@(-36),a0
 1083 	movel a5@,a0@
 1084 	clrl a5@
 1085 	addqw #4,sp
 1086 	clrl sp@-
 1087 	jbsr ___builtin_delete
 1088 	addqw #4,sp
 1089 	movel a2,sp@-
 1090 	jbsr _normalize__8Rational
 1091 	addqw #4,sp
 1092 	movel a4@,sp@-
 1093 	jbsr ___builtin_delete
 1094 	addqw #4,sp
 1095 	movel a3@,sp@-
 1096 	jbsr ___builtin_delete
 1097 	addqw #4,sp
 1098 	movel d3,a0
 1099 	clrl a0@
 1100 	movel d3,a4
============ Listing of Rational.s ============	PAGE 21

 1101 	addqw #4,a4
 1102 	clrl a4@
 1103 	lea a6@(-28),a3
 1104 	clrl a3@
 1105 	movel a2@,a3@
 1106 	clrl a2@
 1107 	movel a0@,sp@-
 1108 	jbsr ___builtin_delete
 1109 	movel d3,a0
 1110 	movel a3@,a0@
 1111 	clrl a3@
 1112 	addqw #4,sp
 1113 	clrl sp@-
 1114 	jbsr ___builtin_delete
 1115 	addqw #4,sp
 1116 	lea a6@(-32),a3
 1117 	clrl a3@
 1118 	movel a6@(-36),a0
 1119 	movel a0@,a3@
 1120 	clrl a0@
 1121 	movel a4@,sp@-
 1122 	jbsr ___builtin_delete
 1123 	movel a3@,a4@
 1124 	clrl a3@
 1125 	addqw #4,sp
 1126 	clrl sp@-
 1127 	jbsr ___builtin_delete
 1128 	addqw #4,sp
 1129 	clrl d2
 1130 	tstl a6@(-36)
 1131 	jeq L2782
 1132 	movel a6@(-36),a0
 1133 	movel a0@,sp@-
 1134 	jbsr ___builtin_delete
 1135 	addqw #4,sp
 1136 L2782:
 1137 	tstl a2
 1138 	jeq L2788
 1139 	movel a2@,sp@-
 1140 	jbsr ___builtin_delete
 1141 	addqw #4,sp
 1142 L2788:
 1143 	tstl d2
 1144 	jeq L2686
 1145 	movel a2,sp@-
 1146 	jbsr ___builtin_delete
 1147 L2686:
 1148 	movel d3,d0
 1149 	moveml a6@(-60),#0x3c0c
 1150 	unlk a6
 1151 	rts
 1152 	.even
 1153 .globl _sqr__FR6RatTmp
 1154 _sqr__FR6RatTmp:
 1155 	link a6,#-12
============ Listing of Rational.s ============	PAGE 22

 1156 	moveml #0x3c,sp@-
 1157 	movel a1,a3
 1158 	movel a6@(8),a5
 1159 	movel a5@,sp@-
 1160 	movel a5@,sp@-
 1161 	movel a5@,sp@-
 1162 	lea _multiply__FP6IntRepN20,a2
 1163 	jbsr a2@
 1164 	movel d0,a5@
 1165 	addw #12,sp
 1166 	lea a5@(4),a4
 1167 	movel a4@,sp@-
 1168 	movel a4@,sp@-
 1169 	movel a4@,sp@-
 1170 	jbsr a2@
 1171 	movel d0,a4@
 1172 	addw #12,sp
 1173 	clrl a3@
 1174 	movel a3,a0
 1175 	addqw #4,a0
 1176 	movel a0,a6@(-12)
 1177 	clrl a0@
 1178 	lea a6@(-4),a2
 1179 	clrl a2@
 1180 	movel a5@,a2@
 1181 	clrl a5@
 1182 	movel a3@,sp@-
 1183 	lea ___builtin_delete,a5
 1184 	jbsr a5@
 1185 	movel a2@,a3@
 1186 	clrl a2@
 1187 	addqw #4,sp
 1188 	clrl sp@-
 1189 	jbsr a5@
 1190 	addqw #4,sp
 1191 	lea a6@(-8),a2
 1192 	clrl a2@
 1193 	movel a4@,a2@
 1194 	clrl a4@
 1195 	movel a6@(-12),a0
 1196 	movel a0@,sp@-
 1197 	jbsr a5@
 1198 	movel a6@(-12),a0
 1199 	movel a2@,a0@
 1200 	clrl a2@
 1201 	addqw #4,sp
 1202 	clrl sp@-
 1203 	jbsr a5@
 1204 	movel a3,d0
 1205 	moveml a6@(-28),#0x3c00
 1206 	unlk a6
 1207 	rts
 1208 	.even
 1209 .globl _op$assign_plus__8RationalR8Rational
 1210 _op$assign_plus__8RationalR8Rational:
============ Listing of Rational.s ============	PAGE 23

 1211 	link a6,#-20
 1212 	moveml #0x3c,sp@-
 1213 	movel a6@(8),a5
 1214 	movel a6@(12),a4
 1215 	movel a4,a0
 1216 	addqw #4,a0
 1217 	movel a0,a6@(-16)
 1218 	lea a6@(-8),a2
 1219 	clrl sp@-
 1220 	movel a0@,sp@-
 1221 	movel a5@,sp@-
 1222 	jbsr _multiply__FP6IntRepN20
 1223 	addw #12,sp
 1224 	clrl a2@
 1225 	movel d0,a2@
 1226 	movel a2,d0
 1227 	movel a5,a0
 1228 	addqw #4,a0
 1229 	movel a0,a6@(-20)
 1230 	lea a6@(-12),a3
 1231 	clrl sp@-
 1232 	movel a4@,sp@-
 1233 	movel a0@,sp@-
 1234 	jbsr _multiply__FP6IntRepN20
 1235 	movel d0,d1
 1236 	addw #12,sp
 1237 	clrl a3@
 1238 	movel d1,a3@
 1239 	movel a3,d0
 1240 	lea a6@(-4),a4
 1241 	movel a2@,sp@-
 1242 	clrl sp@-
 1243 	movel d1,sp@-
 1244 	clrl sp@-
 1245 	movel a2@,sp@-
 1246 	jbsr _add__FP6IntRepiT0iT0
 1247 	clrl a2@
 1248 	addw #20,sp
 1249 	clrl a4@
 1250 	movel d0,a4@
 1251 	movel a4,d0
 1252 	movel a3@,sp@-
 1253 	lea ___builtin_delete,a3
 1254 	jbsr a3@
 1255 	addqw #4,sp
 1256 	movel a2@,sp@-
 1257 	jbsr a3@
 1258 	addqw #4,sp
 1259 	movel a5@,sp@-
 1260 	jbsr a3@
 1261 	movel a4@,a5@
 1262 	clrl a4@
 1263 	addqw #4,sp
 1264 	clrl sp@-
 1265 	jbsr a3@
============ Listing of Rational.s ============	PAGE 24

 1266 	addqw #4,sp
 1267 	movel a6@(-20),a0
 1268 	movel a0@,sp@-
 1269 	movel a6@(-16),a0
 1270 	movel a0@,sp@-
 1271 	movel a6@(-20),a0
 1272 	movel a0@,sp@-
 1273 	jbsr _multiply__FP6IntRepN20
 1274 	movel a6@(-20),a0
 1275 	movel d0,a0@
 1276 	addw #12,sp
 1277 	movel a5,sp@-
 1278 	jbsr _normalize__8Rational
 1279 	moveml a6@(-36),#0x3c00
 1280 	unlk a6
 1281 	rts
 1282 	.even
 1283 .globl _op$assign_minus__8RationalR8Rational
 1284 _op$assign_minus__8RationalR8Rational:
 1285 	link a6,#-20
 1286 	moveml #0x3c,sp@-
 1287 	movel a6@(8),a5
 1288 	movel a6@(12),a4
 1289 	movel a4,a0
 1290 	addqw #4,a0
 1291 	movel a0,a6@(-16)
 1292 	lea a6@(-8),a2
 1293 	clrl sp@-
 1294 	movel a0@,sp@-
 1295 	movel a5@,sp@-
 1296 	jbsr _multiply__FP6IntRepN20
 1297 	addw #12,sp
 1298 	clrl a2@
 1299 	movel d0,a2@
 1300 	movel a2,d0
 1301 	movel a5,a0
 1302 	addqw #4,a0
 1303 	movel a0,a6@(-20)
 1304 	lea a6@(-12),a3
 1305 	clrl sp@-
 1306 	movel a4@,sp@-
 1307 	movel a0@,sp@-
 1308 	jbsr _multiply__FP6IntRepN20
 1309 	movel d0,d1
 1310 	addw #12,sp
 1311 	clrl a3@
 1312 	movel d1,a3@
 1313 	movel a3,d0
 1314 	lea a6@(-4),a4
 1315 	movel a2@,sp@-
 1316 	pea 1:w
 1317 	movel d1,sp@-
 1318 	clrl sp@-
 1319 	movel a2@,sp@-
 1320 	jbsr _add__FP6IntRepiT0iT0
============ Listing of Rational.s ============	PAGE 25

 1321 	clrl a2@
 1322 	addw #20,sp
 1323 	clrl a4@
 1324 	movel d0,a4@
 1325 	movel a4,d0
 1326 	movel a3@,sp@-
 1327 	lea ___builtin_delete,a3
 1328 	jbsr a3@
 1329 	addqw #4,sp
 1330 	movel a2@,sp@-
 1331 	jbsr a3@
 1332 	addqw #4,sp
 1333 	movel a5@,sp@-
 1334 	jbsr a3@
 1335 	movel a4@,a5@
 1336 	clrl a4@
 1337 	addqw #4,sp
 1338 	clrl sp@-
 1339 	jbsr a3@
 1340 	addqw #4,sp
 1341 	movel a6@(-20),a0
 1342 	movel a0@,sp@-
 1343 	movel a6@(-16),a0
 1344 	movel a0@,sp@-
 1345 	movel a6@(-20),a0
 1346 	movel a0@,sp@-
 1347 	jbsr _multiply__FP6IntRepN20
 1348 	movel a6@(-20),a0
 1349 	movel d0,a0@
 1350 	addw #12,sp
 1351 	movel a5,sp@-
 1352 	jbsr _normalize__8Rational
 1353 	moveml a6@(-36),#0x3c00
 1354 	unlk a6
 1355 	rts
 1356 	.even
 1357 .globl _op$assign_mult__8RationalR8Rational
 1358 _op$assign_mult__8RationalR8Rational:
 1359 	link a6,#0
 1360 	moveml #0x3c,sp@-
 1361 	movel a6@(8),a2
 1362 	movel a6@(12),a3
 1363 	movel a2@,sp@-
 1364 	movel a3@+,sp@-
 1365 	movel a2@,sp@-
 1366 	lea _multiply__FP6IntRepN20,a4
 1367 	jbsr a4@
 1368 	movel d0,a2@
 1369 	addw #12,sp
 1370 	lea a2@(4),a5
 1371 	movel a5@,sp@-
 1372 	movel a3@,sp@-
 1373 	movel a5@,sp@-
 1374 	jbsr a4@
 1375 	movel d0,a5@
============ Listing of Rational.s ============	PAGE 26

 1376 	addw #12,sp
 1377 	movel a2,sp@-
 1378 	jbsr _normalize__8Rational
 1379 	moveml a6@(-16),#0x3c00
 1380 	unlk a6
 1381 	rts
 1382 	.even
 1383 .globl _op$assign_trunc_div__8RationalR8Rational
 1384 _op$assign_trunc_div__8RationalR8Rational:
 1385 	link a6,#-12
 1386 	moveml #0x3c,sp@-
 1387 	movel a6@(12),a0
 1388 	cmpl a6@(8),a0
 1389 	jne L2916
 1390 	lea a6@(-4),a2
 1391 	lea a6@(-8),a3
 1392 	clrl sp@-
 1393 	movel a0@(4),sp@-
 1394 	movel a6@(8),a0
 1395 	movel a0@,sp@-
 1396 	lea _multiply__FP6IntRepN20,a4
 1397 	jbsr a4@
 1398 	movel d0,d1
 1399 	addw #12,sp
 1400 	clrl a3@
 1401 	movel d1,a3@
 1402 	movel a3,d0
 1403 	movel d1,sp@-
 1404 	clrl sp@-
 1405 	lea _Icopy__FP6IntRepT0,a5
 1406 	jbsr a5@
 1407 	movel d0,a2@
 1408 	addqw #8,sp
 1409 	movel a3@,sp@-
 1410 	lea ___builtin_delete,a3
 1411 	jbsr a3@
 1412 	addqw #4,sp
 1413 	movel a6@(8),a0
 1414 	addqw #4,a0
 1415 	movel a0,a6@(-12)
 1416 	movel a0@,sp@-
 1417 	movel a6@(12),a0
 1418 	movel a0@,sp@-
 1419 	movel a6@(-12),a0
 1420 	movel a0@,sp@-
 1421 	jbsr a4@
 1422 	movel a6@(-12),a0
 1423 	movel d0,a0@
 1424 	addw #12,sp
 1425 	movel a2@,sp@-
 1426 	movel a6@(8),a0
 1427 	movel a0@,sp@-
 1428 	jbsr a5@
 1429 	movel a6@(8),a0
 1430 	movel d0,a0@
============ Listing of Rational.s ============	PAGE 27

 1431 	addqw #8,sp
 1432 	movel a2@,sp@-
 1433 	jbsr a3@
 1434 	addqw #4,sp
 1435 	jra L2939
 1436 L2916:
 1437 	movel a6@(8),a0
 1438 	movel a0@,sp@-
 1439 	movel a6@(12),a0
 1440 	movel a0@(4),sp@-
 1441 	movel a6@(8),a0
 1442 	movel a0@,sp@-
 1443 	lea _multiply__FP6IntRepN20,a2
 1444 	jbsr a2@
 1445 	movel a6@(8),a0
 1446 	movel d0,a0@
 1447 	addw #12,sp
 1448 	movel a0,a3
 1449 	addqw #4,a3
 1450 	movel a3@,sp@-
 1451 	movel a6@(12),a0
 1452 	movel a0@,sp@-
 1453 	movel a3@,sp@-
 1454 	jbsr a2@
 1455 	movel d0,a3@
 1456 	addw #12,sp
 1457 L2939:
 1458 	movel a6@(8),sp@-
 1459 	jbsr _normalize__8Rational
 1460 	moveml a6@(-28),#0x3c00
 1461 	unlk a6
 1462 	rts
 1463 	.even
 1464 .globl _op$plus__6RatTmpR8Rational
 1465 _op$plus__6RatTmpR8Rational:
 1466 	link a6,#-28
 1467 	moveml #0x3c,sp@-
 1468 	movel a1,a5
 1469 	movel a6@(12),a4
 1470 	movel a4,a0
 1471 	addqw #4,a0
 1472 	movel a0,a6@(-24)
 1473 	lea a6@(-8),a2
 1474 	clrl sp@-
 1475 	movel a0@,sp@-
 1476 	movel a6@(8),a0
 1477 	movel a0@,sp@-
 1478 	jbsr _multiply__FP6IntRepN20
 1479 	addw #12,sp
 1480 	clrl a2@
 1481 	movel d0,a2@
 1482 	movel a2,d0
 1483 	movel a6@(8),a0
 1484 	addqw #4,a0
 1485 	movel a0,a6@(-28)
============ Listing of Rational.s ============	PAGE 28

 1486 	lea a6@(-12),a3
 1487 	clrl sp@-
 1488 	movel a4@,sp@-
 1489 	movel a0@,sp@-
 1490 	jbsr _multiply__FP6IntRepN20
 1491 	movel d0,d1
 1492 	addw #12,sp
 1493 	clrl a3@
 1494 	movel d1,a3@
 1495 	movel a3,d0
 1496 	lea a6@(-4),a4
 1497 	movel a2@,sp@-
 1498 	clrl sp@-
 1499 	movel d1,sp@-
 1500 	clrl sp@-
 1501 	movel a2@,sp@-
 1502 	jbsr _add__FP6IntRepiT0iT0
 1503 	clrl a2@
 1504 	addw #20,sp
 1505 	clrl a4@
 1506 	movel d0,a4@
 1507 	movel a4,d0
 1508 	movel a3@,sp@-
 1509 	lea ___builtin_delete,a3
 1510 	jbsr a3@
 1511 	addqw #4,sp
 1512 	movel a2@,sp@-
 1513 	jbsr a3@
 1514 	addqw #4,sp
 1515 	movel a6@(8),a0
 1516 	movel a0@,sp@-
 1517 	jbsr a3@
 1518 	movel a6@(8),a0
 1519 	movel a4@,a0@
 1520 	clrl a4@
 1521 	addqw #4,sp
 1522 	clrl sp@-
 1523 	jbsr a3@
 1524 	addqw #4,sp
 1525 	movel a6@(-28),a0
 1526 	movel a0@,sp@-
 1527 	movel a6@(-24),a0
 1528 	movel a0@,sp@-
 1529 	movel a6@(-28),a0
 1530 	movel a0@,sp@-
 1531 	jbsr _multiply__FP6IntRepN20
 1532 	movel a6@(-28),a0
 1533 	movel d0,a0@
 1534 	addw #12,sp
 1535 	movel a6@(8),sp@-
 1536 	jbsr _normalize__8Rational
 1537 	addqw #4,sp
 1538 	clrl a5@
 1539 	lea a5@(4),a4
 1540 	clrl a4@
============ Listing of Rational.s ============	PAGE 29

 1541 	lea a6@(-16),a2
 1542 	clrl a2@
 1543 	movel a6@(8),a0
 1544 	movel a0@,a2@
 1545 	clrl a0@
 1546 	movel a5@,sp@-
 1547 	jbsr a3@
 1548 	movel a2@,a5@
 1549 	clrl a2@
 1550 	addqw #4,sp
 1551 	clrl sp@-
 1552 	jbsr a3@
 1553 	addqw #4,sp
 1554 	lea a6@(-20),a2
 1555 	clrl a2@
 1556 	movel a6@(-28),a0
 1557 	movel a0@,a2@
 1558 	clrl a0@
 1559 	movel a4@,sp@-
 1560 	jbsr a3@
 1561 	movel a2@,a4@
 1562 	clrl a2@
 1563 	addqw #4,sp
 1564 	clrl sp@-
 1565 	jbsr a3@
 1566 	movel a5,d0
 1567 	moveml a6@(-44),#0x3c00
 1568 	unlk a6
 1569 	rts
 1570 	.even
 1571 .globl _op$minus__6RatTmpR8Rational
 1572 _op$minus__6RatTmpR8Rational:
 1573 	link a6,#-28
 1574 	moveml #0x3c,sp@-
 1575 	movel a1,a5
 1576 	movel a6@(12),a4
 1577 	movel a4,a0
 1578 	addqw #4,a0
 1579 	movel a0,a6@(-24)
 1580 	lea a6@(-8),a2
 1581 	clrl sp@-
 1582 	movel a0@,sp@-
 1583 	movel a6@(8),a0
 1584 	movel a0@,sp@-
 1585 	jbsr _multiply__FP6IntRepN20
 1586 	addw #12,sp
 1587 	clrl a2@
 1588 	movel d0,a2@
 1589 	movel a2,d0
 1590 	movel a6@(8),a0
 1591 	addqw #4,a0
 1592 	movel a0,a6@(-28)
 1593 	lea a6@(-12),a3
 1594 	clrl sp@-
 1595 	movel a4@,sp@-
============ Listing of Rational.s ============	PAGE 30

 1596 	movel a0@,sp@-
 1597 	jbsr _multiply__FP6IntRepN20
 1598 	movel d0,d1
 1599 	addw #12,sp
 1600 	clrl a3@
 1601 	movel d1,a3@
 1602 	movel a3,d0
 1603 	lea a6@(-4),a4
 1604 	movel a2@,sp@-
 1605 	pea 1:w
 1606 	movel d1,sp@-
 1607 	clrl sp@-
 1608 	movel a2@,sp@-
 1609 	jbsr _add__FP6IntRepiT0iT0
 1610 	clrl a2@
 1611 	addw #20,sp
 1612 	clrl a4@
 1613 	movel d0,a4@
 1614 	movel a4,d0
 1615 	movel a3@,sp@-
 1616 	lea ___builtin_delete,a3
 1617 	jbsr a3@
 1618 	addqw #4,sp
 1619 	movel a2@,sp@-
 1620 	jbsr a3@
 1621 	addqw #4,sp
 1622 	movel a6@(8),a0
 1623 	movel a0@,sp@-
 1624 	jbsr a3@
 1625 	movel a6@(8),a0
 1626 	movel a4@,a0@
 1627 	clrl a4@
 1628 	addqw #4,sp
 1629 	clrl sp@-
 1630 	jbsr a3@
 1631 	addqw #4,sp
 1632 	movel a6@(-28),a0
 1633 	movel a0@,sp@-
 1634 	movel a6@(-24),a0
 1635 	movel a0@,sp@-
 1636 	movel a6@(-28),a0
 1637 	movel a0@,sp@-
 1638 	jbsr _multiply__FP6IntRepN20
 1639 	movel a6@(-28),a0
 1640 	movel d0,a0@
 1641 	addw #12,sp
 1642 	movel a6@(8),sp@-
 1643 	jbsr _normalize__8Rational
 1644 	addqw #4,sp
 1645 	clrl a5@
 1646 	lea a5@(4),a4
 1647 	clrl a4@
 1648 	lea a6@(-16),a2
 1649 	clrl a2@
 1650 	movel a6@(8),a0
============ Listing of Rational.s ============	PAGE 31

 1651 	movel a0@,a2@
 1652 	clrl a0@
 1653 	movel a5@,sp@-
 1654 	jbsr a3@
 1655 	movel a2@,a5@
 1656 	clrl a2@
 1657 	addqw #4,sp
 1658 	clrl sp@-
 1659 	jbsr a3@
 1660 	addqw #4,sp
 1661 	lea a6@(-20),a2
 1662 	clrl a2@
 1663 	movel a6@(-28),a0
 1664 	movel a0@,a2@
 1665 	clrl a0@
 1666 	movel a4@,sp@-
 1667 	jbsr a3@
 1668 	movel a2@,a4@
 1669 	clrl a2@
 1670 	addqw #4,sp
 1671 	clrl sp@-
 1672 	jbsr a3@
 1673 	movel a5,d0
 1674 	moveml a6@(-44),#0x3c00
 1675 	unlk a6
 1676 	rts
 1677 	.even
 1678 .globl _op$mult__6RatTmpR8Rational
 1679 _op$mult__6RatTmpR8Rational:
 1680 	link a6,#-12
 1681 	moveml #0x3c,sp@-
 1682 	movel a1,a3
 1683 	movel a6@(8),a5
 1684 	movel a6@(12),a2
 1685 	movel a5@,sp@-
 1686 	movel a2@+,sp@-
 1687 	movel a5@,sp@-
 1688 	jbsr _multiply__FP6IntRepN20
 1689 	movel d0,a5@
 1690 	addw #12,sp
 1691 	lea a5@(4),a4
 1692 	movel a4@,sp@-
 1693 	movel a2@,sp@-
 1694 	movel a4@,sp@-
 1695 	jbsr _multiply__FP6IntRepN20
 1696 	movel d0,a4@
 1697 	addw #12,sp
 1698 	movel a5,sp@-
 1699 	jbsr _normalize__8Rational
 1700 	addqw #4,sp
 1701 	clrl a3@
 1702 	movel a3,a0
 1703 	addqw #4,a0
 1704 	movel a0,a6@(-12)
 1705 	clrl a0@
============ Listing of Rational.s ============	PAGE 32

 1706 	lea a6@(-4),a2
 1707 	clrl a2@
 1708 	movel a5@,a2@
 1709 	clrl a5@
 1710 	movel a3@,sp@-
 1711 	lea ___builtin_delete,a5
 1712 	jbsr a5@
 1713 	movel a2@,a3@
 1714 	clrl a2@
 1715 	addqw #4,sp
 1716 	clrl sp@-
 1717 	jbsr a5@
 1718 	addqw #4,sp
 1719 	lea a6@(-8),a2
 1720 	clrl a2@
 1721 	movel a4@,a2@
 1722 	clrl a4@
 1723 	movel a6@(-12),a0
 1724 	movel a0@,sp@-
 1725 	jbsr a5@
 1726 	movel a6@(-12),a0
 1727 	movel a2@,a0@
 1728 	clrl a2@
 1729 	addqw #4,sp
 1730 	clrl sp@-
 1731 	jbsr a5@
 1732 	movel a3,d0
 1733 	moveml a6@(-28),#0x3c00
 1734 	unlk a6
 1735 	rts
 1736 	.even
 1737 .globl _op$trunc_div__6RatTmpR8Rational
 1738 _op$trunc_div__6RatTmpR8Rational:
 1739 	link a6,#-28
 1740 	moveml #0x203c,sp@-
 1741 	movel a1,d2
 1742 	movel a6@(8),a6@(-20)
 1743 	movel a6@(12),a0
 1744 	cmpl a6@(-20),a0
 1745 	jne L3120
 1746 	lea a6@(-4),a2
 1747 	lea a6@(-8),a3
 1748 	clrl sp@-
 1749 	movel a0@(4),sp@-
 1750 	movel a6@(-20),a0
 1751 	movel a0@,sp@-
 1752 	lea _multiply__FP6IntRepN20,a4
 1753 	jbsr a4@
 1754 	movel d0,d1
 1755 	addw #12,sp
 1756 	clrl a3@
 1757 	movel d1,a3@
 1758 	movel a3,d0
 1759 	movel d1,sp@-
 1760 	clrl sp@-
============ Listing of Rational.s ============	PAGE 33

 1761 	lea _Icopy__FP6IntRepT0,a5
 1762 	jbsr a5@
 1763 	movel d0,a2@
 1764 	addqw #8,sp
 1765 	movel a3@,sp@-
 1766 	lea ___builtin_delete,a3
 1767 	jbsr a3@
 1768 	addqw #4,sp
 1769 	movel a6@(-20),a0
 1770 	addqw #4,a0
 1771 	movel a0,a6@(-24)
 1772 	movel a0@,sp@-
 1773 	movel a6@(12),a0
 1774 	movel a0@,sp@-
 1775 	movel a6@(-24),a0
 1776 	movel a0@,sp@-
 1777 	jbsr a4@
 1778 	movel a6@(-24),a0
 1779 	movel d0,a0@
 1780 	addw #12,sp
 1781 	movel a2@,sp@-
 1782 	movel a6@(-20),a0
 1783 	movel a0@,sp@-
 1784 	jbsr a5@
 1785 	movel a6@(-20),a0
 1786 	movel d0,a0@
 1787 	addqw #8,sp
 1788 	movel a2@,sp@-
 1789 	jbsr a3@
 1790 	addqw #4,sp
 1791 	jra L3143
 1792 L3120:
 1793 	movel a6@(-20),a0
 1794 	movel a0@,sp@-
 1795 	movel a6@(12),a0
 1796 	movel a0@(4),sp@-
 1797 	movel a6@(-20),a0
 1798 	movel a0@,sp@-
 1799 	lea _multiply__FP6IntRepN20,a2
 1800 	jbsr a2@
 1801 	movel a6@(-20),a0
 1802 	movel d0,a0@
 1803 	addw #12,sp
 1804 	movel a0,a3
 1805 	addqw #4,a3
 1806 	movel a3@,sp@-
 1807 	movel a6@(12),a0
 1808 	movel a0@,sp@-
 1809 	movel a3@,sp@-
 1810 	jbsr a2@
 1811 	movel d0,a3@
 1812 	addw #12,sp
 1813 L3143:
 1814 	movel a6@(-20),sp@-
 1815 	jbsr _normalize__8Rational
============ Listing of Rational.s ============	PAGE 34

 1816 	addqw #4,sp
 1817 	movel d2,a0
 1818 	clrl a0@
 1819 	movel d2,a3
 1820 	addqw #4,a3
 1821 	clrl a3@
 1822 	lea a6@(-12),a2
 1823 	clrl a2@
 1824 	movel a6@(-20),a0
 1825 	movel a0@,a2@
 1826 	movel a6@(-20),a0
 1827 	addqw #4,a0
 1828 	movel a0,a6@(-20)
 1829 	subql #4,a0
 1830 	clrl a0@
 1831 	movel d2,a0
 1832 	movel a0@,sp@-
 1833 	lea ___builtin_delete,a4
 1834 	jbsr a4@
 1835 	movel d2,a0
 1836 	movel a2@,a0@
 1837 	clrl a2@
 1838 	addqw #4,sp
 1839 	clrl sp@-
 1840 	jbsr a4@
 1841 	addqw #4,sp
 1842 	lea a6@(-16),a2
 1843 	movel a6@(-20),a6@(-28)
 1844 	clrl a2@
 1845 	movel a6@(-28),a0
 1846 	movel a0@,a2@
 1847 	clrl a0@
 1848 	movel a3@,sp@-
 1849 	jbsr a4@
 1850 	movel a2@,a3@
 1851 	clrl a2@
 1852 	addqw #4,sp
 1853 	clrl sp@-
 1854 	jbsr a4@
 1855 	movel d2,d0
 1856 	moveml a6@(-48),#0x3c04
 1857 	unlk a6
 1858 	rts
 1859 	.even
 1860 .globl _invert__8Rational
 1861 _invert__8Rational:
 1862 	link a6,#-4
 1863 	moveml #0x3c,sp@-
 1864 	movel a6@(8),a5
 1865 	lea a6@(-4),a2
 1866 	movel a5@,sp@-
 1867 	clrl sp@-
 1868 	lea _Icopy__FP6IntRepT0,a3
 1869 	jbsr a3@
 1870 	movel d0,a2@
============ Listing of Rational.s ============	PAGE 35

 1871 	addqw #8,sp
 1872 	lea a5@(4),a4
 1873 	movel a4@,sp@-
 1874 	movel a5@,sp@-
 1875 	jbsr a3@
 1876 	movel d0,a5@
 1877 	addqw #8,sp
 1878 	movel a2@,sp@-
 1879 	movel a4@,sp@-
 1880 	jbsr a3@
 1881 	movel d0,a0
 1882 	movel a0,a4@
 1883 	addqw #8,sp
 1884 	movel a4,a1
 1885 	tstw a0@
 1886 	jne L3181
 1887 	clrl d0
 1888 	jra L3182
 1889 L3181:
 1890 	movel a1@,a0
 1891 	cmpw #1,a0@(4)
 1892 	jne L3183
 1893 	moveq #1,d0
 1894 	jra L3182
 1895 L3183:
 1896 	moveq #-1,d0
 1897 L3182:
 1898 	tstl d0
 1899 	jne L3185
 1900 	pea LC1
 1901 	movel a5,sp@-
 1902 	jbsr _error__8RationalPc
 1903 	addqw #8,sp
 1904 	jra L3186
 1905 L3185:
 1906 	tstl d0
 1907 	jge L3186
 1908 	movel a5@(4),a0
 1909 	tstw a0@
 1910 	jeq L3188
 1911 	tstw a0@(4)
 1912 	seq d0
 1913 	andw #1,d0
 1914 	movew d0,a0@(4)
 1915 L3188:
 1916 	movel a5@,a0
 1917 	tstw a0@
 1918 	jeq L3186
 1919 	tstw a0@(4)
 1920 	seq d0
 1921 	andw #1,d0
 1922 	movew d0,a0@(4)
 1923 L3186:
 1924 	movel a6@(-4),sp@-
 1925 	jbsr ___builtin_delete
============ Listing of Rational.s ============	PAGE 36

 1926 	moveml a6@(-20),#0x3c00
 1927 	unlk a6
 1928 	rts
 1929 	.even
 1930 .globl _compare__FR8RationalT0
 1931 _compare__FR8RationalT0:
 1932 	link a6,#-8
 1933 	moveml #0x203c,sp@-
 1934 	movel a6@(8),a3
 1935 	movel a6@(12),a5
 1936 	movel a3@,a0
 1937 	tstw a0@
 1938 	jne L3200
 1939 	clrl d0
 1940 	jra L3201
 1941 L3200:
 1942 	movel a3@,a0
 1943 	cmpw #1,a0@(4)
 1944 	jne L3202
 1945 	moveq #1,d0
 1946 	jra L3201
 1947 L3202:
 1948 	moveq #-1,d0
 1949 L3201:
 1950 	movel d0,d1
 1951 	movel a5@,a0
 1952 	tstw a0@
 1953 	jne L3205
 1954 	clrl d0
 1955 	jra L3206
 1956 L3205:
 1957 	movel a5@,a0
 1958 	cmpw #1,a0@(4)
 1959 	jne L3207
 1960 	moveq #1,d0
 1961 	jra L3206
 1962 L3207:
 1963 	moveq #-1,d0
 1964 L3206:
 1965 	movel d1,d2
 1966 	subl d0,d2
 1967 	jne L3209
 1968 	tstl d1
 1969 	jeq L3209
 1970 	lea a6@(-4),a2
 1971 	clrl sp@-
 1972 	movel a5@(4),sp@-
 1973 	movel a3@+,sp@-
 1974 	lea _multiply__FP6IntRepN20,a4
 1975 	jbsr a4@
 1976 	addw #12,sp
 1977 	clrl a2@
 1978 	movel d0,a2@
 1979 	movel a2,d0
 1980 	movel a3,a0
============ Listing of Rational.s ============	PAGE 37

 1981 	lea a6@(-8),a3
 1982 	clrl sp@-
 1983 	movel a5@,sp@-
 1984 	movel a0@,sp@-
 1985 	jbsr a4@
 1986 	movel d0,d1
 1987 	addw #12,sp
 1988 	clrl a3@
 1989 	movel d1,a3@
 1990 	movel a3,d0
 1991 	movel d1,sp@-
 1992 	movel a2@,sp@-
 1993 	jbsr _compare__FP6IntRepT0
 1994 	movel d0,d2
 1995 	addqw #8,sp
 1996 	movel a3@,sp@-
 1997 	lea ___builtin_delete,a3
 1998 	jbsr a3@
 1999 	addqw #4,sp
 2000 	movel a2@,sp@-
 2001 	jbsr a3@
 2002 L3209:
 2003 	movel d2,d0
 2004 	moveml a6@(-28),#0x3c04
 2005 	unlk a6
 2006 	rts
 2007 	.even
 2008 .globl ___8Rationald
 2009 ___8Rationald:
 2010 	link a6,#-12
 2011 	fmovem #0x4,sp@-
 2012 	moveml #0x3838,sp@-
 2013 	movel a6@(8),a4
 2014 	fmoved a6@(12),fp2
 2015 	clrl a4@
 2016 	lea a4@(4),a2
 2017 	clrl a2@
 2018 	clrl sp@-
 2019 	movel a4@,sp@-
 2020 	lea _Icopy_long__FP6IntRepl,a3
 2021 	jbsr a3@
 2022 	movel d0,a4@
 2023 	addqw #8,sp
 2024 	pea 1:w
 2025 	movel a2@,sp@-
 2026 	jbsr a3@
 2027 	movel d0,a2@
 2028 	addqw #8,sp
 2029 	ftstx fp2
 2030 	fjeq L3240
 2031 	fslt d0
 2032 	moveq #1,d4
 2033 	andl d0,d4
 2034 	jeq L3241
 2035 	fnegx fp2,fp2
============ Listing of Rational.s ============	PAGE 38

 2036 L3241:
 2037 	lea a6@(-4),a0
 2038 #APP
 2039 	fgetexpx fp2,fp0
 2040 #NO_APP
 2041 	fintrzx fp0,fp0
 2042 	fmovel fp0,d0
 2043 #APP
 2044 	fgetmanx fp2,fp0
 2045 #NO_APP
 2046 	ftstx fp0
 2047 	fjeq L3243
 2048 #APP
 2049 	fscaleb #-1,fp0
 2050 #NO_APP
 2051 	addql #1,d0
 2052 L3243:
 2053 	movel d0,a0@
 2054 	fmovex fp0,fp2
 2055 	movel a6@(-4),d2
 2056 	clrl d3
 2057 	ftstx fp2
 2058 	fjeq L3245
 2059 	lea a6@(-12),a2
 2060 L3249:
 2061 	addql #1,d3
 2062 	moveq #21,d1
 2063 	cmpl d3,d1
 2064 	jle L3245
 2065 	fmuld #0r32768,fp2
 2066 #APP
 2067 	fintrzx fp2,fp0
 2068 #NO_APP
 2069 	fmoved fp0,a2@
 2070 	fsubx fp0,fp2
 2071 	movel a4@,sp@-
 2072 	pea 15:w
 2073 	movel a4@,sp@-
 2074 	jbsr _lshift__FP6IntReplT0
 2075 	movel d0,a4@
 2076 	addw #12,sp
 2077 	fintrzd a6@(-12),fp0
 2078 	movel d0,sp@-
 2079 	fmovel fp0,sp@-
 2080 	clrl sp@-
 2081 	movel d0,sp@-
 2082 	jbsr _add__FP6IntRepilT0
 2083 	movel d0,a4@
 2084 	addw #16,sp
 2085 	moveq #-15,d1
 2086 	addl d1,d2
 2087 	ftstx fp2
 2088 	fjne L3249
 2089 L3245:
 2090 	tstl d2
============ Listing of Rational.s ============	PAGE 39

 2091 	jle L3250
 2092 	movel a4@,sp@-
 2093 	movel d2,sp@-
 2094 	movel a4@,sp@-
 2095 	jbsr _lshift__FP6IntReplT0
 2096 	movel d0,a4@
 2097 	jra L3261
 2098 L3250:
 2099 	tstl d2
 2100 	jge L3252
 2101 	lea a4@(4),a2
 2102 	movel a2@,sp@-
 2103 	negl d2
 2104 	movel d2,sp@-
 2105 	movel a2@,sp@-
 2106 	jbsr _lshift__FP6IntReplT0
 2107 	movel d0,a2@
 2108 L3261:
 2109 	addw #12,sp
 2110 L3252:
 2111 	tstl d4
 2112 	jeq L3240
 2113 	movel a4@,a0
 2114 	tstw a0@
 2115 	jeq L3240
 2116 	tstw a0@(4)
 2117 	seq d0
 2118 	andw #1,d0
 2119 	movew d0,a0@(4)
 2120 L3240:
 2121 	movel a4,sp@-
 2122 	jbsr _normalize__8Rational
 2123 	movel a4,d0
 2124 	moveml a6@(-48),#0x1c1c
 2125 	fmovem a6@(-24),#0x20
 2126 	unlk a6
 2127 	rts
 2128 	.even
 2129 .globl _floor__FR8Rational
 2130 _floor__FR8Rational:
 2131 	link a6,#-8
 2132 	moveml #0x38,sp@-
 2133 	movel a1,a4
 2134 	movel a6@(8),a2
 2135 	lea a6@(-4),a0
 2136 	clrl a0@
 2137 	lea a6@(-8),a1
 2138 	clrl a1@
 2139 	movel a1,sp@-
 2140 	movel a0,sp@-
 2141 	pea a2@(4)
 2142 	movel a2,sp@-
 2143 	jbsr _divide__FR7IntegerN30
 2144 	addw #16,sp
 2145 	movel a2@,a0
============ Listing of Rational.s ============	PAGE 40

 2146 	tstw a0@
 2147 	jne L3267
 2148 	clrl d0
 2149 	jra L3268
 2150 L3267:
 2151 	movel a2@,a0
 2152 	cmpw #1,a0@(4)
 2153 	jne L3269
 2154 	moveq #1,d0
 2155 	jra L3268
 2156 L3269:
 2157 	moveq #-1,d0
 2158 L3268:
 2159 	tstl d0
 2160 	jge L3265
 2161 	lea a6@(-8),a1
 2162 	movel a1@,a0
 2163 	tstw a0@
 2164 	jne L3272
 2165 	clrl d0
 2166 	jra L3273
 2167 L3272:
 2168 	movel a1@,a0
 2169 	cmpw #1,a0@(4)
 2170 	jne L3274
 2171 	moveq #1,d0
 2172 	jra L3273
 2173 L3274:
 2174 	moveq #-1,d0
 2175 L3273:
 2176 	tstl d0
 2177 	jeq L3265
 2178 	lea a6@(-4),a2
 2179 	movel a2@,sp@-
 2180 	pea -1:w
 2181 	clrl sp@-
 2182 	movel a2@,sp@-
 2183 	jbsr _add__FP6IntRepilT0
 2184 	movel d0,a2@
 2185 	addw #16,sp
 2186 L3265:
 2187 	lea a6@(-4),a2
 2188 	clrl a4@
 2189 	movel a2@,a4@
 2190 	clrl a2@
 2191 	movel a6@(-8),sp@-
 2192 	lea ___builtin_delete,a3
 2193 	jbsr a3@
 2194 	addqw #4,sp
 2195 	movel a2@,sp@-
 2196 	jbsr a3@
 2197 	movel a4,d0
 2198 	moveml a6@(-20),#0x1c00
 2199 	unlk a6
 2200 	rts
============ Listing of Rational.s ============	PAGE 41

 2201 	.even
 2202 .globl _ceil__FR8Rational
 2203 _ceil__FR8Rational:
 2204 	link a6,#-8
 2205 	moveml #0x38,sp@-
 2206 	movel a1,a4
 2207 	movel a6@(8),a2
 2208 	lea a6@(-4),a0
 2209 	clrl a0@
 2210 	lea a6@(-8),a1
 2211 	clrl a1@
 2212 	movel a1,sp@-
 2213 	movel a0,sp@-
 2214 	pea a2@(4)
 2215 	movel a2,sp@-
 2216 	jbsr _divide__FR7IntegerN30
 2217 	addw #16,sp
 2218 	movel a2@,a0
 2219 	tstw a0@
 2220 	jne L3308
 2221 	clrl d0
 2222 	jra L3309
 2223 L3308:
 2224 	movel a2@,a0
 2225 	cmpw #1,a0@(4)
 2226 	jne L3310
 2227 	moveq #1,d0
 2228 	jra L3309
 2229 L3310:
 2230 	moveq #-1,d0
 2231 L3309:
 2232 	tstl d0
 2233 	jlt L3306
 2234 	lea a6@(-8),a1
 2235 	movel a1@,a0
 2236 	tstw a0@
 2237 	jne L3313
 2238 	clrl d0
 2239 	jra L3314
 2240 L3313:
 2241 	movel a1@,a0
 2242 	cmpw #1,a0@(4)
 2243 	jne L3315
 2244 	moveq #1,d0
 2245 	jra L3314
 2246 L3315:
 2247 	moveq #-1,d0
 2248 L3314:
 2249 	tstl d0
 2250 	jeq L3306
 2251 	lea a6@(-4),a2
 2252 	movel a2@,sp@-
 2253 	pea 1:w
 2254 	clrl sp@-
 2255 	movel a2@,sp@-
============ Listing of Rational.s ============	PAGE 42

 2256 	jbsr _add__FP6IntRepilT0
 2257 	movel d0,a2@
 2258 	addw #16,sp
 2259 L3306:
 2260 	lea a6@(-4),a2
 2261 	clrl a4@
 2262 	movel a2@,a4@
 2263 	clrl a2@
 2264 	movel a6@(-8),sp@-
 2265 	lea ___builtin_delete,a3
 2266 	jbsr a3@
 2267 	addqw #4,sp
 2268 	movel a2@,sp@-
 2269 	jbsr a3@
 2270 	movel a4,d0
 2271 	moveml a6@(-20),#0x1c00
 2272 	unlk a6
 2273 	rts
 2274 	.even
 2275 .globl _round__FR8Rational
 2276 _round__FR8Rational:
 2277 	link a6,#-8
 2278 	moveml #0x3c,sp@-
 2279 	movel a1,a5
 2280 	movel a6@(8),a4
 2281 	lea a6@(-4),a0
 2282 	clrl a0@
 2283 	lea a6@(-8),a2
 2284 	clrl a2@
 2285 	movel a2,sp@-
 2286 	movel a0,sp@-
 2287 	lea a4@(4),a3
 2288 	movel a3,sp@-
 2289 	movel a4,sp@-
 2290 	jbsr _divide__FR7IntegerN30
 2291 	addw #16,sp
 2292 	movel a2@,sp@-
 2293 	pea 1:w
 2294 	movel a2@,sp@-
 2295 	jbsr _lshift__FP6IntReplT0
 2296 	movel d0,a2@
 2297 	addw #12,sp
 2298 	movel a3@,sp@-
 2299 	movel d0,sp@-
 2300 	jbsr _ucompare__FP6IntRepT0
 2301 	addqw #8,sp
 2302 	tstl d0
 2303 	jlt L3348
 2304 	movel a4@,a0
 2305 	tstw a0@
 2306 	jne L3352
 2307 	clrl d0
 2308 	jra L3353
 2309 L3352:
 2310 	movel a4@,a0
============ Listing of Rational.s ============	PAGE 43

 2311 	cmpw #1,a0@(4)
 2312 	jne L3354
 2313 	moveq #1,d0
 2314 	jra L3353
 2315 L3354:
 2316 	moveq #-1,d0
 2317 L3353:
 2318 	tstl d0
 2319 	jlt L3350
 2320 	lea a6@(-4),a2
 2321 	movel a2@,sp@-
 2322 	pea 1:w
 2323 	jra L3385
 2324 L3350:
 2325 	lea a6@(-4),a2
 2326 	movel a2@,sp@-
 2327 	pea -1:w
 2328 L3385:
 2329 	clrl sp@-
 2330 	movel a2@,sp@-
 2331 	jbsr _add__FP6IntRepilT0
 2332 	movel d0,a2@
 2333 	addw #16,sp
 2334 L3348:
 2335 	lea a6@(-4),a2
 2336 	clrl a5@
 2337 	movel a2@,a5@
 2338 	clrl a2@
 2339 	movel a6@(-8),sp@-
 2340 	lea ___builtin_delete,a3
 2341 	jbsr a3@
 2342 	addqw #4,sp
 2343 	movel a2@,sp@-
 2344 	jbsr a3@
 2345 	movel a5,d0
 2346 	moveml a6@(-24),#0x3c00
 2347 	unlk a6
 2348 	rts
 2349 	.even
 2350 .globl _trunc__FR8Rational
 2351 _trunc__FR8Rational:
 2352 	link a6,#-4
 2353 	moveml #0x30,sp@-
 2354 	movel a1,a3
 2355 	movel a6@(8),a0
 2356 	lea a6@(-4),a2
 2357 	clrl sp@-
 2358 	movel a0@(4),sp@-
 2359 	movel a0@,sp@-
 2360 	jbsr _div__FP6IntRepN20
 2361 	addw #12,sp
 2362 	clrl a2@
 2363 	movel d0,a2@
 2364 	movel a2,d0
 2365 	clrl a3@
============ Listing of Rational.s ============	PAGE 44

 2366 	movel a2@,a3@
 2367 	clrl a2@
 2368 	clrl sp@-
 2369 	jbsr ___builtin_delete
 2370 	movel a3,d0
 2371 	moveml a6@(-12),#0xc00
 2372 	unlk a6
 2373 	rts
 2374 	.even
 2375 .globl _numerator__8Rational
 2376 _numerator__8Rational:
 2377 	link a6,#-4
 2378 	moveml #0x30,sp@-
 2379 	movel a1,a2
 2380 	lea a6@(-4),a3
 2381 	movel a6@(8),a0
 2382 	movel a0@,sp@-
 2383 	clrl sp@-
 2384 	jbsr _Icopy__FP6IntRepT0
 2385 	movel d0,a3@
 2386 	addqw #8,sp
 2387 	clrl a2@
 2388 	movel a3@,a2@
 2389 	clrl a3@
 2390 	clrl sp@-
 2391 	jbsr ___builtin_delete
 2392 	movel a2,d0
 2393 	moveml a6@(-12),#0xc00
 2394 	unlk a6
 2395 	rts
 2396 	.even
 2397 .globl _denominator__8Rational
 2398 _denominator__8Rational:
 2399 	link a6,#-4
 2400 	moveml #0x30,sp@-
 2401 	movel a1,a3
 2402 	lea a6@(-4),a2
 2403 	movel a6@(8),a0
 2404 	addqw #4,a0
 2405 	movel a0@,sp@-
 2406 	clrl sp@-
 2407 	jbsr _Icopy__FP6IntRepT0
 2408 	movel d0,a2@
 2409 	addqw #8,sp
 2410 	clrl a3@
 2411 	movel a2@,a3@
 2412 	clrl a2@
 2413 	clrl sp@-
 2414 	jbsr ___builtin_delete
 2415 	movel a3,d0
 2416 	moveml a6@(-12),#0xc00
 2417 	unlk a6
 2418 	rts
 2419 	.even
 2420 .globl _pow__FR8RationalR7Integer
============ Listing of Rational.s ============	PAGE 45

 2421 _pow__FR8RationalR7Integer:
 2422 	link a6,#-16
 2423 	moveml #0x303c,sp@-
 2424 	movel a1,d2
 2425 	movel a6@(12),a0
 2426 	movel a0@,sp@-
 2427 	jbsr _Itolong__FP6IntRep
 2428 	addqw #4,sp
 2429 	movel d0,sp@-
 2430 	movel a6@(8),sp@-
 2431 	lea a6@(-8),a2
 2432 	movel a2,a1
 2433 	jbsr _pow__FR8Rationall
 2434 	addqw #8,sp
 2435 	movel d2,a0
 2436 	clrl a0@
 2437 	movel d2,a4
 2438 	addqw #4,a4
 2439 	clrl a4@
 2440 	lea a6@(-12),a3
 2441 	clrl a3@
 2442 	movel a2@,a3@
 2443 	clrl a2@
 2444 	movel a0@,sp@-
 2445 	jbsr ___builtin_delete
 2446 	movel d2,a0
 2447 	movel a3@,a0@
 2448 	clrl a3@
 2449 	addqw #4,sp
 2450 	clrl sp@-
 2451 	jbsr ___builtin_delete
 2452 	addqw #4,sp
 2453 	lea a6@(-16),a3
 2454 	lea a2@(4),a5
 2455 	clrl a3@
 2456 	movel a5@,a3@
 2457 	clrl a5@
 2458 	movel a4@,sp@-
 2459 	jbsr ___builtin_delete
 2460 	movel a3@,a4@
 2461 	clrl a3@
 2462 	addqw #4,sp
 2463 	clrl sp@-
 2464 	jbsr ___builtin_delete
 2465 	addqw #4,sp
 2466 	clrl d3
 2467 	tstl a5
 2468 	jeq L3475
 2469 	movel a5@,sp@-
 2470 	jbsr ___builtin_delete
 2471 	addqw #4,sp
 2472 L3475:
 2473 	tstl a2
 2474 	jeq L3481
 2475 	movel a2@,sp@-
============ Listing of Rational.s ============	PAGE 46

 2476 	jbsr ___builtin_delete
 2477 	addqw #4,sp
 2478 L3481:
 2479 	tstl d3
 2480 	jeq L3434
 2481 	movel a2,sp@-
 2482 	jbsr ___builtin_delete
 2483 L3434:
 2484 	movel d2,d0
 2485 	moveml a6@(-40),#0x3c0c
 2486 	unlk a6
 2487 	rts
 2488 	.even
 2489 .globl _type$d__8Rational
 2490 _type$d__8Rational:
 2491 	link a6,#0
 2492 	movel a6@(8),a0
 2493 	pea a0@(4)
 2494 	movel a0,sp@-
 2495 	jbsr _ratio__FR7IntegerT0
 2496 	unlk a6
 2497 	rts
 2498 	.even
 2499 .globl _pow__FR8Rationall
 2500 _pow__FR8Rationall:
 2501 	link a6,#-44
 2502 	moveml #0x303c,sp@-
 2503 	movel a1,d3
 2504 	movel a6@(8),a6@(-36)
 2505 	movel a6@(12),d2
 2506 	lea a6@(-8),a5
 2507 	clrl a5@
 2508 	movel a5,a4
 2509 	addqw #4,a4
 2510 	movel a4,a6@(-40)
 2511 	clrl a4@
 2512 	tstl d2
 2513 	jlt L3493
 2514 	lea a6@(-12),a2
 2515 	clrl sp@-
 2516 	movel d2,sp@-
 2517 	movel a6@(-36),a4
 2518 	addqw #4,a4
 2519 	movel a4,a6@(-36)
 2520 	subql #4,a4
 2521 	movel a4@,sp@-
 2522 	jbsr _power__FP6IntReplT0
 2523 	addw #12,sp
 2524 	clrl a2@
 2525 	movel d0,a2@
 2526 	movel a2,d0
 2527 	movel a5@,sp@-
 2528 	lea ___builtin_delete,a3
 2529 	jbsr a3@
 2530 	movel a2@,a5@
============ Listing of Rational.s ============	PAGE 47

 2531 	clrl a2@
 2532 	addqw #4,sp
 2533 	clrl sp@-
 2534 	jbsr a3@
 2535 	addqw #4,sp
 2536 	movel a6@(-36),a0
 2537 	lea a6@(-16),a2
 2538 	clrl sp@-
 2539 	movel d2,sp@-
 2540 	movel a0@,sp@-
 2541 	jbsr _power__FP6IntReplT0
 2542 	addw #12,sp
 2543 	clrl a2@
 2544 	movel d0,a2@
 2545 	movel a2,d0
 2546 	movel a6@(-40),a4
 2547 	movel a4@,sp@-
 2548 	jbsr a3@
 2549 	movel a2@,a4@
 2550 	clrl a2@
 2551 	addqw #4,sp
 2552 	clrl sp@-
 2553 	jbsr a3@
 2554 	addqw #4,sp
 2555 	jra L3522
 2556 L3493:
 2557 	negl d2
 2558 	lea a6@(-8),a2
 2559 	movel a2,a4
 2560 	addqw #4,a4
 2561 	movel a4,a6@(-44)
 2562 	lea a6@(-20),a3
 2563 	clrl sp@-
 2564 	movel d2,sp@-
 2565 	movel a6@(-36),a4
 2566 	addqw #4,a4
 2567 	movel a4,a6@(-36)
 2568 	subql #4,a4
 2569 	movel a4@,sp@-
 2570 	jbsr _power__FP6IntReplT0
 2571 	addw #12,sp
 2572 	clrl a3@
 2573 	movel d0,a3@
 2574 	movel a3,d0
 2575 	movel a6@(-44),a4
 2576 	movel a4@,sp@-
 2577 	lea ___builtin_delete,a5
 2578 	jbsr a5@
 2579 	movel a3@,a4@
 2580 	clrl a3@
 2581 	addqw #4,sp
 2582 	clrl sp@-
 2583 	jbsr a5@
 2584 	addqw #4,sp
 2585 	movel a6@(-36),a0
============ Listing of Rational.s ============	PAGE 48

 2586 	lea a6@(-24),a3
 2587 	clrl sp@-
 2588 	movel d2,sp@-
 2589 	movel a0@,sp@-
 2590 	jbsr _power__FP6IntReplT0
 2591 	addw #12,sp
 2592 	clrl a3@
 2593 	movel d0,a3@
 2594 	movel a3,d0
 2595 	movel a2@,sp@-
 2596 	jbsr a5@
 2597 	movel a3@,a2@
 2598 	clrl a3@
 2599 	addqw #4,sp
 2600 	clrl sp@-
 2601 	jbsr a5@
 2602 	addqw #4,sp
 2603 	movel a4,a1
 2604 	movel a1@,a0
 2605 	tstw a0@
 2606 	jne L3553
 2607 	clrl d0
 2608 	jra L3554
 2609 L3553:
 2610 	movel a1@,a0
 2611 	cmpw #1,a0@(4)
 2612 	jne L3555
 2613 	moveq #1,d0
 2614 	jra L3554
 2615 L3555:
 2616 	moveq #-1,d0
 2617 L3554:
 2618 	tstl d0
 2619 	jge L3522
 2620 	movel a6@(-8),a0
 2621 	tstw a0@
 2622 	jeq L3557
 2623 	tstw a0@(4)
 2624 	seq d0
 2625 	andw #1,d0
 2626 	movew d0,a0@(4)
 2627 L3557:
 2628 	movel a6@(-4),a0
 2629 	tstw a0@
 2630 	jeq L3522
 2631 	tstw a0@(4)
 2632 	seq d0
 2633 	andw #1,d0
 2634 	movew d0,a0@(4)
 2635 L3522:
 2636 	lea a6@(-8),a2
 2637 	movel d3,a4
 2638 	clrl a4@
 2639 	addqw #4,a4
 2640 	movel a4,a6@(-44)
============ Listing of Rational.s ============	PAGE 49

 2641 	clrl a4@
 2642 	lea a6@(-28),a3
 2643 	clrl a3@
 2644 	movel a2@,a3@
 2645 	clrl a2@
 2646 	movel d3,a4
 2647 	movel a4@,sp@-
 2648 	jbsr ___builtin_delete
 2649 	movel a3@,a4@
 2650 	clrl a3@
 2651 	addqw #4,sp
 2652 	clrl sp@-
 2653 	jbsr ___builtin_delete
 2654 	addqw #4,sp
 2655 	lea a6@(-32),a3
 2656 	lea a2@(4),a5
 2657 	clrl a3@
 2658 	movel a5@,a3@
 2659 	clrl a5@
 2660 	movel a6@(-44),a4
 2661 	movel a4@,sp@-
 2662 	jbsr ___builtin_delete
 2663 	movel a3@,a4@
 2664 	clrl a3@
 2665 	addqw #4,sp
 2666 	clrl sp@-
 2667 	jbsr ___builtin_delete
 2668 	addqw #4,sp
 2669 	clrl d2
 2670 	tstl a5
 2671 	jeq L3614
 2672 	movel a5@,sp@-
 2673 	jbsr ___builtin_delete
 2674 	addqw #4,sp
 2675 L3614:
 2676 	tstl a2
 2677 	jeq L3620
 2678 	movel a2@,sp@-
 2679 	jbsr ___builtin_delete
 2680 	addqw #4,sp
 2681 L3620:
 2682 	tstl d2
 2683 	jeq L3489
 2684 	movel a2,sp@-
 2685 	jbsr ___builtin_delete
 2686 L3489:
 2687 	movel d3,d0
 2688 	moveml a6@(-68),#0x3c0c
 2689 	unlk a6
 2690 	rts
 2691 LC2:
 2692 	.ascii "/\0"
 2693 	.even
 2694 .globl _op$alshift__FR7ostreamR8Rational
 2695 _op$alshift__FR7ostreamR8Rational:
============ Listing of Rational.s ============	PAGE 50

 2696 	link a6,#0
 2697 	moveml #0x3030,sp@-
 2698 	movel a6@(8),a2
 2699 	movel a6@(12),a3
 2700 	pea 1:w
 2701 	movel a3@(4),sp@-
 2702 	jbsr _compare__FP6IntRepl
 2703 	addqw #8,sp
 2704 	tstl d0
 2705 	seq d1
 2706 	btst #0,d1
 2707 	jeq L3628
 2708 	clrl sp@-
 2709 	pea 10:w
 2710 	movel a3@,sp@-
 2711 	jra L3658
 2712 L3628:
 2713 	clrl sp@-
 2714 	pea 10:w
 2715 	movel a3@,sp@-
 2716 	jbsr _Itoa__FP6IntRepii
 2717 	addw #12,sp
 2718 	clrl d2
 2719 	tstl a2@(4)
 2720 	jne L3641
 2721 	movel d0,sp@-
 2722 	movel a2@,sp@-
 2723 	jbsr _sputs__9streambufPCc
 2724 	addqw #8,sp
 2725 	moveq #-1,d3
 2726 	cmpl d0,d3
 2727 	jne L3640
 2728 L3641:
 2729 	moveq #1,d2
 2730 L3640:
 2731 	tstl d2
 2732 	jeq L3643
 2733 	moveq #2,d3
 2734 	orl d3,a2@(4)
 2735 L3643:
 2736 	movel #LC2,d0
 2737 	clrl d2
 2738 	tstl a2@(4)
 2739 	jne L3647
 2740 	movel d0,sp@-
 2741 	movel a2@,sp@-
 2742 	jbsr _sputs__9streambufPCc
 2743 	addqw #8,sp
 2744 	moveq #-1,d3
 2745 	cmpl d0,d3
 2746 	jne L3646
 2747 L3647:
 2748 	moveq #1,d2
 2749 L3646:
 2750 	tstl d2
============ Listing of Rational.s ============	PAGE 51

 2751 	jeq L3649
 2752 	moveq #2,d3
 2753 	orl d3,a2@(4)
 2754 L3649:
 2755 	clrl sp@-
 2756 	pea 10:w
 2757 	movel a3@(4),sp@-
 2758 L3658:
 2759 	jbsr _Itoa__FP6IntRepii
 2760 	addw #12,sp
 2761 	clrl d2
 2762 	tstl a2@(4)
 2763 	jne L3654
 2764 	movel d0,sp@-
 2765 	movel a2@,sp@-
 2766 	jbsr _sputs__9streambufPCc
 2767 	moveq #-1,d3
 2768 	cmpl d0,d3
 2769 	jne L3653
 2770 L3654:
 2771 	moveq #1,d2
 2772 L3653:
 2773 	tstl d2
 2774 	jeq L3637
 2775 	moveq #2,d3
 2776 	orl d3,a2@(4)
 2777 L3637:
 2778 	movel a2,d0
 2779 	moveml a6@(-16),#0xc0c
 2780 	unlk a6
 2781 	rts
 2782 	.even
 2783 .globl _op$arshift__FR7istreamR8Rational
 2784 _op$arshift__FR7istreamR8Rational:
 2785 	link a6,#-4
 2786 	moveml #0x30,sp@-
 2787 	movel a6@(8),a3
 2788 	movel a6@(12),a2
 2789 	movel a2,sp@-
 2790 	movel a3,sp@-
 2791 	jbsr _op$arshift__FR7istreamR7Integer
 2792 	addqw #8,sp
 2793 	tstl a3@(4)
 2794 	jne L3662
 2795 	movel a3,d0
 2796 	jra L3663
 2797 L3662:
 2798 	clrl d0
 2799 L3663:
 2800 	tstl d0
 2801 	jeq L3660
 2802 	clrb a6@(-1)
 2803 	pea a6@(-1)
 2804 	movel a3,sp@-
 2805 	jbsr _get__7istreamRc
============ Listing of Rational.s ============	PAGE 52

 2806 	addqw #8,sp
 2807 	cmpb #47,a6@(-1)
 2808 	jne L3664
 2809 	pea a2@(4)
 2810 	movel a3,sp@-
 2811 	jbsr _op$arshift__FR7istreamR7Integer
 2812 	movel a2,sp@-
 2813 	jbsr _normalize__8Rational
 2814 	jra L3660
 2815 L3664:
 2816 	movel a3@,a0
 2817 	moveb a6@(-1),d0
 2818 	extbl d0
 2819 	movel a0@(8),d1
 2820 	cmpl a0@,d1
 2821 	jls L3669
 2822 	subql #1,a0@(8)
 2823 	movel a0@(8),a0
 2824 	moveb d0,a0@
 2825 	extbl d0
 2826 	jra L3670
 2827 L3669:
 2828 	moveq #-1,d0
 2829 L3670:
 2830 	moveq #-1,d1
 2831 	cmpl d0,d1
 2832 	jne L3667
 2833 	moveq #2,d1
 2834 	orl d1,a3@(4)
 2835 L3667:
 2836 	addqw #4,a2
 2837 	pea 1:w
 2838 	movel a2@,sp@-
 2839 	jbsr _Icopy_long__FP6IntRepl
 2840 	movel d0,a2@
 2841 L3660:
 2842 	movel a3,d0
 2843 	moveml a6@(-12),#0xc00
 2844 	unlk a6
 2845 	rts
 2846 LC3:
 2847 	.ascii "invariant failure\0"
 2848 	.even
 2849 .globl _OK__8Rational
 2850 _OK__8Rational:
 2851 	link a6,#-4
 2852 	moveml #0x3830,sp@-
 2853 	movel a6@(8),a3
 2854 	clrl d2
 2855 	movel a3,sp@-
 2856 	lea _OK__7Integer,a2
 2857 	jbsr a2@
 2858 	addqw #4,sp
 2859 	tstl d0
 2860 	jeq L3674
============ Listing of Rational.s ============	PAGE 53

 2861 	pea a3@(4)
 2862 	jbsr a2@
 2863 	addqw #4,sp
 2864 	tstl d0
 2865 	jeq L3674
 2866 	moveq #1,d2
 2867 L3674:
 2868 	movel d2,d3
 2869 	lea a3@(4),a1
 2870 	movel a1@,a0
 2871 	tstw a0@
 2872 	jne L3676
 2873 	clrl d1
 2874 	jra L3677
 2875 L3676:
 2876 	movel a1@,a0
 2877 	cmpw #1,a0@(4)
 2878 	jne L3678
 2879 	moveq #1,d1
 2880 	jra L3677
 2881 L3678:
 2882 	moveq #-1,d1
 2883 L3677:
 2884 	tstl d1
 2885 	sgt d0
 2886 	moveq #1,d4
 2887 	andl d4,d0
 2888 	andl d0,d3
 2889 	lea a6@(-4),a2
 2890 	movel a3@(4),sp@-
 2891 	movel a3@,sp@-
 2892 	jbsr _gcd__FP6IntRepT0
 2893 	movel d0,d1
 2894 	addqw #8,sp
 2895 	clrl a2@
 2896 	movel d1,a2@
 2897 	movel a2,d0
 2898 	movel __Int_One,sp@-
 2899 	movel d1,sp@-
 2900 	jbsr _ucompare__FP6IntRepT0
 2901 	movel d0,d2
 2902 	addqw #8,sp
 2903 	movel a2@,sp@-
 2904 	jbsr ___builtin_delete
 2905 	addqw #4,sp
 2906 	tstl d2
 2907 	seq d0
 2908 	andl d4,d0
 2909 	andl d0,d3
 2910 	jne L3694
 2911 	pea LC3
 2912 	movel a3,sp@-
 2913 	jbsr _error__8RationalPc
 2914 L3694:
 2915 	movel d3,d0
============ Listing of Rational.s ============	PAGE 54

 2916 	moveml a6@(-24),#0xc1c
 2917 	unlk a6
 2918 	rts
 2919 .stabs "_fini",10,0,0,0
 2920 .stabs "__GLOBAL_$D$Rational_cc",4,0,0,0
 2921 	.even
 2922 .globl __GLOBAL_$D$Rational_cc
 2923 __GLOBAL_$D$Rational_cc:
 2924 	link a6,#0
 2925 	movel __Int_One,sp@-
 2926 	jbsr ___builtin_delete
 2927 	unlk a6
 2928 	rts
 2929 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$Rational_cc
 2930 .stabs "_init",10,0,0,0
 2931 .stabs "__GLOBAL_$I$Rational_cc",4,0,0,0
 2932 	.even
 2933 .globl __GLOBAL_$I$Rational_cc
 2934 __GLOBAL_$I$Rational_cc:
 2935 	link a6,#0
 2936 	movel a2,sp@-
 2937 	lea __Int_One,a2
 2938 	pea 1:w
 2939 	clrl sp@-
 2940 	jbsr _Icopy_long__FP6IntRepl
 2941 	movel d0,a2@
 2942 	movel a6@(-4),a2
 2943 	unlk a6
 2944 	rts
 2945 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$Rational_cc

============ Listing Complete ============
============ Listing of String.cc ============ 	PAGE 1


    1 /* 
    2 Copyright (C) 1988 Free Software Foundation
    3     written by Doug Lea (dl@rocky.oswego.edu)
    4 
    5 This file is part of GNU CC.
    6 
    7 GNU CC is distributed in the hope that it will be useful,
    8 but WITHOUT ANY WARRANTY.  No author or distributor
    9 accepts responsibility to anyone for the consequences of using it
   10 or for whether it serves any particular purpose or works at all,
   11 unless he says so in writing.  Refer to the GNU CC General Public
   12 License for full details.
   13 
   14 Everyone is granted permission to copy, modify and redistribute
   15 GNU CC, but only under the conditions described in the
   16 GNU CC General Public License.   A copy of this license is
   17 supposed to have been given to you along with GNU CC so you
   18 can know your rights and responsibilities.  It should be in a
   19 file named COPYING.  Among other things, the copyright notice
   20 and this notice must be preserved on all copies.  
   21 */
   22 
   23 /* 
   24   String class implementation
   25  */
   26 
   27 #include <String.h>
   28 #include <std.h>
   29 #include <ctype.h>
   30 #include <values.h>
   31 
   32 // extern "C" {
   33 #include <regex.h>
   34 // }
   35 
   36 volatile void String::error(char* msg) const
   37 {
   38   (*lib_error_handler)("String", msg);
   39 }
   40 
   41 //  globals
   42 
   43 StrRep  _nilStrRep = { 0, 1, { 0 } }; // nil strings point here
   44 String _nilString;               // nil SubStrings point here
   45 
   46 
   47 
   48 
   49 /*
   50  the following inline fcts are specially designed to work
   51  in support of String classes, and are not meant as generic replacements
   52  for libc "str" functions.
   53 
   54  inline copy fcts -  I like left-to-right from->to arguments.
   55  all versions assume that `to' argument is non-null
============ Listing of String.cc ============	PAGE 2

   56 */
   57 
   58 // copy n bytes
   59 inline static void ncopy(const char* from, char* to, int n)
   60 {
   61   if (from != to) while (--n >= 0) *to++ = *from++;
   62 }
   63 
   64 // copy n bytes, null-terminate
   65 inline static void ncopy0(const char* from, char* to, int n)
   66 {
   67   if (from != to) 
   68   {
   69     while (--n >= 0) *to++ = *from++;
   70     *to = 0;
   71   }
   72 }
   73 
   74 // copy until null
   75 inline static void scopy(const char* from, char* to)
   76 {
   77   if (from != 0) while((*to++ = *from++) != 0);
   78 }
   79 
   80 // copy right-to-left
   81 inline static void revcopy(const char* from, char* to, short n)
   82 {
   83   if (from != 0) while (--n >= 0) *to-- = *from--;
   84 }
   85 
   86 
   87 inline static int slen(const char* t) // inline  strlen
   88 {
   89   if (t == 0)
   90     return 0;
   91   else
   92   {
   93     const char* a = t;
   94     while (*a++ != 0);
   95     return a - 1 - t;
   96   }
   97 }
   98 
   99 // minimum and maximum possible rep sizes
  100 // these are always allocated in blocks of
  101 // a power of 2 minus MALLOC_OVERHEAD, which
  102 // is the least wasteful & fastest size for standard versions of malloc
  103 
  104 #define MAXStrRep_SIZE   (1 << (SHORTBITS - 1) - 1)
  105 #define MINStrRep_SIZE   16
  106 #define MALLOC_OVERHEAD 4
  107 
  108 inline static StrRep* Snew(int newsiz)
  109 {
  110   unsigned int siz = sizeof(StrRep) + newsiz + MALLOC_OVERHEAD;
============ Listing of String.cc ============	PAGE 3

  111   unsigned int allocsiz = MINStrRep_SIZE;
  112   while (allocsiz < siz) allocsiz <<= 1;
  113   allocsiz -= MALLOC_OVERHEAD;
  114   if (allocsiz >= MAXStrRep_SIZE)
  115     (*lib_error_handler)("String", "Requested length out of range");
  116     
  117   StrRep* rep = (StrRep *) new char[allocsiz];
  118   rep->sz = allocsiz - sizeof(StrRep);
  119   return rep;
  120 }
  121 
  122 StrRep* Salloc(StrRep* old, const char* src, int srclen, int newlen)
  123 {
  124   if (old == &_nilStrRep) old = 0;
  125   if (srclen < 0) srclen = slen(src);
  126   if (newlen < srclen) newlen = srclen;
  127   StrRep* rep;
  128   if (old == 0 || newlen > old->sz)
  129     rep = Snew(newlen);
  130   else
  131     rep = old;
  132 
  133   rep->len = newlen;
  134 
  135   ncopy0(src, rep->s, srclen);
  136 
  137   if (old != rep && old != 0) delete old;
  138 
  139   return rep;
  140 }
  141 
  142 StrRep* Sresize(StrRep* old, int newlen)
  143 {
  144   if (old == &_nilStrRep) old = 0;
  145   StrRep* rep;
  146   if (old == 0)
  147     rep = Snew(newlen);
  148   else if (newlen > old->sz)
  149   {
  150     rep = Snew(newlen);
  151     bcopy(old->s, rep->s, old->len);
  152     delete old;
  153   }
  154   else
  155     rep = old;
  156 
  157   rep->len = newlen;
  158 
  159   return rep;
  160 }
  161 
  162 StrRep* Scopy(StrRep* old, StrRep* s)
  163 {
  164   if (old == &_nilStrRep) old = 0;
  165   if (s == &_nilStrRep) s = 0;
============ Listing of String.cc ============	PAGE 4

  166   if (old == s) 
  167     return (old == 0)? &_nilStrRep : old;
  168   else if (s == 0)
  169   {
  170     old->s[0] = 0;
  171     old->len = 0;
  172     return old;
  173   }
  174   else 
  175   {
  176     StrRep* rep;
  177     int newlen = s->len;
  178     if (old == 0 || newlen > old->sz)
  179     {
  180       rep = Snew(newlen);
  181       if (old != 0) delete old;
  182     }
  183     else
  184       rep = old;
  185     rep->len = newlen;
  186     ncopy0(s->s, rep->s, newlen);
  187     return rep;
  188   }
  189 }
  190 
  191 StrRep* Scat(StrRep* old, const char* s, int srclen, const char* t, int tlen)
  192 {
  193   if (old == &_nilStrRep) old = 0;
  194   if (srclen < 0) srclen = slen(s);
  195   if (tlen < 0) tlen = slen(t);
  196   int newlen = srclen + tlen;
  197   StrRep* rep;
  198   if (old == 0 || newlen > old->sz)
  199     rep = Snew(newlen);
  200   else
  201     rep = old;
  202 
  203   rep->len = newlen;
  204 
  205   ncopy(s, rep->s, srclen);
  206   ncopy0(t, &(rep->s[srclen]), tlen);
  207 
  208   if (old != rep && old != 0) delete old;
  209 
  210   return rep;
  211 }
  212 
  213 StrRep* Sprepend(StrRep* old, const char* t, int tlen)
  214 {
  215   char* s;
  216   int srclen;
  217   if (old == &_nilStrRep || old == 0)
  218   {
  219     s = 0; old = 0; srclen = 0;
  220   }
============ Listing of String.cc ============	PAGE 5

  221   else
  222   {
  223     s = old->s; srclen = old->len;
  224   }
  225   if (tlen < 0) tlen = slen(t);
  226   int newlen = srclen + tlen;
  227   StrRep* rep;
  228   if (old == 0 || newlen > old->sz || (t >= old->s && t <= old->s+old->len))
  229     rep = Snew(newlen);
  230   else
  231     rep = old;
  232 
  233   rep->len = newlen;
  234 
  235   revcopy(&(s[srclen]), &(rep->s[newlen]), srclen+1);
  236   ncopy(t, rep->s, tlen);
  237 
  238   if (old != rep && old != 0) delete old;
  239 
  240   return rep;
  241 }
  242 
  243 
  244 // string compare: first argument is known to be non-null
  245 
  246 inline static int scmp(const char* a, const char* b)
  247 {
  248   if (b == 0)
  249     return *a != 0;
  250   else
  251   {
  252     signed char diff = 0;
  253     while ((diff = *a - *b++) == 0 && *a++ != 0);
  254     return diff;
  255   }
  256 }
  257 
  258 inline static int ncmp(const char* a, int al, const char* b, int bl)
  259 {
  260   int n = al <? bl;
  261   signed char diff;
  262   while (n-- > 0) if ((diff = *a++ - *b++) != 0) return diff;
  263   return al - bl;
  264 }
  265 
  266 int fcompare(const String& x, const String& y)
  267 {
  268   const char* a = x.chars();
  269   const char* b = y.chars();
  270   int al = x.length();
  271   int bl = y.length();
  272   int n = al <? bl;
  273   signed char diff = 0;
  274   while (n-- > 0)
  275   {
============ Listing of String.cc ============	PAGE 6

  276     char ac = *a++;
  277     char bc = *b++;
  278     if ((diff = ac - bc) != 0)
  279     {
  280       if (ac >= 'a' && ac <= 'z')
  281         ac = ac - 'a' + 'A';
  282       if (bc >= 'a' && bc <= 'z')
  283         bc = bc - 'a' + 'A';
  284       if ((diff = ac - bc) != 0)
  285         return diff;
  286     }
  287   }
  288   return al - bl;
  289 }
  290 
  291 // these are not inline, but pull in the above inlines, so are 
  292 // pretty fast
  293 
  294 int compare(const String& x, const char* b)
  295 {
  296   return scmp(x.chars(), b);
  297 }
  298 
  299 int compare(const String& x, const String& y)
  300 {
  301   return scmp(x.chars(), y.chars());
  302 }
  303 
  304 int compare(const String& x, const SubString& y)
  305 {
  306   return ncmp(x.chars(), x.length(), y.chars(), y.length());
  307 }
  308 
  309 int compare(const SubString& x, const String& y)
  310 {
  311   return ncmp(x.chars(), x.length(), y.chars(), y.length());
  312 }
  313 
  314 int compare(const SubString& x, const SubString& y)
  315 {
  316   return ncmp(x.chars(), x.length(), y.chars(), y.length());
  317 }
  318 
  319 int compare(const SubString& x, const char* b)
  320 {
  321   if (b == 0)
  322     return x.length();
  323   else
  324   {
  325     const char* a = x.chars();
  326     int n = x.length();
  327     signed char diff;
  328     while (n-- > 0) if ((diff = *a++ - *b++) != 0) return diff;
  329     return (*b == 0) ? 0 : -1;
  330   }
============ Listing of String.cc ============	PAGE 7

  331 }
  332 
  333 /*
  334  index fcts
  335 */
  336 
  337 int String::search(int start, int sl, char c) const
  338 {
  339   const char* s = chars();
  340   if (sl > 0)
  341   {
  342     if (start >= 0)
  343     {
  344       const char* a = &(s[start]);
  345       const char* lasta = &(s[sl]);
  346       while (a < lasta) if (*a++ == c) return --a - s;
  347     }
  348     else
  349     {
  350       const char* a = &(s[sl + start + 1]);
  351       while (--a >= s) if (*a == c) return a - s;
  352     }
  353   }
  354   return -1;
  355 }
  356 
  357 int String::search(int start, int sl, const char* t, int tl = -1) const
  358 {
  359   const char* s = chars();
  360   if (tl < 0) tl = slen(t);
  361   if (sl > 0 && tl > 0)
  362   {
  363     if (start >= 0)
  364     {
  365       const char* lasts = &(s[sl - tl]);
  366       const char* lastt = &(t[tl]);
  367       const char* p = &(s[start]);
  368 
  369       while (p <= lasts)
  370       {
  371         const char* x = p++;
  372         const char* y = t;
  373         while (*x++ == *y++) if (y >= lastt) return --p - s;
  374       }
  375     }
  376     else
  377     {
  378       const char* firsts = &(s[tl - 1]);
  379       const char* lastt =  &(t[tl - 1]);
  380       const char* p = &(s[sl + start + 1]); 
  381 
  382       while (--p >= firsts)
  383       {
  384         const char* x = p;
  385         const char* y = lastt;
============ Listing of String.cc ============	PAGE 8

  386         while (*x-- == *y--) if (y < t) return ++x - s;
  387       }
  388     }
  389   }
  390   return -1;
  391 }
  392 
  393 
  394 int String::match(int start, int sl, int exact, const char* t, int tl = -1) const
  395 {
  396   if (tl < 0) tl = slen(t);
  397 
  398   if (start < 0)
  399   {
  400     start = sl + start - tl + 1;
  401     if (start < 0 || (exact && start != 0))
  402       return 0;
  403   }
  404   else if (exact && sl - start != tl)
  405     return 0;
  406 
  407   if (sl == 0 || tl == 0 || sl - start < tl || start >= sl)
  408     return 0;
  409 
  410   int n = tl;
  411   const char* s = &(rep->s[start]);
  412   while (n-- > 0) if (*s++ != *t++) return 0;
  413   return tl;
  414 }
  415 
  416 
  417 
  418 void SubString::assign(StrRep* ysrc, const char* ys, int ylen=-1)
  419 {
  420   if (&S == &_nilString) return;
  421 
  422   if (ylen < 0) ylen = slen(ys);
  423   StrRep* targ = S.rep;
  424   int sl = targ->len - len + ylen;
  425 
  426   if (ysrc == targ || sl >= targ->sz)
  427   {
  428     StrRep* oldtarg = targ;
  429     targ = Sresize(0, sl);
  430     ncopy(oldtarg->s, targ->s, pos);
  431     ncopy(ys, &(targ->s[pos]), ylen);
  432     scopy(&(oldtarg->s[pos + len]), &(targ->s[pos + ylen]));
  433     delete oldtarg;
  434   }
  435   else if (len == ylen)
  436     ncopy(ys, &(targ->s[pos]), len);
  437   else if (ylen < len)
  438   {
  439     ncopy(ys, &(targ->s[pos]), ylen);
  440     scopy(&(targ->s[pos + len]), &(targ->s[pos + ylen]));
============ Listing of String.cc ============	PAGE 9

  441   }
  442   else
  443   {
  444     revcopy(&(targ->s[targ->len]), &(targ->s[sl]), targ->len-pos-len +1);
  445     ncopy(ys, &(targ->s[pos]), ylen);
  446   }
  447   targ->len = sl;
  448   S.rep = targ;
  449 }
  450 
  451 // Regex stuff
  452 
  453 Regex::~Regex()
  454 {
  455   delete(buf->buffer);
  456   delete(buf->fastmap);
  457   delete(buf);
  458   delete(reg);
  459 }
  460 
  461 void Regex::initialize(const char* t, int tlen, int fast, int bufsize, 
  462                        const char* transtable)
  463 {
  464   if (tlen < 0) tlen = slen(t);
  465   buf = new re_pattern_buffer;
  466   reg = new re_registers;
  467   if (fast)
  468     buf->fastmap = new char[256];
  469   else
  470     buf->fastmap = 0;
  471   buf->translate = (char*)transtable;
  472   if (tlen > bufsize)
  473     bufsize = tlen;
  474   buf->allocated = bufsize;
  475   buf->buffer = new char [buf->allocated];
  476   char* msg = re_compile_pattern((char*)t, tlen, buf);
  477   if (msg != 0)
  478     (*lib_error_handler)("Regex", msg);
  479   else if (fast)
  480     re_compile_fastmap(buf);
  481 }
  482 
  483 int Regex::match_info(int& start, int& length, int nth = 0) const
  484 {
  485   if ((unsigned)(nth) >= RE_NREGS)
  486     return 0;
  487   else
  488   {
  489     start = reg->start[nth];
  490     length = reg->end[nth] - start;
  491     return start >= 0 && length >= 0;
  492   }
  493 }
  494 
  495 int Regex::search(const char* s, int len, int& matchlen, int startpos = 0) const
============ Listing of String.cc ============	PAGE 10

  496 {
  497   int matchpos, pos, range;
  498   if (startpos >= 0)
  499   {
  500     pos = startpos;
  501     range = len - startpos;
  502   }
  503   else
  504   {
  505     pos = len + startpos;
  506     range = -pos;
  507   }
  508   matchpos = re_search_2(buf, 0, 0, (char*)s, len, pos, range, reg, len);
  509   if (matchpos >= 0)
  510     matchlen = reg->end[0] - reg->start[0];
  511   else
  512     matchlen = 0;
  513   return matchpos;
  514 }
  515 
  516 int Regex::match(const char*s, int len, int p = 0) const
  517 {
  518   if (p < 0)
  519   {
  520     p += len;
  521     if (p >= len)
  522       return 0;
  523     return re_match_2(buf, 0, 0, (unsigned char*)s, p, 0, reg, p);
  524   }
  525   else if (p >= len)
  526     return 0;
  527   else
  528     return re_match_2(buf, 0, 0, (unsigned char*)s, len, p, reg, len);
  529 }
  530 
  531 
  532 /*
  533  * substitution
  534  */
  535 
  536 
  537 int String::_gsub(const char* pat, int pl, const char* r, int rl)
  538 {
  539   int nmatches = 0;
  540   if (pl < 0) pl = slen(pat);
  541   if (rl < 0) rl = slen(r);
  542   int sl = length();
  543   if (sl <= 0 || pl <= 0 || sl < pl)
  544     return nmatches;
  545   
  546   const char* s = chars();
  547 
  548   StrRep* nrep = Sresize(0, 2 * sl); // guess size
  549   char* x = nrep->s;
  550 
============ Listing of String.cc ============	PAGE 11

  551   int si = 0;
  552   int xi = 0;
  553   int remaining = sl;
  554 
  555   while (remaining >= pl)
  556   {
  557     int pos = search(si, sl, pat, pl);
  558     if (pos < 0)
  559       break;
  560     else
  561     {
  562       ++nmatches;
  563       int mustfit = xi + remaining + rl - pl;
  564       if (mustfit >= nrep->sz)
  565       {
  566         nrep = Sresize(nrep, mustfit);
  567         x = nrep->s;
  568       }
  569       pos -= si;
  570       ncopy(&(s[si]), &(x[xi]), pos);
  571       ncopy(r, &(x[xi + pos]), rl);
  572       si += pos + pl;
  573       remaining -= pos + pl;
  574       xi += pos + rl;
  575     }
  576   }
  577 
  578   ncopy0(&(s[si]), &(x[xi]), remaining);
  579   nrep->len = xi + remaining;
  580 
  581   if (nrep->len <= rep->sz)   // fit back in if possible
  582   {
  583     rep->len = nrep->len;
  584     ncopy0(nrep->s, rep->s, rep->len);
  585     delete(nrep);
  586   }
  587   else
  588   {
  589     delete(rep);
  590     rep = nrep;
  591   }
  592   return nmatches;
  593 }
  594 
  595 int String::_gsub(const Regex& pat, const char* r, int rl)
  596 {
  597   int nmatches = 0;
  598   int sl = length();
  599   if (sl <= 0)
  600     return nmatches;
  601 
  602   if (rl < 0) rl = slen(r);
  603 
  604   const char* s = chars();
  605 
============ Listing of String.cc ============	PAGE 12

  606   StrRep* nrep = Sresize(0, 2 * sl); // guess size
  607   char* x = nrep->s;
  608 
  609   int si = 0;
  610   int xi = 0;
  611   int remaining = sl;
  612   int  pos, pl = 0;				  // how long is a regular expression?
  613 
  614   while (remaining > 0)
  615   {
  616     pos = pat.search(s, sl, pl, si); // unlike string search, the pos returned here is absolute
  617     if (pos < 0 || pl <= 0)
  618       break;
  619     else
  620     {
  621       ++nmatches;
  622       int mustfit = xi + remaining + rl - pl;
  623       if (mustfit >= nrep->sz)
  624       {
  625         nrep = Sresize(nrep, mustfit);
  626         x = nrep->s;
  627       }
  628 		pos -= si;
  629       ncopy(&(s[si]), &(x[xi]), pos);
  630       ncopy(r, &(x[xi + pos]), rl);
  631       si += pos + pl;
  632       remaining -= pos + pl;
  633       xi += pos + rl;
  634     }
  635   }
  636 
  637   ncopy0(&(s[si]), &(x[xi]), remaining);
  638   nrep->len = xi + remaining;
  639 
  640   if (nrep->len <= rep->sz)   // fit back in if possible
  641   {
  642     rep->len = nrep->len;
  643     ncopy0(nrep->s, rep->s, rep->len);
  644     delete(nrep);
  645   }
  646   else
  647   {
  648     delete(rep);
  649     rep = nrep;
  650   }
  651   return nmatches;
  652 }
  653 
  654 
  655 /*
  656  * deletion
  657  */
  658 
  659 void String::del(int pos, int len)
  660 {
============ Listing of String.cc ============	PAGE 13

  661   if (pos <= 0 || len <= 0 || pos + len > length()) return;
  662   int nlen = length() - len;
  663   int first = pos + len;
  664   ncopy0(&(rep->s[first]), &(rep->s[pos]), length() - first);
  665   rep->len = nlen;
  666 }
  667 
  668 void String::del(const Regex& r, int startpos = 0)
  669 {
  670   int mlen;
  671   int first = r.search(chars(), length(), mlen, startpos);
  672   del(first, mlen);
  673 }
  674 
  675 void String::del(const char* t, int startpos = 0)
  676 {
  677   int tlen = slen(t);
  678   int p = search(startpos, length(), t, tlen);
  679   del(p, tlen);
  680 }
  681 
  682 /*
  683  * substring extraction
  684  */
  685 
  686 
  687 SubString String::at(int first, int len)
  688 {
  689   return _substr(first, len);
  690 }
  691 
  692 SubString String::before(int pos)
  693 {
  694   return _substr(0, pos);
  695 }
  696 
  697 SubString String::through(int pos)
  698 {
  699   return _substr(0, pos+1);
  700 }
  701 
  702 SubString String::after(int pos)
  703 {
  704   return _substr(pos + 1, length() - (pos + 1));
  705 }
  706 
  707 SubString String::from(int pos)
  708 {
  709   return _substr(pos, length() - pos);
  710 }
  711 
  712 SubString String::at(const String& y, int startpos = 0)
  713 {
  714   int first = search(startpos, length(), y.chars(), y.length());
  715   return _substr(first,  y.length());
============ Listing of String.cc ============	PAGE 14

  716 }
  717 
  718 SubString String::at(const SubString& y, int startpos = 0)
  719 {
  720   int first = search(startpos, length(), y.chars(), y.length());
  721   return _substr(first, y.length());
  722 }
  723 
  724 SubString String::at(const Regex& r, int startpos = 0)
  725 {
  726   int mlen;
  727   int first = r.search(chars(), length(), mlen, startpos);
  728   return _substr(first, mlen);
  729 }
  730 
  731 SubString String::at(const char* t, int startpos = 0)
  732 {
  733   int tlen = slen(t);
  734   int first = search(startpos, length(), t, tlen);
  735   return _substr(first, tlen);
  736 }
  737 
  738 SubString String::at(char c, int startpos = 0)
  739 {
  740   int first = search(startpos, length(), c);
  741   return _substr(first, 1);
  742 }
  743 
  744 
  745 SubString String::before(const String& y, int startpos = 0)
  746 {
  747   int last = search(startpos, length(), y.chars(), y.length());
  748   return _substr(0, last);
  749 }
  750 
  751 
  752 SubString String::before(const SubString& y, int startpos = 0)
  753 {
  754   int last = search(startpos, length(), y.chars(), y.length());
  755   return _substr(0, last);
  756 }
  757 
  758 SubString String::before(const Regex& r, int startpos = 0)
  759 {
  760   int mlen;
  761   int first = r.search(chars(), length(), mlen, startpos);
  762   return _substr(0, first);
  763 }
  764 
  765 SubString String::before(char c, int startpos = 0)
  766 {
  767   int last = search(startpos, length(), c);
  768   return _substr(0, last);
  769 }
  770 
============ Listing of String.cc ============	PAGE 15

  771 SubString String::before(const char* t, int startpos = 0)
  772 {
  773   int tlen = slen(t);
  774   int last = search(startpos, length(), t, tlen);
  775   return _substr(0, last);
  776 }
  777 
  778 
  779 SubString String::through(const String& y, int startpos = 0)
  780 {
  781   int last = search(startpos, length(), y.chars(), y.length());
  782   if (last >= 0) last += y.length();
  783   return _substr(0, last);
  784 }
  785 
  786 
  787 SubString String::through(const SubString& y, int startpos = 0)
  788 {
  789   int last = search(startpos, length(), y.chars(), y.length());
  790   if (last >= 0) last += y.length();
  791   return _substr(0, last);
  792 }
  793 
  794 
  795 SubString String::through(const Regex& r, int startpos = 0)
  796 {
  797   int mlen;
  798   int first = r.search(chars(), length(), mlen, startpos);
  799   if (first >= 0) first += mlen;
  800   return _substr(0, first);
  801 }
  802 
  803 SubString String::through(char c, int startpos = 0)
  804 {
  805   int last = search(startpos, length(), c);
  806   if (last >= 0) last += 1;
  807   return _substr(0, last);
  808 }
  809 
  810 SubString String::through(const char* t, int startpos = 0)
  811 {
  812   int tlen = slen(t);
  813   int last = search(startpos, length(), t, tlen);
  814   if (last >= 0) last += tlen;
  815   return _substr(0, last);
  816 }
  817 
  818 
  819 SubString String::after(const String& y, int startpos = 0)
  820 {
  821   int first = search(startpos, length(), y.chars(), y.length());
  822   if (first >= 0) first += y.length();
  823   return _substr(first, length() - first);
  824 }
  825 
============ Listing of String.cc ============	PAGE 16

  826 SubString String::after(const SubString& y, int startpos = 0)
  827 {
  828   int first = search(startpos, length(), y.chars(), y.length());
  829   if (first >= 0) first += y.length();
  830   return _substr(first, length() - first);
  831 }
  832 
  833 SubString String::after(char c, int startpos = 0)
  834 {
  835   int first = search(startpos, length(), c);
  836   if (first >= 0) first += 1;
  837   return _substr(first, length() - first);
  838 }
  839 
  840 SubString String::after(const Regex& r, int startpos = 0)
  841 {
  842   int mlen;
  843   int first = r.search(chars(), length(), mlen, startpos);
  844   if (first >= 0) first += mlen;
  845   return _substr(first, length() - first);
  846 }
  847 
  848 SubString String::after(const char* t, int startpos = 0)
  849 {
  850   int tlen = slen(t);
  851   int first = search(startpos, length(), t, tlen);
  852   if (first >= 0) first += tlen;
  853   return _substr(first, length() - first);
  854 }
  855 
  856 SubString String::from(const String& y, int startpos = 0)
  857 {
  858   int first = search(startpos, length(), y.chars(), y.length());
  859   return _substr(first, length() - first);
  860 }
  861 
  862 
  863 SubString String::from(const SubString& y, int startpos = 0)
  864 {
  865   int first = search(startpos, length(), y.chars(), y.length());
  866   return _substr(first, length() - first);
  867 }
  868 
  869 SubString String::from(const Regex& r, int startpos = 0)
  870 {
  871   int mlen;
  872   int first = r.search(chars(), length(), mlen, startpos);
  873   return _substr(first, length() - first);
  874 }
  875 
  876 SubString String::from(char c, int startpos = 0)
  877 {
  878   int first = search(startpos, length(), c);
  879   return _substr(first, length() - first);
  880 }
============ Listing of String.cc ============	PAGE 17

  881 
  882 SubString String::from(const char* t, int startpos = 0)
  883 {
  884   int tlen = slen(t);
  885   int first = search(startpos, length(), t, tlen);
  886   return _substr(first, length() - first);
  887 }
  888 
  889 
  890 
  891 /*
  892  * split/join
  893  */
  894 
  895 
  896 int split(const String& src, String results[], int n, const String& sep)
  897 {
  898   String x = src;
  899   const char* s = x.chars();
  900   int sl = x.length();
  901   int i = 0;
  902   int pos = 0;
  903   while (i < n && pos < sl)
  904   {
  905     int p = x.search(pos, sl, sep.chars(), sep.length());
  906     if (p < 0)
  907       p = sl;
  908     results[i].rep = Salloc(results[i].rep, &(s[pos]), p - pos, p - pos);
  909     i++;
  910     pos = p + sep.length();
  911   }
  912   return(i);
  913 }
  914 
  915 int split(const String& src, String results[], int n, const Regex& r)
  916 {
  917   String x = src;
  918   const char* s = x.chars();
  919   int sl = x.length();
  920   int i = 0;
  921   int pos = 0;
  922   int p, matchlen;
  923   while (i < n && pos < sl)
  924   {
  925     p = r.search(s, sl, matchlen, pos);
  926     if (p < 0)
  927       p = sl;
  928     results[i].rep = Salloc(results[i].rep, &(s[pos]), p - pos, p - pos);
  929     i++;
  930     pos = p + matchlen;
  931   }
  932   return(i);
  933 }
  934 
  935 
============ Listing of String.cc ============	PAGE 18

  936 StrTmp join(String src[], int n, const String& separator)
  937 {
  938   String sep = separator;
  939   int xlen = 0;
  940   for (int i = 0; i < n; ++i)
  941     xlen += src[i].length();
  942   xlen += (n - 1) * sep.length();
  943 
  944   StrRep* x = Sresize(0, xlen);
  945 
  946   int j = 0;
  947   
  948   for (i = 0; i < n - 1; ++i)
  949   {
  950     ncopy(src[i].chars(), &(x->s[j]), src[i].length());
  951     j += src[i].length();
  952     ncopy(sep.chars(), &(x->s[j]), sep.length());
  953     j += sep.length();
  954   }
  955   ncopy0(src[i].chars(), &(x->s[j]), src[i].length());
  956   return StrTmp(x);
  957 }
  958 
  959   
  960 /*
  961  misc
  962 */
  963 
  964     
  965 StrRep* Sreverse(StrRep* src, StrRep* dest)
  966 {
  967   int n = src->len;
  968   if (src != dest)
  969     dest = Salloc(dest, src->s, n, n);
  970   if (n > 0)
  971   {
  972     char* a = dest->s;
  973     char* b = &(a[n - 1]);
  974     while (a < b)
  975     {
  976       char t = *a;
  977       *a++ = *b;
  978       *b-- = t;
  979     }
  980   }
  981   return dest;
  982 }
  983 
  984 
  985 StrRep* Supcase(StrRep* src, StrRep* dest)
  986 {
  987   int n = src->len;
  988   if (src != dest) dest = Salloc(dest, src->s, n, n);
  989   char* p = dest->s;
  990   char* e = &(p[n]);
============ Listing of String.cc ============	PAGE 19

  991   for (; p < e; ++p) if (islower(*p)) *p = toupper(*p);
  992   return dest;
  993 }
  994 
  995 StrRep* Sdowncase(StrRep* src, StrRep* dest)
  996 {
  997   int n = src->len;
  998   if (src != dest) dest = Salloc(dest, src->s, n, n);
  999   char* p = dest->s;
 1000   char* e = &(p[n]);
 1001   for (; p < e; ++p) if (isupper(*p)) *p = tolower(*p);
 1002   return dest;
 1003 }
 1004 
 1005 StrRep* Scapitalize(StrRep* src, StrRep* dest)
 1006 {
 1007   int n = src->len;
 1008   if (src != dest) dest = Salloc(dest, src->s, n, n);
 1009 
 1010   char* p = dest->s;
 1011   char* e = &(p[n]);
 1012   for (; p < e; ++p)
 1013   {
 1014     int at_word;
 1015     if (at_word = islower(*p))
 1016       *p = toupper(*p);
 1017     else 
 1018       at_word = isupper(*p) || isdigit(*p);
 1019 
 1020     if (at_word)
 1021     {
 1022       while (++p < e)
 1023       {
 1024         if (isupper(*p))
 1025           *p = tolower(*p);
 1026         else if (!islower(*p) && !isdigit(*p))
 1027           break;
 1028       }
 1029     }
 1030   }
 1031   return dest;
 1032 }
 1033 
 1034 StrTmp replicate(char c, int n)
 1035 {
 1036   StrRep* w = Sresize(0, n);
 1037   char* p = w->s;
 1038   while (n-- > 0) *p++ = c;
 1039   *p = 0;
 1040   return StrTmp(w);
 1041 }
 1042 
 1043 StrTmp replicate(const String& y, int n)
 1044 {
 1045   int len = y.length();
============ Listing of String.cc ============	PAGE 20

 1046   StrRep* w = Sresize(0, n * len);
 1047   char* p = w->s;
 1048   while (n-- > 0)
 1049   {
 1050     ncopy(y.chars(), p, len);
 1051     p += len;
 1052   }
 1053   *p = 0;
 1054   return StrTmp(w);
 1055 }
 1056 
 1057 StrTmp common_prefix(const String& x, const String& y, int startpos = 0)
 1058 {
 1059   const char* xchars = x.chars();
 1060   const char* ychars = y.chars();
 1061   const char* xs = &(xchars[startpos]);
 1062   const char* ss = xs;
 1063   const char* topx = &(xchars[x.length()]);
 1064   const char* ys = &(ychars[startpos]);
 1065   const char* topy = &(ychars[y.length()]);
 1066   for (int l = 0; xs < topx && ys < topy && *xs++ == *ys++; ++l);
 1067   return StrTmp(Salloc(0, ss, l, l));
 1068 }
 1069 
 1070 
 1071 StrTmp common_suffix(const String& x, const String& y, int startpos = -1)
 1072 {
 1073   const char* xchars = x.chars();
 1074   const char* ychars = y.chars();
 1075   const char* xs = &(xchars[x.length() + startpos]);
 1076   const char* botx = xchars;
 1077   const char* ys = &(ychars[y.length() + startpos]);
 1078   const char* boty = ychars;
 1079   for (int l = 0; xs >= botx && ys >= boty && *xs == *ys ; --xs, --ys, ++l);
 1080   return StrTmp(Salloc(0, ++xs, l, l));
 1081 }
 1082 
 1083 // IO
 1084 
 1085 istream& operator>>(istream& s, String& x)
 1086 {
 1087   if (!s.readable())
 1088   {
 1089     s.set(_bad);
 1090     return s;
 1091   }
 1092   char ch;
 1093   int i = 0;
 1094   x.rep = Sresize(x.rep, 20);
 1095   s >> WS;
 1096   if (!s.good())
 1097   {
 1098     s.set(_bad);
 1099     return s;
 1100   }
============ Listing of String.cc ============	PAGE 21

 1101   while (s.get(ch))
 1102   {
 1103     if (isspace(ch))
 1104       break;
 1105     if (i >= x.rep->sz - 1)
 1106       x.rep = Sresize(x.rep, i+1);
 1107     x.rep->s[i++] = ch;
 1108   }
 1109   x.rep->s[i] = 0;
 1110   x.rep->len = i;
 1111   s.failif(i == 0);
 1112   return s;
 1113 }
 1114 
 1115 int readline(istream& s, String& x, char terminator = '\n', int discard = 1)
 1116 {
 1117   if (!s.readable())
 1118   {
 1119     s.set(_bad);
 1120     return 0;
 1121   }
 1122   char ch;
 1123   int i = 0;
 1124   x.rep = Sresize(x.rep, 80);
 1125   while (s.get(ch))
 1126   {
 1127     if (ch != terminator || !discard)
 1128     {
 1129       if (i >= x.rep->sz - 1)
 1130         x.rep = Sresize(x.rep, i+1);
 1131       x.rep->s[i++] = ch;
 1132     }
 1133     if (ch == terminator)
 1134       break;
 1135   }
 1136   x.rep->s[i] = 0;
 1137   x.rep->len = i;
 1138   return i;
 1139 }
 1140 
 1141 
 1142 ostream& operator<<(ostream& s, const SubString& x)
 1143 { 
 1144   const char* a = x.chars();
 1145   const char* lasta = &(a[x.length()]);
 1146   while (a < lasta)
 1147     s.put(*a++);
 1148   return(s);
 1149 }
 1150 
 1151 // from John.Willis@FAS.RI.CMU.EDU
 1152 
 1153 int String::freq(const SubString& y) const
 1154 {
 1155   int found = 0;
============ Listing of String.cc ============	PAGE 22

 1156   for (int i = 0; i < length(); i++) 
 1157     if (match(i,length(),0,y.chars(), y.length())) found++;
 1158   return(found);
 1159 }
 1160 
 1161 int String::freq(const String& y) const
 1162 {
 1163   int found = 0;
 1164   for (int i = 0; i < length(); i++) 
 1165     if (match(i,length(),0,y.chars(),y.length())) found++;
 1166   return(found);
 1167 }
 1168 
 1169 int String::freq(const char* t) const
 1170 {
 1171   int found = 0;
 1172   for (int i = 0; i < length(); i++) if (match(i,length(),0,t)) found++;
 1173   return(found);
 1174 }
 1175 
 1176 int String::freq(char c) const
 1177 {
 1178   int found = 0;
 1179   for (int i = 0; i < length(); i++) 
 1180     if (match(i,length(),0,&c,1)) found++;
 1181   return(found);
 1182 }
 1183 
 1184 
 1185 int String::OK() const
 1186 {
 1187   int v = rep != 0;             // have a rep
 1188   v &= rep->len <= rep->sz;     // string within bounds
 1189   v &= rep->s[rep->len] == 0;   // null-terminated
 1190   if (!v) error("invariant failure");
 1191   return v;
 1192 }
 1193 
 1194 int SubString::OK() const
 1195 {
 1196   int v = S != 0;               // have a String;
 1197   v &= S.OK();                 // that is legal
 1198   v &= pos + len >= S.rep->len;// pos and len within bounds
 1199   if (!v) S.error("SubString invariant failure");
 1200   return v;
 1201 }
 1202 
 1203 int Regex::OK() const
 1204 {
 1205 // can't verify much, since we've lost the original string
 1206   int v = buf != 0;             // have a regex buf
 1207   v &= buf->buffer != 0;        // with a pat
 1208   if (!v) (*lib_error_handler)("Regex", "invariant failure");
 1209   return v;
 1210 }
============ Listing of String.cc ============	PAGE 23

 1211 
 1212 /*
 1213  some built-in Regular expressions
 1214 */
 1215 
 1216 const Regex RXwhite("[ \n\t\r\v\f]+", 1);
 1217 const Regex RXint("-?[0-9]+", 1);
 1218 const Regex RXdouble("-?\\(\\([0-9]+\\.[0-9]*\\)\\|\\([0-9]+\\)\\|\\(\\.[0-9]+\\)\\)\\([eE][---+]?[0-9]+\\)?", 1, 200);
 1219 const Regex RXalpha("[A-Za-z]+", 1);
 1220 const Regex RXlowercase("[a-z]+", 1);
 1221 const Regex RXuppercase("[A-Z]+", 1);
 1222 const Regex RXalphanum("[0-9A-Za-z]+", 1);
 1223 const Regex RXidentifier("[A-Za-z_][A-Za-z0-9_]*", 1);
 1224 
 1225 

============ Listing Complete ============
============ Listing of String.s ============ 	PAGE 1


    1 #NO_APP
    2 gcc_compiled.:
    3 .text
    4 LC0:
    5 	.ascii "invalid index\0"
    6 LC1:
    7 	.ascii "String\0"
    8 	.even
    9 .globl _error__C6StringPc
   10 _error__C6StringPc:
   11 	link a6,#0
   12 	movel a6@(12),sp@-
   13 	pea LC1
   14 	movel _lib_error_handler,a0
   15 	jbsr a0@
   16 	unlk a6
   17 	rts
   18 .globl __nilStrRep
   19 .data
   20 	.even
   21 __nilStrRep:
   22 	.word 0
   23 	.word 1
   24 	.byte 0
   25 	.skip 1
   26 .globl __nilString
   27 	.even
   28 __nilString:
   29 	.skip 4
   30 .text
   31 LC2:
   32 	.ascii "Requested length out of range\0"
   33 	.even
   34 .globl _Salloc__FP6StrRepPCcii
   35 _Salloc__FP6StrRepPCcii:
   36 	link a6,#0
   37 	moveml #0x3c30,sp@-
   38 	movel a6@(8),a3
   39 	movel a6@(12),d5
   40 	movel a6@(16),d3
   41 	movel a6@(20),d4
   42 	cmpl #__nilStrRep,a3
   43 	jne L1723
   44 	subl a3,a3
   45 L1723:
   46 	tstl d3
   47 	jge L1724
   48 	tstl d5
   49 	jne L1726
   50 	clrl d3
   51 	jra L1724
   52 L1726:
   53 	movel d5,a0
   54 L1728:
   55 	tstb a0@+
============ Listing of String.s ============	PAGE 2

   56 	jne L1728
   57 	movel d5,d0
   58 	addql #1,d0
   59 	movel a0,d3
   60 	subl d0,d3
   61 L1724:
   62 	cmpl d4,d3
   63 	jle L1730
   64 	movel d3,d4
   65 L1730:
   66 	tstl a3
   67 	jeq L1732
   68 	clrl d0
   69 	movew a3@(2),d0
   70 	cmpl d4,d0
   71 	jge L1731
   72 L1732:
   73 	moveq #10,d0
   74 	addl d4,d0
   75 	moveq #16,d2
   76 	cmpl d2,d0
   77 	jls L1745
   78 L1736:
   79 	lsll #1,d2
   80 	cmpl d2,d0
   81 	jhi L1736
   82 L1745:
   83 	subql #4,d2
   84 	cmpl #16383,d2
   85 	jls L1737
   86 	pea LC2
   87 	pea LC1
   88 	movel _lib_error_handler,a0
   89 	jbsr a0@
   90 	addqw #8,sp
   91 L1737:
   92 	movel d2,sp@-
   93 	jbsr ___builtin_new
   94 	movel d0,a0
   95 	addw #65530,d2
   96 	movew d2,a0@(2)
   97 	movel a0,a2
   98 	addqw #4,sp
   99 	jra L1738
  100 L1731:
  101 	movel a3,a2
  102 L1738:
  103 	movew d4,a2@
  104 	movel d5,a1
  105 	lea a2@(4),a0
  106 	movel d3,d0
  107 	cmpl a1,a0
  108 	jeq L1739
  109 	jra L1741
  110 L1743:
============ Listing of String.s ============	PAGE 3

  111 	moveb a1@+,a0@+
  112 L1741:
  113 	subql #1,d0
  114 	jpl L1743
  115 	clrb a0@
  116 L1739:
  117 	cmpl a3,a2
  118 	jeq L1744
  119 	tstl a3
  120 	jeq L1744
  121 	movel a3,sp@-
  122 	jbsr ___builtin_delete
  123 L1744:
  124 	movel a2,d0
  125 	moveml a6@(-24),#0xc3c
  126 	unlk a6
  127 	rts
  128 	.even
  129 .globl _Sresize__FP6StrRepi
  130 _Sresize__FP6StrRepi:
  131 	link a6,#0
  132 	moveml #0x3030,sp@-
  133 	movel a6@(8),a2
  134 	movel a6@(12),d3
  135 	cmpl #__nilStrRep,a2
  136 	jne L1747
  137 	subl a2,a2
  138 L1747:
  139 	tstl a2
  140 	jne L1748
  141 	moveq #10,d0
  142 	addl d3,d0
  143 	moveq #16,d2
  144 	cmpl d2,d0
  145 	jls L1763
  146 L1752:
  147 	lsll #1,d2
  148 	cmpl d2,d0
  149 	jhi L1752
  150 L1763:
  151 	subql #4,d2
  152 	cmpl #16383,d2
  153 	jls L1753
  154 	pea LC2
  155 	pea LC1
  156 	movel _lib_error_handler,a0
  157 	jbsr a0@
  158 	addqw #8,sp
  159 L1753:
  160 	movel d2,sp@-
  161 	jbsr ___builtin_new
  162 	movel d0,a0
  163 	addw #65530,d2
  164 	movew d2,a0@(2)
  165 	movel a0,a3
============ Listing of String.s ============	PAGE 4

  166 	jra L1754
  167 L1748:
  168 	clrl d0
  169 	movew a2@(2),d0
  170 	cmpl d3,d0
  171 	jge L1755
  172 	moveq #10,d0
  173 	addl d3,d0
  174 	moveq #16,d2
  175 	cmpl d2,d0
  176 	jls L1762
  177 L1759:
  178 	lsll #1,d2
  179 	cmpl d2,d0
  180 	jhi L1759
  181 L1762:
  182 	subql #4,d2
  183 	cmpl #16383,d2
  184 	jls L1760
  185 	pea LC2
  186 	pea LC1
  187 	movel _lib_error_handler,a0
  188 	jbsr a0@
  189 	addqw #8,sp
  190 L1760:
  191 	movel d2,sp@-
  192 	jbsr ___builtin_new
  193 	movel d0,a0
  194 	addw #65530,d2
  195 	movew d2,a0@(2)
  196 	movel a0,a3
  197 	addqw #4,sp
  198 	clrl d0
  199 	movew a2@,d0
  200 	movel d0,sp@-
  201 	pea a3@(4)
  202 	pea a2@(4)
  203 	jbsr _bcopy
  204 	movel a2,sp@-
  205 	jbsr ___builtin_delete
  206 	jra L1754
  207 L1755:
  208 	movel a2,a3
  209 L1754:
  210 	movew d3,a3@
  211 	movel a3,d0
  212 	moveml a6@(-16),#0xc0c
  213 	unlk a6
  214 	rts
  215 	.even
  216 .globl _Scopy__FP6StrRepT0
  217 _Scopy__FP6StrRepT0:
  218 	link a6,#0
  219 	moveml #0x3038,sp@-
  220 	movel a6@(8),a2
============ Listing of String.s ============	PAGE 5

  221 	movel a6@(12),a4
  222 	cmpl #__nilStrRep,a2
  223 	jne L1765
  224 	subl a2,a2
  225 L1765:
  226 	cmpl #__nilStrRep,a4
  227 	jne L1766
  228 	subl a4,a4
  229 L1766:
  230 	cmpl a2,a4
  231 	jne L1767
  232 	tstl a2
  233 	jne L1788
  234 	movel #__nilStrRep,d0
  235 	jra L1764
  236 L1767:
  237 	tstl a4
  238 	jne L1771
  239 	clrb a2@(4)
  240 	clrw a2@
  241 L1788:
  242 	movel a2,d0
  243 	jra L1764
  244 L1771:
  245 	clrl d3
  246 	movew a4@,d3
  247 	tstl a2
  248 	jeq L1774
  249 	clrl d0
  250 	movew a2@(2),d0
  251 	cmpl d3,d0
  252 	jge L1773
  253 L1774:
  254 	moveq #10,d0
  255 	addl d3,d0
  256 	moveq #16,d2
  257 	cmpl d2,d0
  258 	jls L1787
  259 L1778:
  260 	lsll #1,d2
  261 	cmpl d2,d0
  262 	jhi L1778
  263 L1787:
  264 	subql #4,d2
  265 	cmpl #16383,d2
  266 	jls L1779
  267 	pea LC2
  268 	pea LC1
  269 	movel _lib_error_handler,a0
  270 	jbsr a0@
  271 	addqw #8,sp
  272 L1779:
  273 	movel d2,sp@-
  274 	jbsr ___builtin_new
  275 	movel d0,a0
============ Listing of String.s ============	PAGE 6

  276 	addw #65530,d2
  277 	movew d2,a0@(2)
  278 	movel a0,a3
  279 	addqw #4,sp
  280 	tstl a2
  281 	jeq L1781
  282 	movel a2,sp@-
  283 	jbsr ___builtin_delete
  284 	jra L1781
  285 L1773:
  286 	movel a2,a3
  287 L1781:
  288 	movew d3,a3@
  289 	lea a4@(4),a1
  290 	lea a3@(4),a0
  291 	movel d3,d0
  292 	cmpl a1,a0
  293 	jeq L1782
  294 	jra L1784
  295 L1786:
  296 	moveb a1@+,a0@+
  297 L1784:
  298 	subql #1,d0
  299 	jpl L1786
  300 	clrb a0@
  301 L1782:
  302 	movel a3,d0
  303 L1764:
  304 	moveml a6@(-20),#0x1c0c
  305 	unlk a6
  306 	rts
  307 	.even
  308 .globl _Scat__FP6StrRepPCciT1i
  309 _Scat__FP6StrRepPCciT1i:
  310 	link a6,#0
  311 	moveml #0x3f30,sp@-
  312 	movel a6@(8),a3
  313 	movel a6@(12),d6
  314 	movel a6@(16),d4
  315 	movel a6@(20),d7
  316 	movel a6@(24),d5
  317 	cmpl #__nilStrRep,a3
  318 	jne L1790
  319 	subl a3,a3
  320 L1790:
  321 	tstl d4
  322 	jge L1791
  323 	tstl d6
  324 	jne L1793
  325 	clrl d4
  326 	jra L1791
  327 L1793:
  328 	movel d6,a0
  329 L1795:
  330 	tstb a0@+
============ Listing of String.s ============	PAGE 7

  331 	jne L1795
  332 	movel d6,d0
  333 	addql #1,d0
  334 	movel a0,d4
  335 	subl d0,d4
  336 L1791:
  337 	tstl d5
  338 	jge L1797
  339 	tstl d7
  340 	jne L1799
  341 	clrl d5
  342 	jra L1797
  343 L1799:
  344 	movel d7,a0
  345 L1801:
  346 	tstb a0@+
  347 	jne L1801
  348 	movel d7,d0
  349 	addql #1,d0
  350 	movel a0,d5
  351 	subl d0,d5
  352 L1797:
  353 	movel d4,d3
  354 	addl d5,d3
  355 	tstl a3
  356 	jeq L1804
  357 	clrl d0
  358 	movew a3@(2),d0
  359 	cmpl d3,d0
  360 	jge L1803
  361 L1804:
  362 	moveq #10,d0
  363 	addl d3,d0
  364 	moveq #16,d2
  365 	cmpl d2,d0
  366 	jls L1822
  367 L1808:
  368 	lsll #1,d2
  369 	cmpl d2,d0
  370 	jhi L1808
  371 L1822:
  372 	subql #4,d2
  373 	cmpl #16383,d2
  374 	jls L1809
  375 	pea LC2
  376 	pea LC1
  377 	movel _lib_error_handler,a0
  378 	jbsr a0@
  379 	addqw #8,sp
  380 L1809:
  381 	movel d2,sp@-
  382 	jbsr ___builtin_new
  383 	movel d0,a0
  384 	addw #65530,d2
  385 	movew d2,a0@(2)
============ Listing of String.s ============	PAGE 8

  386 	movel a0,a2
  387 	addqw #4,sp
  388 	jra L1810
  389 L1803:
  390 	movel a3,a2
  391 L1810:
  392 	movew d3,a2@
  393 	movel d6,a1
  394 	lea a2@(4),a0
  395 	movel d4,d0
  396 	cmpl a1,a0
  397 	jeq L1811
  398 	jra L1813
  399 L1815:
  400 	moveb a1@+,a0@+
  401 L1813:
  402 	subql #1,d0
  403 	jpl L1815
  404 L1811:
  405 	movel d7,a1
  406 	lea a2@(4,d4:l),a0
  407 	movel d5,d0
  408 	cmpl a1,a0
  409 	jeq L1816
  410 	jra L1818
  411 L1820:
  412 	moveb a1@+,a0@+
  413 L1818:
  414 	subql #1,d0
  415 	jpl L1820
  416 	clrb a0@
  417 L1816:
  418 	cmpl a3,a2
  419 	jeq L1821
  420 	tstl a3
  421 	jeq L1821
  422 	movel a3,sp@-
  423 	jbsr ___builtin_delete
  424 L1821:
  425 	movel a2,d0
  426 	moveml a6@(-32),#0xcfc
  427 	unlk a6
  428 	rts
  429 	.even
  430 .globl _Sprepend__FP6StrRepPCci
  431 _Sprepend__FP6StrRepPCci:
  432 	link a6,#0
  433 	moveml #0x3f30,sp@-
  434 	movel a6@(8),a2
  435 	movel a6@(12),d6
  436 	movel a6@(16),d5
  437 	cmpl #__nilStrRep,a2
  438 	jeq L1825
  439 	tstl a2
  440 	jne L1824
============ Listing of String.s ============	PAGE 9

  441 L1825:
  442 	clrl d7
  443 	subl a2,a2
  444 	clrl d4
  445 	jra L1826
  446 L1824:
  447 	movel a2,d7
  448 	addql #4,d7
  449 	clrl d4
  450 	movew a2@,d4
  451 L1826:
  452 	tstl d5
  453 	jge L1827
  454 	tstl d6
  455 	jne L1829
  456 	clrl d5
  457 	jra L1827
  458 L1829:
  459 	movel d6,a0
  460 L1831:
  461 	tstb a0@+
  462 	jne L1831
  463 	movel d6,d0
  464 	addql #1,d0
  465 	movel a0,d5
  466 	subl d0,d5
  467 L1827:
  468 	movel d4,d3
  469 	addl d5,d3
  470 	tstl a2
  471 	jeq L1834
  472 	clrl d0
  473 	movew a2@(2),d0
  474 	cmpl d3,d0
  475 	jlt L1834
  476 	movel a2,d0
  477 	addql #4,d0
  478 	cmpl d6,d0
  479 	jhi L1833
  480 	clrl d0
  481 	movew a2@,d0
  482 	lea a2@(4,d0:l),a0
  483 	cmpl d6,a0
  484 	jcs L1833
  485 L1834:
  486 	moveq #10,d0
  487 	addl d3,d0
  488 	moveq #16,d2
  489 	cmpl d2,d0
  490 	jls L1852
  491 L1838:
  492 	lsll #1,d2
  493 	cmpl d2,d0
  494 	jhi L1838
  495 L1852:
============ Listing of String.s ============	PAGE 10

  496 	subql #4,d2
  497 	cmpl #16383,d2
  498 	jls L1839
  499 	pea LC2
  500 	pea LC1
  501 	movel _lib_error_handler,a0
  502 	jbsr a0@
  503 	addqw #8,sp
  504 L1839:
  505 	movel d2,sp@-
  506 	jbsr ___builtin_new
  507 	movel d0,a0
  508 	addw #65530,d2
  509 	movew d2,a0@(2)
  510 	movel a0,a3
  511 	addqw #4,sp
  512 	jra L1840
  513 L1833:
  514 	movel a2,a3
  515 L1840:
  516 	movew d3,a3@
  517 	movel d7,a0
  518 	addl d4,a0
  519 	lea a3@(4,d3:l),a1
  520 	movel d4,d1
  521 	addql #1,d1
  522 	tstl a0
  523 	jeq L1841
  524 	jra L1843
  525 L1845:
  526 	moveb a0@,a1@
  527 	subqw #1,a0
  528 	subqw #1,a1
  529 L1843:
  530 	movew d1,d0
  531 	subqw #1,d0
  532 	movew d0,d1
  533 	jge L1845
  534 L1841:
  535 	movel d6,a1
  536 	lea a3@(4),a0
  537 	movel d5,d0
  538 	cmpl a1,a0
  539 	jeq L1846
  540 	jra L1848
  541 L1850:
  542 	moveb a1@+,a0@+
  543 L1848:
  544 	subql #1,d0
  545 	jpl L1850
  546 L1846:
  547 	cmpl a2,a3
  548 	jeq L1851
  549 	tstl a2
  550 	jeq L1851
============ Listing of String.s ============	PAGE 11

  551 	movel a2,sp@-
  552 	jbsr ___builtin_delete
  553 L1851:
  554 	movel a3,d0
  555 	moveml a6@(-32),#0xcfc
  556 	unlk a6
  557 	rts
  558 	.even
  559 .globl _fcompare__FRC6StringT0
  560 _fcompare__FRC6StringT0:
  561 	link a6,#0
  562 	moveml #0x3e30,sp@-
  563 	movel a6@(8),a1
  564 	movel a6@(12),a0
  565 	movel a1@,a3
  566 	addqw #4,a3
  567 	movel a0@,a2
  568 	addqw #4,a2
  569 	movel a1@,a1
  570 	clrl d0
  571 	movew a1@,d0
  572 	movel d0,d5
  573 	movel a0@,a0
  574 	clrl d0
  575 	movew a0@,d0
  576 	movel d0,d4
  577 	movel d5,d3
  578 	cmpl d5,d4
  579 	jge L1881
  580 	movel d4,d3
  581 	jra L1881
  582 L1887:
  583 	moveb a3@+,d2
  584 	moveb a2@+,d1
  585 	moveb d2,d0
  586 	subb d1,d0
  587 	jeq L1881
  588 	cmpb #96,d2
  589 	jle L1884
  590 	cmpb #122,d2
  591 	jgt L1884
  592 	addb #-32,d2
  593 L1884:
  594 	cmpb #96,d1
  595 	jle L1885
  596 	cmpb #122,d1
  597 	jgt L1885
  598 	addb #-32,d1
  599 L1885:
  600 	moveb d2,d0
  601 	subb d1,d0
  602 	jeq L1881
  603 	extbl d0
  604 	jra L1875
  605 L1881:
============ Listing of String.s ============	PAGE 12

  606 	subql #1,d3
  607 	moveq #-1,d6
  608 	cmpl d3,d6
  609 	jlt L1887
  610 	movel d5,d0
  611 	subl d4,d0
  612 L1875:
  613 	moveml a6@(-28),#0xc7c
  614 	unlk a6
  615 	rts
  616 	.even
  617 .globl _compare__FRC6StringPCc
  618 _compare__FRC6StringPCc:
  619 	link a6,#0
  620 	movel a2,sp@-
  621 	movel a6@(8),a2
  622 	movel a2@,a1
  623 	addqw #4,a1
  624 	movel a6@(12),a0
  625 	tstl a0
  626 	jne L1891
  627 	tstb a1@
  628 	sne d0
  629 	moveq #1,d1
  630 	andl d1,d0
  631 	jra L1890
  632 L1891:
  633 L1893:
  634 	moveb a1@,d0
  635 	subb a0@+,d0
  636 	jne L1894
  637 	tstb a1@+
  638 	jne L1893
  639 L1894:
  640 	extbl d0
  641 L1890:
  642 	movel a6@(-4),a2
  643 	unlk a6
  644 	rts
  645 	.even
  646 .globl _compare__FRC6StringT0
  647 _compare__FRC6StringT0:
  648 	link a6,#0
  649 	movel a2,sp@-
  650 	movel a6@(8),a2
  651 	movel a2@,a1
  652 	addqw #4,a1
  653 	movel a6@(12),a2
  654 	movel a2@,a0
  655 	addqw #4,a0
  656 	tstl a0
  657 	jne L1899
  658 	tstb a1@
  659 	sne d0
  660 	moveq #1,d1
============ Listing of String.s ============	PAGE 13

  661 	andl d1,d0
  662 	jra L1898
  663 L1899:
  664 L1901:
  665 	moveb a1@,d0
  666 	subb a0@+,d0
  667 	jne L1902
  668 	tstb a1@+
  669 	jne L1901
  670 L1902:
  671 	extbl d0
  672 L1898:
  673 	movel a6@(-4),a2
  674 	unlk a6
  675 	rts
  676 	.even
  677 .globl _compare__FRC6StringRC9SubString
  678 _compare__FRC6StringRC9SubString:
  679 	link a6,#0
  680 	moveml #0x3820,sp@-
  681 	movel a6@(8),a1
  682 	movel a6@(12),a0
  683 	movel a1@,a2
  684 	addqw #4,a2
  685 	movel a1@,a1
  686 	clrl d0
  687 	movew a1@,d0
  688 	movel d0,d3
  689 	movel a0@,a1
  690 	clrl d0
  691 	movew a0@(4),d0
  692 	addql #4,d0
  693 	addl a1@,d0
  694 	movel d0,a1
  695 	clrl d0
  696 	movew a0@(6),d0
  697 	movel d0,d2
  698 	movel d3,d1
  699 	cmpl d3,d2
  700 	jge L1910
  701 	movel d2,d1
  702 	jra L1910
  703 L1913:
  704 	moveb a2@+,d0
  705 	subb a1@+,d0
  706 	jeq L1910
  707 	extbl d0
  708 	jra L1908
  709 L1910:
  710 	subql #1,d1
  711 	moveq #-1,d4
  712 	cmpl d1,d4
  713 	jlt L1913
  714 	movel d3,d0
  715 	subl d2,d0
============ Listing of String.s ============	PAGE 14

  716 L1908:
  717 	moveml a6@(-16),#0x41c
  718 	unlk a6
  719 	rts
  720 	.even
  721 .globl _compare__FRC9SubStringRC6String
  722 _compare__FRC9SubStringRC6String:
  723 	link a6,#0
  724 	moveml #0x3820,sp@-
  725 	movel a6@(8),a1
  726 	movel a6@(12),a0
  727 	movel a1@,a2
  728 	clrl d0
  729 	movew a1@(4),d0
  730 	addql #4,d0
  731 	addl a2@,d0
  732 	movel d0,a2
  733 	clrl d0
  734 	movew a1@(6),d0
  735 	movel d0,d3
  736 	movel a0@,a1
  737 	addqw #4,a1
  738 	movel a0@,a0
  739 	clrl d0
  740 	movew a0@,d0
  741 	movel d0,d2
  742 	movel d3,d1
  743 	cmpl d3,d2
  744 	jge L1921
  745 	movel d2,d1
  746 	jra L1921
  747 L1924:
  748 	moveb a2@+,d0
  749 	subb a1@+,d0
  750 	jeq L1921
  751 	extbl d0
  752 	jra L1919
  753 L1921:
  754 	subql #1,d1
  755 	moveq #-1,d4
  756 	cmpl d1,d4
  757 	jlt L1924
  758 	movel d3,d0
  759 	subl d2,d0
  760 L1919:
  761 	moveml a6@(-16),#0x41c
  762 	unlk a6
  763 	rts
  764 	.even
  765 .globl _compare__FRC9SubStringT0
  766 _compare__FRC9SubStringT0:
  767 	link a6,#0
  768 	moveml #0x3820,sp@-
  769 	movel a6@(8),a1
  770 	movel a6@(12),a0
============ Listing of String.s ============	PAGE 15

  771 	movel a1@,a2
  772 	clrl d0
  773 	movew a1@(4),d0
  774 	addql #4,d0
  775 	addl a2@,d0
  776 	movel d0,a2
  777 	clrl d0
  778 	movew a1@(6),d0
  779 	movel d0,d3
  780 	movel a0@,a1
  781 	clrl d0
  782 	movew a0@(4),d0
  783 	addql #4,d0
  784 	addl a1@,d0
  785 	movel d0,a1
  786 	clrl d0
  787 	movew a0@(6),d0
  788 	movel d0,d2
  789 	movel d3,d1
  790 	cmpl d3,d2
  791 	jge L1932
  792 	movel d2,d1
  793 	jra L1932
  794 L1935:
  795 	moveb a2@+,d0
  796 	subb a1@+,d0
  797 	jeq L1932
  798 	extbl d0
  799 	jra L1930
  800 L1932:
  801 	subql #1,d1
  802 	moveq #-1,d4
  803 	cmpl d1,d4
  804 	jlt L1935
  805 	movel d3,d0
  806 	subl d2,d0
  807 L1930:
  808 	moveml a6@(-16),#0x41c
  809 	unlk a6
  810 	rts
  811 	.even
  812 .globl _compare__FRC9SubStringPCc
  813 _compare__FRC9SubStringPCc:
  814 	link a6,#0
  815 	moveml #0x2020,sp@-
  816 	movel a6@(8),a2
  817 	movel a6@(12),a1
  818 	tstl a1
  819 	jne L1937
  820 	clrl d0
  821 	movew a2@(6),d0
  822 	jra L1936
  823 L1937:
  824 	movel a2@,a0
  825 	clrl d0
============ Listing of String.s ============	PAGE 16

  826 	movew a2@(4),d0
  827 	addql #4,d0
  828 	addl a0@,d0
  829 	movel d0,a0
  830 	clrl d0
  831 	movew a2@(6),d0
  832 	movel d0,d1
  833 	jra L1942
  834 L1945:
  835 	moveb a0@+,d0
  836 	subb a1@+,d0
  837 	jeq L1942
  838 	extbl d0
  839 	jra L1936
  840 L1942:
  841 	subql #1,d1
  842 	moveq #-1,d2
  843 	cmpl d1,d2
  844 	jlt L1945
  845 	tstb a1@
  846 	jne L1946
  847 	clrl d0
  848 	jra L1947
  849 L1946:
  850 	moveq #-1,d0
  851 L1947:
  852 L1936:
  853 	moveml a6@(-8),#0x404
  854 	unlk a6
  855 	rts
  856 	.even
  857 .globl _search__C6Stringiic
  858 _search__C6Stringiic:
  859 	link a6,#0
  860 	moveml #0x2020,sp@-
  861 	movel a6@(12),a0
  862 	movel a6@(16),a1
  863 	moveb a6@(23),d2
  864 	movel a6@(8),a2
  865 	movel a2@,d0
  866 	addql #4,d0
  867 	tstl a1
  868 	jle L1950
  869 	tstl a0
  870 	jlt L1951
  871 	lea a0@(0,d0:l),a0
  872 	movel d0,d1
  873 	addl a1,d1
  874 	cmpl a0,d1
  875 	jls L1950
  876 L1955:
  877 	cmpb a0@+,d2
  878 	jne L1952
  879 	subqw #1,a0
  880 	subl a0,d0
============ Listing of String.s ============	PAGE 17

  881 	negl d0
  882 	jra L1948
  883 L1952:
  884 	cmpl a0,d1
  885 	jhi L1955
  886 	jra L1950
  887 L1951:
  888 	lea a0@(1,a1:l),a0
  889 	lea a0@(0,d0:l),a0
  890 	jra L1957
  891 L1960:
  892 	cmpb a0@,d2
  893 	jne L1957
  894 	subl a0,d0
  895 	negl d0
  896 	jra L1948
  897 L1957:
  898 	subqw #1,a0
  899 	cmpl a0,d0
  900 	jls L1960
  901 L1950:
  902 	moveq #-1,d0
  903 L1948:
  904 	moveml a6@(-8),#0x404
  905 	unlk a6
  906 	rts
  907 	.even
  908 .globl _search__C6StringiiPCci
  909 _search__C6StringiiPCci:
  910 	link a6,#0
  911 	moveml #0x3e30,sp@-
  912 	movel a6@(12),a2
  913 	movel a6@(16),a1
  914 	movel a6@(20),d4
  915 	movel a6@(24),d1
  916 	movel a6@(8),a3
  917 	movel a3@,d3
  918 	addql #4,d3
  919 	tstl d1
  920 	jge L1964
  921 	tstl d4
  922 	jne L1966
  923 	clrl d1
  924 	jra L1964
  925 L1966:
  926 	movel d4,a0
  927 L1968:
  928 	tstb a0@+
  929 	jne L1968
  930 	movel d4,d0
  931 	addql #1,d0
  932 	movel a0,d1
  933 	subl d0,d1
  934 L1964:
  935 	tstl a1
============ Listing of String.s ============	PAGE 18

  936 	jle L1970
  937 	tstl d1
  938 	jle L1970
  939 	tstl a2
  940 	jlt L1971
  941 	movel a1,d0
  942 	subl d1,d0
  943 	movel d3,d2
  944 	addl d0,d2
  945 	addl d4,d1
  946 	movel d3,d0
  947 	addl a2,d0
  948 	cmpl d0,d2
  949 	jcs L1970
  950 L1978:
  951 	movel d0,a1
  952 	addql #1,d0
  953 	movel d4,a0
  954 	jra L1974
  955 L1977:
  956 	cmpl a0,d1
  957 	jhi L1974
  958 	subql #1,d0
  959 	subl d3,d0
  960 	jra L1962
  961 L1974:
  962 	cmpmb a0@+,a1@+
  963 	jeq L1977
  964 	cmpl d0,d2
  965 	jcc L1978
  966 	jra L1970
  967 L1971:
  968 	movel d1,d0
  969 	subql #1,d0
  970 	movel d3,d6
  971 	addl d0,d6
  972 	movel d4,d5
  973 	addl d0,d5
  974 	lea a2@(1,a1:l),a0
  975 	movel d3,d2
  976 	addl a0,d2
  977 	jra L1980
  978 L1986:
  979 	movel d2,a0
  980 	movel d5,a1
  981 	jra L1982
  982 L1985:
  983 	cmpl a1,d4
  984 	jls L1982
  985 	addqw #1,a0
  986 	movel a0,d0
  987 	subl d3,d0
  988 	jra L1962
  989 L1982:
  990 	moveb a1@,d0
============ Listing of String.s ============	PAGE 19

  991 	subqw #1,a1
  992 	moveb a0@,d1
  993 	subqw #1,a0
  994 	cmpb d1,d0
  995 	jeq L1985
  996 L1980:
  997 	subql #1,d2
  998 	cmpl d2,d6
  999 	jls L1986
 1000 L1970:
 1001 	moveq #-1,d0
 1002 L1962:
 1003 	moveml a6@(-28),#0xc7c
 1004 	unlk a6
 1005 	rts
 1006 	.even
 1007 .globl _match__C6StringiiiPCci
 1008 _match__C6StringiiiPCci:
 1009 	link a6,#0
 1010 	moveml #0x3c20,sp@-
 1011 	movel a6@(12),d2
 1012 	movel a6@(16),d1
 1013 	movel a6@(20),d4
 1014 	movel a6@(24),a1
 1015 	movel a6@(28),d3
 1016 	jge L1989
 1017 	tstl a1
 1018 	jne L1991
 1019 	clrl d3
 1020 	jra L1989
 1021 L1991:
 1022 	movel a1,a0
 1023 L1993:
 1024 	tstb a0@+
 1025 	jne L1993
 1026 	movel a1,d0
 1027 	addql #1,d0
 1028 	movel a0,d3
 1029 	subl d0,d3
 1030 L1989:
 1031 	tstl d2
 1032 	jge L1995
 1033 	movel d1,d0
 1034 	addl d2,d0
 1035 	movel d0,d2
 1036 	subl d3,d2
 1037 	addql #1,d2
 1038 	jmi L2006
 1039 	tstl d4
 1040 	jeq L1998
 1041 	tstl d2
 1042 	jeq L1998
 1043 	jra L2006
 1044 L1995:
 1045 	tstl d4
============ Listing of String.s ============	PAGE 20

 1046 	jeq L1998
 1047 	movel d1,d0
 1048 	subl d2,d0
 1049 	cmpl d0,d3
 1050 	jne L2006
 1051 L1998:
 1052 	tstl d1
 1053 	jeq L2006
 1054 	tstl d3
 1055 	jeq L2006
 1056 	movel d1,d0
 1057 	subl d2,d0
 1058 	cmpl d0,d3
 1059 	jgt L2006
 1060 	cmpl d2,d1
 1061 	jle L2006
 1062 	movel d3,d1
 1063 	movel d2,d0
 1064 	addql #4,d0
 1065 	movel d0,a0
 1066 	movel a6@(8),a2
 1067 	addl a2@,a0
 1068 	jra L2002
 1069 L2005:
 1070 	cmpmb a1@+,a0@+
 1071 	jeq L2002
 1072 L2006:
 1073 	clrl d0
 1074 	jra L1988
 1075 L2002:
 1076 	subql #1,d1
 1077 	moveq #-1,d5
 1078 	cmpl d1,d5
 1079 	jlt L2005
 1080 	movel d3,d0
 1081 L1988:
 1082 	moveml a6@(-20),#0x43c
 1083 	unlk a6
 1084 	rts
 1085 	.even
 1086 .globl _assign__9SubStringP6StrRepPCci
 1087 _assign__9SubStringP6StrRepPCci:
 1088 	link a6,#0
 1089 	moveml #0x383c,sp@-
 1090 	movel a6@(8),a4
 1091 	movel a6@(16),d2
 1092 	movel a6@(20),a3
 1093 	cmpl #__nilString,a4@
 1094 	jeq L2007
 1095 	tstl a3
 1096 	jge L2009
 1097 	tstl d2
 1098 	jne L2011
 1099 	subl a3,a3
 1100 	jra L2009
============ Listing of String.s ============	PAGE 21

 1101 L2011:
 1102 	movel d2,a0
 1103 L2013:
 1104 	tstb a0@+
 1105 	jne L2013
 1106 	movel d2,d0
 1107 	addql #1,d0
 1108 	movel a0,a3
 1109 	subl d0,a3
 1110 L2009:
 1111 	movel a4@,a0
 1112 	movel a0@,a2
 1113 	clrl d0
 1114 	movew a2@,d0
 1115 	clrl d1
 1116 	movew a4@(6),d1
 1117 	subl d1,d0
 1118 	movel d0,d4
 1119 	addl a3,d4
 1120 	cmpl a6@(12),a2
 1121 	jeq L2016
 1122 	clrl d0
 1123 	movew a2@(2),d0
 1124 	cmpl d4,d0
 1125 	jgt L2015
 1126 L2016:
 1127 	movel a2,d3
 1128 	movel d4,sp@-
 1129 	clrl sp@-
 1130 	jbsr _Sresize__FP6StrRepi
 1131 	movel d0,a2
 1132 	movel d3,a1
 1133 	addqw #4,a1
 1134 	lea a2@(4),a0
 1135 	clrl d0
 1136 	movew a4@(4),d0
 1137 	addqw #8,sp
 1138 	cmpl a1,a0
 1139 	jeq L2017
 1140 	jra L2019
 1141 L2021:
 1142 	moveb a1@+,a0@+
 1143 L2019:
 1144 	subql #1,d0
 1145 	jpl L2021
 1146 L2017:
 1147 	movel d2,a1
 1148 	clrl d0
 1149 	movew a4@(4),d0
 1150 	lea a2@(4,d0:l),a0
 1151 	movel a3,d0
 1152 	cmpl d2,a0
 1153 	jeq L2022
 1154 	jra L2024
 1155 L2026:
============ Listing of String.s ============	PAGE 22

 1156 	moveb a1@+,a0@+
 1157 L2024:
 1158 	subql #1,d0
 1159 	jpl L2026
 1160 L2022:
 1161 	clrl d0
 1162 	movew a4@(4),d0
 1163 	clrl d1
 1164 	movew a4@(6),d1
 1165 	movel d0,a5
 1166 	lea a5@(4,d1:l),a0
 1167 	lea a0@(0,d3:l),a1
 1168 	lea a3@(4,d0:l),a0
 1169 	lea a2@(0,a0:l),a0
 1170 	tstl a1
 1171 	jeq L2027
 1172 L2029:
 1173 	moveb a1@+,d0
 1174 	moveb d0,a0@+
 1175 	jne L2029
 1176 L2027:
 1177 	movel d3,sp@-
 1178 	jbsr ___builtin_delete
 1179 	jra L2031
 1180 L2015:
 1181 	clrl d0
 1182 	movew a4@(6),d0
 1183 	cmpl d0,a3
 1184 	jne L2032
 1185 	movel d2,a1
 1186 	clrl d0
 1187 	movew a4@(4),d0
 1188 	lea a2@(4,d0:l),a0
 1189 	clrl d0
 1190 	movew a4@(6),d0
 1191 	cmpl d2,a0
 1192 	jeq L2031
 1193 	jra L2035
 1194 L2037:
 1195 	moveb a1@+,a0@+
 1196 L2035:
 1197 	subql #1,d0
 1198 	jpl L2037
 1199 	jra L2031
 1200 L2032:
 1201 	clrl d0
 1202 	movew a4@(6),d0
 1203 	cmpl a3,d0
 1204 	jle L2039
 1205 	movel d2,a1
 1206 	clrl d0
 1207 	movew a4@(4),d0
 1208 	lea a2@(4,d0:l),a0
 1209 	movel a3,d0
 1210 	cmpl d2,a0
============ Listing of String.s ============	PAGE 23

 1211 	jeq L2040
 1212 	jra L2042
 1213 L2044:
 1214 	moveb a1@+,a0@+
 1215 L2042:
 1216 	subql #1,d0
 1217 	jpl L2044
 1218 L2040:
 1219 	clrl d0
 1220 	movew a4@(4),d0
 1221 	clrl d1
 1222 	movew a4@(6),d1
 1223 	movel d0,a5
 1224 	lea a5@(4,d1:l),a0
 1225 	lea a2@(0,a0:l),a1
 1226 	lea a3@(4,d0:l),a0
 1227 	lea a2@(0,a0:l),a0
 1228 	tstl a1
 1229 	jeq L2031
 1230 L2047:
 1231 	moveb a1@+,d0
 1232 	moveb d0,a0@+
 1233 	jne L2047
 1234 	jra L2031
 1235 L2039:
 1236 	clrl d0
 1237 	movew a2@,d0
 1238 	lea a2@(4,d0:l),a0
 1239 	lea a2@(4,d4:l),a1
 1240 	clrl d1
 1241 	movew a4@(4),d1
 1242 	subl d1,d0
 1243 	clrl d1
 1244 	movew a4@(6),d1
 1245 	subl d0,d1
 1246 	negl d1
 1247 	addql #1,d1
 1248 	tstl a0
 1249 	jeq L2050
 1250 	jra L2052
 1251 L2054:
 1252 	moveb a0@,a1@
 1253 	subqw #1,a0
 1254 	subqw #1,a1
 1255 L2052:
 1256 	movew d1,d0
 1257 	subqw #1,d0
 1258 	movew d0,d1
 1259 	jge L2054
 1260 L2050:
 1261 	movel d2,a1
 1262 	clrl d0
 1263 	movew a4@(4),d0
 1264 	lea a2@(4,d0:l),a0
 1265 	movel a3,d0
============ Listing of String.s ============	PAGE 24

 1266 	cmpl a1,a0
 1267 	jeq L2031
 1268 	jra L2057
 1269 L2059:
 1270 	moveb a1@+,a0@+
 1271 L2057:
 1272 	subql #1,d0
 1273 	jpl L2059
 1274 L2031:
 1275 	movew d4,a2@
 1276 	movel a4@,a0
 1277 	movel a2,a0@
 1278 L2007:
 1279 	moveml a6@(-28),#0x3c1c
 1280 	unlk a6
 1281 	rts
 1282 	.even
 1283 .globl __$_Regex
 1284 __$_Regex:
 1285 	link a6,#0
 1286 	moveml #0x30,sp@-
 1287 	movel a6@(8),a3
 1288 	movel a3@,a0
 1289 	movel a0@,sp@-
 1290 	lea ___builtin_delete,a2
 1291 	jbsr a2@
 1292 	movel a3@,a0
 1293 	movel a0@(12),sp@-
 1294 	jbsr a2@
 1295 	movel a3@,sp@-
 1296 	jbsr a2@
 1297 	movel a3@(4),sp@-
 1298 	jbsr a2@
 1299 	addw #16,sp
 1300 	tstl a6@(12)
 1301 	jeq L2063
 1302 	movel a3,sp@-
 1303 	jbsr a2@
 1304 L2063:
 1305 	moveml a6@(-8),#0xc00
 1306 	unlk a6
 1307 	rts
 1308 LC3:
 1309 	.ascii "Regex\0"
 1310 	.even
 1311 .globl _initialize__5RegexPCciiiT0
 1312 _initialize__5RegexPCciiiT0:
 1313 	link a6,#0
 1314 	moveml #0x3c30,sp@-
 1315 	movel a6@(8),a3
 1316 	movel a6@(12),d4
 1317 	movel a6@(16),d2
 1318 	movel a6@(20),d5
 1319 	movel a6@(24),d3
 1320 	tstl d2
============ Listing of String.s ============	PAGE 25

 1321 	jge L2065
 1322 	tstl d4
 1323 	jne L2067
 1324 	clrl d2
 1325 	jra L2065
 1326 L2067:
 1327 	movel d4,a0
 1328 L2069:
 1329 	tstb a0@+
 1330 	jne L2069
 1331 	movel d4,d0
 1332 	addql #1,d0
 1333 	movel a0,d2
 1334 	subl d0,d2
 1335 L2065:
 1336 	pea 22:w
 1337 	lea ___builtin_new,a2
 1338 	jbsr a2@
 1339 	movel d0,a3@
 1340 	pea 80:w
 1341 	jbsr a2@
 1342 	movel d0,a3@(4)
 1343 	addqw #8,sp
 1344 	tstl d5
 1345 	jeq L2071
 1346 	pea 256:w
 1347 	jbsr a2@
 1348 	movel a3@,a0
 1349 	movel d0,a0@(12)
 1350 	addqw #4,sp
 1351 	jra L2072
 1352 L2071:
 1353 	movel a3@,a0
 1354 	clrl a0@(12)
 1355 L2072:
 1356 	movel a3@,a0
 1357 	movel a6@(28),a0@(16)
 1358 	cmpl d2,d3
 1359 	jge L2073
 1360 	movel d2,d3
 1361 L2073:
 1362 	movel a3@,a0
 1363 	movel d3,a0@(4)
 1364 	movel a3@,a0
 1365 	movel a0@(4),sp@-
 1366 	jbsr ___builtin_new
 1367 	movel a3@,a0
 1368 	movel d0,a0@
 1369 	movel a3@,sp@-
 1370 	movel d2,sp@-
 1371 	movel d4,sp@-
 1372 	jbsr _re_compile_pattern__FPciP17re_pattern_buffer
 1373 	addw #16,sp
 1374 	tstl d0
 1375 	jeq L2074
============ Listing of String.s ============	PAGE 26

 1376 	movel d0,sp@-
 1377 	pea LC3
 1378 	movel _lib_error_handler,a0
 1379 	jbsr a0@
 1380 	jra L2075
 1381 L2074:
 1382 	tstl d5
 1383 	jeq L2075
 1384 	movel a3@,sp@-
 1385 	jbsr _re_compile_fastmap__FP17re_pattern_buffer
 1386 L2075:
 1387 	moveml a6@(-24),#0xc3c
 1388 	unlk a6
 1389 	rts
 1390 	.even
 1391 .globl _match_info__C5RegexRiT0i
 1392 _match_info__C5RegexRiT0i:
 1393 	link a6,#0
 1394 	moveml #0x2020,sp@-
 1395 	movel a6@(12),a1
 1396 	movel a6@(20),d0
 1397 	moveq #9,d2
 1398 	cmpl d0,d2
 1399 	jcc L2078
 1400 	clrl d0
 1401 	jra L2077
 1402 L2078:
 1403 	movel a6@(8),a2
 1404 	movel a2@(4),a0
 1405 	movel a0@(d0:l:4),a1@
 1406 	movel a0@(40,d0:l:4),d0
 1407 	subl a1@,d0
 1408 	movel a6@(16),a2
 1409 	movel d0,a2@
 1410 	clrl d1
 1411 	tstl a1@
 1412 	jlt L2080
 1413 	tstl d0
 1414 	jlt L2080
 1415 	moveq #1,d1
 1416 L2080:
 1417 	movel d1,d0
 1418 L2077:
 1419 	moveml a6@(-8),#0x404
 1420 	unlk a6
 1421 	rts
 1422 	.even
 1423 .globl _search__C5RegexPCciRii
 1424 _search__C5RegexPCciRii:
 1425 	link a6,#0
 1426 	moveml #0x2030,sp@-
 1427 	movel a6@(8),a2
 1428 	movel a6@(16),d2
 1429 	movel a6@(20),a3
 1430 	movel a6@(24),d0
============ Listing of String.s ============	PAGE 27

 1431 	jlt L2082
 1432 	movel d2,d1
 1433 	subl d0,d1
 1434 	jra L2083
 1435 L2082:
 1436 	addl d2,d0
 1437 	movel d0,d1
 1438 	negl d1
 1439 L2083:
 1440 	movel d2,sp@-
 1441 	movel a2@(4),sp@-
 1442 	movel d1,sp@-
 1443 	movel d0,sp@-
 1444 	movel d2,sp@-
 1445 	movel a6@(12),sp@-
 1446 	clrl sp@-
 1447 	clrl sp@-
 1448 	movel a2@,sp@-
 1449 	jbsr _re_search_2__FP17re_pattern_bufferPciT1iiiP12re_registersi
 1450 	tstl d0
 1451 	jlt L2084
 1452 	movel a2@(4),a0
 1453 	movel a0@(40),a1
 1454 	subl a0@,a1
 1455 	movel a1,a3@
 1456 	jra L2085
 1457 L2084:
 1458 	clrl a3@
 1459 L2085:
 1460 	moveml a6@(-12),#0xc04
 1461 	unlk a6
 1462 	rts
 1463 	.even
 1464 .globl _match__C5RegexPCcii
 1465 _match__C5RegexPCcii:
 1466 	link a6,#0
 1467 	movel d2,sp@-
 1468 	movel a6@(8),a0
 1469 	movel a6@(12),d2
 1470 	movel a6@(16),d1
 1471 	movel a6@(20),d0
 1472 	jge L2087
 1473 	addl d1,d0
 1474 	cmpl d0,d1
 1475 	jle L2092
 1476 	movel d0,sp@-
 1477 	movel a0@(4),sp@-
 1478 	clrl sp@-
 1479 	movel d0,sp@-
 1480 	jra L2093
 1481 L2087:
 1482 	cmpl d0,d1
 1483 	jgt L2090
 1484 L2092:
 1485 	clrl d0
============ Listing of String.s ============	PAGE 28

 1486 	jra L2086
 1487 L2090:
 1488 	movel d1,sp@-
 1489 	movel a0@(4),sp@-
 1490 	movel d0,sp@-
 1491 	movel d1,sp@-
 1492 L2093:
 1493 	movel d2,sp@-
 1494 	clrl sp@-
 1495 	clrl sp@-
 1496 	movel a0@,sp@-
 1497 	jbsr _re_match_2__FP17re_pattern_bufferPUciT1iiP12re_registersi
 1498 L2086:
 1499 	movel a6@(-4),d2
 1500 	unlk a6
 1501 	rts
 1502 	.even
 1503 .globl __gsub__6StringPCciT0i
 1504 __gsub__6StringPCciT0i:
 1505 	link a6,#-8
 1506 	moveml #0x3f3c,sp@-
 1507 	movel a6@(16),d6
 1508 	movel a6@(24),a2
 1509 	clrl a6@(-4)
 1510 	tstl d6
 1511 	jge L2095
 1512 	tstl a6@(12)
 1513 	jne L2097
 1514 	clrl d6
 1515 	jra L2095
 1516 L2097:
 1517 	movel a6@(12),a0
 1518 L2099:
 1519 	tstb a0@+
 1520 	jne L2099
 1521 	movel a6@(12),d0
 1522 	addql #1,d0
 1523 	movel a0,d6
 1524 	subl d0,d6
 1525 L2095:
 1526 	tstl a2
 1527 	jge L2101
 1528 	tstl a6@(20)
 1529 	jne L2103
 1530 	subl a2,a2
 1531 	jra L2101
 1532 L2103:
 1533 	movel a6@(20),a0
 1534 L2105:
 1535 	tstb a0@+
 1536 	jne L2105
 1537 	movel a6@(20),d0
 1538 	addql #1,d0
 1539 	movel a0,a2
 1540 	subl d0,a2
============ Listing of String.s ============	PAGE 29

 1541 L2101:
 1542 	movel a6@(8),a5
 1543 	movel a5@,a0
 1544 	clrl d0
 1545 	movew a0@,d0
 1546 	movel d0,a4
 1547 	tstl a4
 1548 	jle L2138
 1549 	tstl d6
 1550 	jle L2138
 1551 	cmpl a4,d6
 1552 	jgt L2138
 1553 	movel a6@(8),a5
 1554 	movel a5@,d1
 1555 	addql #4,d1
 1556 	movel d1,a6@(-8)
 1557 	movel a4,d1
 1558 	asll #1,d1
 1559 	movel d1,sp@-
 1560 	clrl sp@-
 1561 	jbsr _Sresize__FP6StrRepi
 1562 	movel d0,a3
 1563 	movel a3,d7
 1564 	addql #4,d7
 1565 	clrl d3
 1566 	clrl d4
 1567 	movel a4,d5
 1568 	addqw #8,sp
 1569 	cmpl d5,d6
 1570 	jgt L2112
 1571 L2126:
 1572 	movel d6,sp@-
 1573 	movel a6@(12),sp@-
 1574 	movel a4,sp@-
 1575 	movel d3,sp@-
 1576 	movel a6@(8),sp@-
 1577 	jbsr _search__C6StringiiPCci
 1578 	movel d0,d2
 1579 	addw #20,sp
 1580 	jlt L2112
 1581 	addql #1,a6@(-4)
 1582 	movel d4,d0
 1583 	addl d5,d0
 1584 	addl a2,d0
 1585 	movel d0,a0
 1586 	subl d6,a0
 1587 	clrl d0
 1588 	movew a3@(2),d0
 1589 	cmpl a0,d0
 1590 	jgt L2115
 1591 	movel a0,sp@-
 1592 	movel a3,sp@-
 1593 	jbsr _Sresize__FP6StrRepi
 1594 	movel d0,a3
 1595 	movel a3,d7
============ Listing of String.s ============	PAGE 30

 1596 	addql #4,d7
 1597 	addqw #8,sp
 1598 L2115:
 1599 	subl d3,d2
 1600 	movel a6@(-8),a1
 1601 	addl d3,a1
 1602 	movel d7,a0
 1603 	addl d4,a0
 1604 	movel d2,d0
 1605 	cmpl a1,a0
 1606 	jeq L2116
 1607 	jra L2118
 1608 L2120:
 1609 	moveb a1@+,a0@+
 1610 L2118:
 1611 	subql #1,d0
 1612 	jpl L2120
 1613 L2116:
 1614 	movel a6@(20),a1
 1615 	movel d4,d0
 1616 	addl d2,d0
 1617 	movel d7,a0
 1618 	addl d0,a0
 1619 	movel a2,d0
 1620 	cmpl a1,a0
 1621 	jeq L2121
 1622 	jra L2123
 1623 L2125:
 1624 	moveb a1@+,a0@+
 1625 L2123:
 1626 	subql #1,d0
 1627 	jpl L2125
 1628 L2121:
 1629 	movel d2,d0
 1630 	addl d6,d0
 1631 	addl d0,d3
 1632 	subl d0,d5
 1633 	movel d2,d0
 1634 	addl a2,d0
 1635 	addl d0,d4
 1636 	cmpl d5,d6
 1637 	jle L2126
 1638 L2112:
 1639 	movel a6@(-8),a1
 1640 	addl d3,a1
 1641 	movel d7,a0
 1642 	addl d4,a0
 1643 	movel d5,d0
 1644 	cmpl a1,a0
 1645 	jeq L2127
 1646 	jra L2129
 1647 L2131:
 1648 	moveb a1@+,a0@+
 1649 L2129:
 1650 	subql #1,d0
============ Listing of String.s ============	PAGE 31

 1651 	jpl L2131
 1652 	clrb a0@
 1653 L2127:
 1654 	movew d4,d0
 1655 	addw d5,d0
 1656 	movew d0,a3@
 1657 	movel a6@(8),a5
 1658 	movel a5@,a0
 1659 	movew a0@(2),d1
 1660 	cmpw a3@,d1
 1661 	jcs L2132
 1662 	movew d0,a0@
 1663 	lea a3@(4),a2
 1664 	movel a5@,a1
 1665 	addqw #4,a1
 1666 	movel a5@,a0
 1667 	clrl d0
 1668 	movew a0@,d0
 1669 	cmpl a2,a1
 1670 	jeq L2133
 1671 	jra L2135
 1672 L2137:
 1673 	moveb a2@+,a1@+
 1674 L2135:
 1675 	subql #1,d0
 1676 	jpl L2137
 1677 	clrb a1@
 1678 L2133:
 1679 	movel a3,sp@-
 1680 	jbsr ___builtin_delete
 1681 	jra L2138
 1682 L2132:
 1683 	movel a6@(8),a5
 1684 	movel a5@,sp@-
 1685 	jbsr ___builtin_delete
 1686 	movel a3,a5@
 1687 L2138:
 1688 	movel a6@(-4),d0
 1689 	moveml a6@(-48),#0x3cfc
 1690 	unlk a6
 1691 	rts
 1692 	.even
 1693 .globl __gsub__6StringRC5RegexPCci
 1694 __gsub__6StringRC5RegexPCci:
 1695 	link a6,#-8
 1696 	moveml #0x3f3c,sp@-
 1697 	movel a6@(8),a5
 1698 	movel a6@(20),d7
 1699 	clrl a6@(-8)
 1700 	movel a5@,a0
 1701 	clrl d0
 1702 	movew a0@,d0
 1703 	movel d0,a4
 1704 	tstl a4
 1705 	jgt L2142
============ Listing of String.s ============	PAGE 32

 1706 	clrl d0
 1707 	jra L2140
 1708 L2142:
 1709 	tstl d7
 1710 	jge L2143
 1711 	tstl a6@(16)
 1712 	jne L2145
 1713 	clrl d7
 1714 	jra L2143
 1715 L2145:
 1716 	movel a6@(16),a0
 1717 L2147:
 1718 	tstb a0@+
 1719 	jne L2147
 1720 	movel a6@(16),d0
 1721 	addql #1,d0
 1722 	movel a0,d7
 1723 	subl d0,d7
 1724 L2143:
 1725 	movel a5@,a2
 1726 	addqw #4,a2
 1727 	movel a4,d1
 1728 	asll #1,d1
 1729 	movel d1,sp@-
 1730 	clrl sp@-
 1731 	jbsr _Sresize__FP6StrRepi
 1732 	movel d0,a3
 1733 	movel a3,d6
 1734 	addql #4,d6
 1735 	clrl d3
 1736 	clrl d4
 1737 	movel a4,d5
 1738 	clrl a6@(-4)
 1739 	addqw #8,sp
 1740 	tstl d5
 1741 	jle L2151
 1742 L2166:
 1743 	movel d3,sp@-
 1744 	pea a6@(-4)
 1745 	movel a4,sp@-
 1746 	movel a2,sp@-
 1747 	movel a6@(12),sp@-
 1748 	jbsr _search__C5RegexPCciRii
 1749 	movel d0,d2
 1750 	addw #20,sp
 1751 	jlt L2151
 1752 	tstl a6@(-4)
 1753 	jle L2151
 1754 	addql #1,a6@(-8)
 1755 	movel d4,d0
 1756 	addl d5,d0
 1757 	addl d7,d0
 1758 	movel d0,a0
 1759 	subl a6@(-4),a0
 1760 	clrl d0
============ Listing of String.s ============	PAGE 33

 1761 	movew a3@(2),d0
 1762 	cmpl a0,d0
 1763 	jgt L2155
 1764 	movel a0,sp@-
 1765 	movel a3,sp@-
 1766 	jbsr _Sresize__FP6StrRepi
 1767 	movel d0,a3
 1768 	movel a3,d6
 1769 	addql #4,d6
 1770 	addqw #8,sp
 1771 L2155:
 1772 	subl d3,d2
 1773 	lea a2@(0,d3:l),a1
 1774 	movel d6,a0
 1775 	addl d4,a0
 1776 	movel d2,d0
 1777 	cmpl a1,a0
 1778 	jeq L2156
 1779 	jra L2158
 1780 L2160:
 1781 	moveb a1@+,a0@+
 1782 L2158:
 1783 	subql #1,d0
 1784 	jpl L2160
 1785 L2156:
 1786 	movel a6@(16),a1
 1787 	movel d4,d0
 1788 	addl d2,d0
 1789 	movel d6,a0
 1790 	addl d0,a0
 1791 	movel d7,d0
 1792 	cmpl a1,a0
 1793 	jeq L2161
 1794 	jra L2163
 1795 L2165:
 1796 	moveb a1@+,a0@+
 1797 L2163:
 1798 	subql #1,d0
 1799 	jpl L2165
 1800 L2161:
 1801 	movel d2,d0
 1802 	addl a6@(-4),d0
 1803 	addl d0,d3
 1804 	subl d0,d5
 1805 	movel d2,d0
 1806 	addl d7,d0
 1807 	addl d0,d4
 1808 	tstl d5
 1809 	jgt L2166
 1810 L2151:
 1811 	lea a2@(0,d3:l),a1
 1812 	movel d6,a0
 1813 	addl d4,a0
 1814 	movel d5,d0
 1815 	cmpl a1,a0
============ Listing of String.s ============	PAGE 34

 1816 	jeq L2167
 1817 	jra L2169
 1818 L2171:
 1819 	moveb a1@+,a0@+
 1820 L2169:
 1821 	subql #1,d0
 1822 	jpl L2171
 1823 	clrb a0@
 1824 L2167:
 1825 	movew d4,d0
 1826 	addw d5,d0
 1827 	movew d0,a3@
 1828 	movel a5@,a0
 1829 	movew a0@(2),d1
 1830 	cmpw a3@,d1
 1831 	jcs L2172
 1832 	movew d0,a0@
 1833 	lea a3@(4),a2
 1834 	movel a5@,a1
 1835 	addqw #4,a1
 1836 	movel a5@,a0
 1837 	clrl d0
 1838 	movew a0@,d0
 1839 	cmpl a2,a1
 1840 	jeq L2173
 1841 	jra L2175
 1842 L2177:
 1843 	moveb a2@+,a1@+
 1844 L2175:
 1845 	subql #1,d0
 1846 	jpl L2177
 1847 	clrb a1@
 1848 L2173:
 1849 	movel a3,sp@-
 1850 	jbsr ___builtin_delete
 1851 	jra L2178
 1852 L2172:
 1853 	movel a5@,sp@-
 1854 	jbsr ___builtin_delete
 1855 	movel a3,a5@
 1856 L2178:
 1857 	movel a6@(-8),d0
 1858 L2140:
 1859 	moveml a6@(-48),#0x3cfc
 1860 	unlk a6
 1861 	rts
 1862 	.even
 1863 .globl _del__6Stringii
 1864 _del__6Stringii:
 1865 	link a6,#0
 1866 	moveml #0x3030,sp@-
 1867 	movel a6@(8),a3
 1868 	movel a6@(12),d3
 1869 	movel a6@(16),d2
 1870 	tstl d3
============ Listing of String.s ============	PAGE 35

 1871 	jle L2180
 1872 	tstl d2
 1873 	jle L2180
 1874 	movel d3,d1
 1875 	addl d2,d1
 1876 	movel a3@,a2
 1877 	clrl d0
 1878 	movew a2@,d0
 1879 	cmpl d1,d0
 1880 	jlt L2180
 1881 	clrl d0
 1882 	movew a2@,d0
 1883 	subl d0,d2
 1884 	negl d2
 1885 	movel d1,d0
 1886 	addql #4,d0
 1887 	movel d0,a1
 1888 	addl a3@,a1
 1889 	movel d3,d0
 1890 	addql #4,d0
 1891 	movel d0,a0
 1892 	addl a3@,a0
 1893 	clrl d0
 1894 	movew a2@,d0
 1895 	subl d1,d0
 1896 	cmpl a1,a0
 1897 	jeq L2186
 1898 	jra L2188
 1899 L2190:
 1900 	moveb a1@+,a0@+
 1901 L2188:
 1902 	subql #1,d0
 1903 	jpl L2190
 1904 	clrb a0@
 1905 L2186:
 1906 	movel a3@,a0
 1907 	movew d2,a0@
 1908 L2180:
 1909 	moveml a6@(-16),#0xc0c
 1910 	unlk a6
 1911 	rts
 1912 	.even
 1913 .globl _del__6StringRC5Regexi
 1914 _del__6StringRC5Regexi:
 1915 	link a6,#-4
 1916 	movel a2,sp@-
 1917 	movel a6@(8),a2
 1918 	movel a6@(16),sp@-
 1919 	pea a6@(-4)
 1920 	movel a2@,a0
 1921 	clrl d0
 1922 	movew a0@,d0
 1923 	movel d0,sp@-
 1924 	movel a2@,d1
 1925 	addql #4,d1
============ Listing of String.s ============	PAGE 36

 1926 	movel d1,sp@-
 1927 	movel a6@(12),sp@-
 1928 	jbsr _search__C5RegexPCciRii
 1929 	movel a6@(-4),sp@-
 1930 	movel d0,sp@-
 1931 	movel a2,sp@-
 1932 	jbsr _del__6Stringii
 1933 	movel a6@(-8),a2
 1934 	unlk a6
 1935 	rts
 1936 	.even
 1937 .globl _del__6StringPCci
 1938 _del__6StringPCci:
 1939 	link a6,#0
 1940 	moveml #0x2020,sp@-
 1941 	movel a6@(8),a2
 1942 	movel a6@(12),d1
 1943 	jne L2196
 1944 	clrl d2
 1945 	jra L2195
 1946 L2196:
 1947 	movel d1,a0
 1948 L2198:
 1949 	tstb a0@+
 1950 	jne L2198
 1951 	movel d1,d0
 1952 	addql #1,d0
 1953 	movel a0,d2
 1954 	subl d0,d2
 1955 L2195:
 1956 	movel d2,sp@-
 1957 	movel d1,sp@-
 1958 	movel a2@,a0
 1959 	clrl d0
 1960 	movew a0@,d0
 1961 	movel d0,sp@-
 1962 	movel a6@(16),sp@-
 1963 	movel a2,sp@-
 1964 	jbsr _search__C6StringiiPCci
 1965 	movel d2,sp@-
 1966 	movel d0,sp@-
 1967 	movel a2,sp@-
 1968 	jbsr _del__6Stringii
 1969 	moveml a6@(-8),#0x404
 1970 	unlk a6
 1971 	rts
 1972 	.even
 1973 .globl _at__6Stringii
 1974 _at__6Stringii:
 1975 	link a6,#-24
 1976 	moveml #0x3030,sp@-
 1977 	movel a1,a2
 1978 	movel a6@(8),a3
 1979 	movel a6@(12),d2
 1980 	movel a6@(16),d3
============ Listing of String.s ============	PAGE 37

 1981 	lea a6@(-8),a1
 1982 	tstl d2
 1983 	jlt L2204
 1984 	movel d2,d0
 1985 	addl d3,d0
 1986 	movel a3@,a0
 1987 	clrl d1
 1988 	movew a0@,d1
 1989 	cmpl d0,d1
 1990 	jcc L2203
 1991 L2204:
 1992 	lea a6@(-16),a0
 1993 	movel #__nilString,a0@
 1994 	clrw a0@(4)
 1995 	clrw a0@(6)
 1996 	jra L2230
 1997 L2203:
 1998 	lea a6@(-24),a0
 1999 	movel a3,a0@
 2000 	movew d2,a0@(4)
 2001 	movew d3,a0@(6)
 2002 L2230:
 2003 	movel a0@,a1@
 2004 	movel a0@,a1@
 2005 	movew a0@(4),a1@(4)
 2006 	movew a0@(6),a1@(6)
 2007 	movel a1,d0
 2008 	lea a6@(-8),a0
 2009 	movel a0@,a2@
 2010 	movel a0@,a2@
 2011 	movew a0@(4),a2@(4)
 2012 	movew a0@(6),a2@(6)
 2013 	movel a2,d0
 2014 	moveml a6@(-40),#0xc0c
 2015 	unlk a6
 2016 	rts
 2017 	.even
 2018 .globl _before__6Stringi
 2019 _before__6Stringi:
 2020 	link a6,#-24
 2021 	moveml #0x2030,sp@-
 2022 	movel a1,a2
 2023 	movel a6@(8),a3
 2024 	movel a6@(12),d2
 2025 	clrl d1
 2026 	lea a6@(-8),a1
 2027 	movel a3@,a0
 2028 	clrl d0
 2029 	movew a0@,d0
 2030 	cmpl d2,d0
 2031 	jcc L2233
 2032 	lea a6@(-16),a0
 2033 	movel #__nilString,a0@
 2034 	clrw a0@(4)
 2035 	clrw a0@(6)
============ Listing of String.s ============	PAGE 38

 2036 	jra L2260
 2037 L2233:
 2038 	lea a6@(-24),a0
 2039 	movel a3,a0@
 2040 	movew d1,a0@(4)
 2041 	movew d2,a0@(6)
 2042 L2260:
 2043 	movel a0@,a1@
 2044 	movel a0@,a1@
 2045 	movew a0@(4),a1@(4)
 2046 	movew a0@(6),a1@(6)
 2047 	movel a1,d0
 2048 	lea a6@(-8),a0
 2049 	movel a0@,a2@
 2050 	movel a0@,a2@
 2051 	movew a0@(4),a2@(4)
 2052 	movew a0@(6),a2@(6)
 2053 	movel a2,d0
 2054 	moveml a6@(-36),#0xc04
 2055 	unlk a6
 2056 	rts
 2057 	.even
 2058 .globl _through__6Stringi
 2059 _through__6Stringi:
 2060 	link a6,#-24
 2061 	moveml #0x2030,sp@-
 2062 	movel a1,a2
 2063 	movel a6@(8),a3
 2064 	clrl d2
 2065 	movel a6@(12),d1
 2066 	addql #1,d1
 2067 	lea a6@(-8),a1
 2068 	movel a3@,a0
 2069 	clrl d0
 2070 	movew a0@,d0
 2071 	cmpl d1,d0
 2072 	jcc L2263
 2073 	lea a6@(-16),a0
 2074 	movel #__nilString,a0@
 2075 	clrw a0@(4)
 2076 	clrw a0@(6)
 2077 	jra L2290
 2078 L2263:
 2079 	lea a6@(-24),a0
 2080 	movel a3,a0@
 2081 	movew d2,a0@(4)
 2082 	movew d1,a0@(6)
 2083 L2290:
 2084 	movel a0@,a1@
 2085 	movel a0@,a1@
 2086 	movew a0@(4),a1@(4)
 2087 	movew a0@(6),a1@(6)
 2088 	movel a1,d0
 2089 	lea a6@(-8),a0
 2090 	movel a0@,a2@
============ Listing of String.s ============	PAGE 39

 2091 	movel a0@,a2@
 2092 	movew a0@(4),a2@(4)
 2093 	movew a0@(6),a2@(6)
 2094 	movel a2,d0
 2095 	moveml a6@(-36),#0xc04
 2096 	unlk a6
 2097 	rts
 2098 	.even
 2099 .globl _after__6Stringi
 2100 _after__6Stringi:
 2101 	link a6,#-24
 2102 	moveml #0x3030,sp@-
 2103 	movel a1,a2
 2104 	movel a6@(8),a3
 2105 	movel a6@(12),d0
 2106 	movel d0,d2
 2107 	addql #1,d2
 2108 	movel a3@,a0
 2109 	clrl d1
 2110 	movew a0@,d1
 2111 	subql #1,d1
 2112 	movel d1,d3
 2113 	subl d0,d3
 2114 	lea a6@(-8),a1
 2115 	tstl d2
 2116 	jlt L2295
 2117 	movel d2,d1
 2118 	addl d3,d1
 2119 	clrl d0
 2120 	movew a0@,d0
 2121 	cmpl d1,d0
 2122 	jcc L2294
 2123 L2295:
 2124 	lea a6@(-16),a0
 2125 	movel #__nilString,a0@
 2126 	clrw a0@(4)
 2127 	clrw a0@(6)
 2128 	jra L2321
 2129 L2294:
 2130 	lea a6@(-24),a0
 2131 	movel a3,a0@
 2132 	movew d2,a0@(4)
 2133 	movew d3,a0@(6)
 2134 L2321:
 2135 	movel a0@,a1@
 2136 	movel a0@,a1@
 2137 	movew a0@(4),a1@(4)
 2138 	movew a0@(6),a1@(6)
 2139 	movel a1,d0
 2140 	lea a6@(-8),a0
 2141 	movel a0@,a2@
 2142 	movel a0@,a2@
 2143 	movew a0@(4),a2@(4)
 2144 	movew a0@(6),a2@(6)
 2145 	movel a2,d0
============ Listing of String.s ============	PAGE 40

 2146 	moveml a6@(-40),#0xc0c
 2147 	unlk a6
 2148 	rts
 2149 	.even
 2150 .globl _from__6Stringi
 2151 _from__6Stringi:
 2152 	link a6,#-24
 2153 	moveml #0x3030,sp@-
 2154 	movel a1,a2
 2155 	movel a6@(8),a3
 2156 	movel a6@(12),d2
 2157 	movel a3@,a0
 2158 	clrl d0
 2159 	movew a0@,d0
 2160 	movel d0,d3
 2161 	subl d2,d3
 2162 	lea a6@(-8),a1
 2163 	tstl d2
 2164 	jlt L2326
 2165 	movel d2,d1
 2166 	addl d3,d1
 2167 	clrl d0
 2168 	movew a0@,d0
 2169 	cmpl d1,d0
 2170 	jcc L2325
 2171 L2326:
 2172 	lea a6@(-16),a0
 2173 	movel #__nilString,a0@
 2174 	clrw a0@(4)
 2175 	clrw a0@(6)
 2176 	jra L2352
 2177 L2325:
 2178 	lea a6@(-24),a0
 2179 	movel a3,a0@
 2180 	movew d2,a0@(4)
 2181 	movew d3,a0@(6)
 2182 L2352:
 2183 	movel a0@,a1@
 2184 	movel a0@,a1@
 2185 	movew a0@(4),a1@(4)
 2186 	movew a0@(6),a1@(6)
 2187 	movel a1,d0
 2188 	lea a6@(-8),a0
 2189 	movel a0@,a2@
 2190 	movel a0@,a2@
 2191 	movew a0@(4),a2@(4)
 2192 	movew a0@(6),a2@(6)
 2193 	movel a2,d0
 2194 	moveml a6@(-40),#0xc0c
 2195 	unlk a6
 2196 	rts
 2197 	.even
 2198 .globl _at__6StringRC6Stringi
 2199 _at__6StringRC6Stringi:
 2200 	link a6,#-24
============ Listing of String.s ============	PAGE 41

 2201 	moveml #0x383c,sp@-
 2202 	movel a1,a3
 2203 	movel a6@(8),a5
 2204 	movel a6@(12),a0
 2205 	movel a0@,a2
 2206 	clrl d0
 2207 	movew a2@,d0
 2208 	movel d0,sp@-
 2209 	movel a0@,d4
 2210 	addql #4,d4
 2211 	movel d4,sp@-
 2212 	movel a5@,a4
 2213 	clrl d0
 2214 	movew a4@,d0
 2215 	movel d0,sp@-
 2216 	movel a6@(16),sp@-
 2217 	movel a5,sp@-
 2218 	jbsr _search__C6StringiiPCci
 2219 	movel d0,d2
 2220 	clrl d0
 2221 	movew a2@,d0
 2222 	movel d0,d3
 2223 	lea a6@(-8),a1
 2224 	tstl d2
 2225 	jlt L2360
 2226 	movel d2,d1
 2227 	addl d3,d1
 2228 	clrl d0
 2229 	movew a4@,d0
 2230 	cmpl d1,d0
 2231 	jcc L2359
 2232 L2360:
 2233 	lea a6@(-16),a0
 2234 	movel #__nilString,a0@
 2235 	clrw a0@(4)
 2236 	clrw a0@(6)
 2237 	jra L2386
 2238 L2359:
 2239 	lea a6@(-24),a0
 2240 	movel a5,a0@
 2241 	movew d2,a0@(4)
 2242 	movew d3,a0@(6)
 2243 L2386:
 2244 	movel a0@,a1@
 2245 	movel a0@,a1@
 2246 	movew a0@(4),a1@(4)
 2247 	movew a0@(6),a1@(6)
 2248 	movel a1,d0
 2249 	lea a6@(-8),a0
 2250 	movel a0@,a3@
 2251 	movel a0@,a3@
 2252 	movew a0@(4),a3@(4)
 2253 	movew a0@(6),a3@(6)
 2254 	movel a3,d0
 2255 	moveml a6@(-52),#0x3c1c
============ Listing of String.s ============	PAGE 42

 2256 	unlk a6
 2257 	rts
 2258 	.even
 2259 .globl _at__6StringRC9SubStringi
 2260 _at__6StringRC9SubStringi:
 2261 	link a6,#-24
 2262 	moveml #0x303c,sp@-
 2263 	movel a1,a3
 2264 	movel a6@(8),a5
 2265 	movel a6@(12),a2
 2266 	clrl d0
 2267 	movew a2@(6),d0
 2268 	movel d0,sp@-
 2269 	movel a2@,a0
 2270 	clrl d0
 2271 	movew a2@(4),d0
 2272 	addql #4,d0
 2273 	addl a0@,d0
 2274 	movel d0,sp@-
 2275 	movel a5@,a4
 2276 	clrl d0
 2277 	movew a4@,d0
 2278 	movel d0,sp@-
 2279 	movel a6@(16),sp@-
 2280 	movel a5,sp@-
 2281 	jbsr _search__C6StringiiPCci
 2282 	movel d0,d2
 2283 	clrl d0
 2284 	movew a2@(6),d0
 2285 	movel d0,d3
 2286 	lea a6@(-8),a1
 2287 	tstl d2
 2288 	jlt L2394
 2289 	movel d2,d1
 2290 	addl d3,d1
 2291 	clrl d0
 2292 	movew a4@,d0
 2293 	cmpl d1,d0
 2294 	jcc L2393
 2295 L2394:
 2296 	lea a6@(-16),a0
 2297 	movel #__nilString,a0@
 2298 	clrw a0@(4)
 2299 	clrw a0@(6)
 2300 	jra L2420
 2301 L2393:
 2302 	lea a6@(-24),a0
 2303 	movel a5,a0@
 2304 	movew d2,a0@(4)
 2305 	movew d3,a0@(6)
 2306 L2420:
 2307 	movel a0@,a1@
 2308 	movel a0@,a1@
 2309 	movew a0@(4),a1@(4)
 2310 	movew a0@(6),a1@(6)
============ Listing of String.s ============	PAGE 43

 2311 	movel a1,d0
 2312 	lea a6@(-8),a0
 2313 	movel a0@,a3@
 2314 	movel a0@,a3@
 2315 	movew a0@(4),a3@(4)
 2316 	movew a0@(6),a3@(6)
 2317 	movel a3,d0
 2318 	moveml a6@(-48),#0x3c0c
 2319 	unlk a6
 2320 	rts
 2321 	.even
 2322 .globl _at__6StringRC5Regexi
 2323 _at__6StringRC5Regexi:
 2324 	link a6,#-28
 2325 	moveml #0x3838,sp@-
 2326 	movel a1,a2
 2327 	movel a6@(8),a4
 2328 	movel a6@(16),sp@-
 2329 	pea a6@(-4)
 2330 	movel a4@,a3
 2331 	clrl d0
 2332 	movew a3@,d0
 2333 	movel d0,sp@-
 2334 	movel a4@,d4
 2335 	addql #4,d4
 2336 	movel d4,sp@-
 2337 	movel a6@(12),sp@-
 2338 	jbsr _search__C5RegexPCciRii
 2339 	movel d0,d2
 2340 	movel a6@(-4),d3
 2341 	lea a6@(-12),a1
 2342 	tstl d2
 2343 	jlt L2426
 2344 	movel d2,d1
 2345 	addl d3,d1
 2346 	clrl d0
 2347 	movew a3@,d0
 2348 	cmpl d1,d0
 2349 	jcc L2425
 2350 L2426:
 2351 	lea a6@(-20),a0
 2352 	movel #__nilString,a0@
 2353 	clrw a0@(4)
 2354 	clrw a0@(6)
 2355 	jra L2452
 2356 L2425:
 2357 	lea a6@(-28),a0
 2358 	movel a4,a0@
 2359 	movew d2,a0@(4)
 2360 	movew d3,a0@(6)
 2361 L2452:
 2362 	movel a0@,a1@
 2363 	movel a0@,a1@
 2364 	movew a0@(4),a1@(4)
 2365 	movew a0@(6),a1@(6)
============ Listing of String.s ============	PAGE 44

 2366 	movel a1,d0
 2367 	lea a6@(-12),a0
 2368 	movel a0@,a2@
 2369 	movel a0@,a2@
 2370 	movew a0@(4),a2@(4)
 2371 	movew a0@(6),a2@(6)
 2372 	movel a2,d0
 2373 	moveml a6@(-52),#0x1c1c
 2374 	unlk a6
 2375 	rts
 2376 	.even
 2377 .globl _at__6StringPCci
 2378 _at__6StringPCci:
 2379 	link a6,#-24
 2380 	moveml #0x3038,sp@-
 2381 	movel a1,a3
 2382 	movel a6@(8),a4
 2383 	movel a6@(12),d1
 2384 	jne L2455
 2385 	clrl d3
 2386 	jra L2454
 2387 L2455:
 2388 	movel d1,a0
 2389 L2457:
 2390 	tstb a0@+
 2391 	jne L2457
 2392 	movel d1,d0
 2393 	addql #1,d0
 2394 	movel a0,d3
 2395 	subl d0,d3
 2396 L2454:
 2397 	movel d3,sp@-
 2398 	movel d1,sp@-
 2399 	movel a4@,a2
 2400 	clrl d0
 2401 	movew a2@,d0
 2402 	movel d0,sp@-
 2403 	movel a6@(16),sp@-
 2404 	movel a4,sp@-
 2405 	jbsr _search__C6StringiiPCci
 2406 	movel d0,d2
 2407 	lea a6@(-8),a1
 2408 	jlt L2462
 2409 	movel d2,d1
 2410 	addl d3,d1
 2411 	clrl d0
 2412 	movew a2@,d0
 2413 	cmpl d1,d0
 2414 	jcc L2461
 2415 L2462:
 2416 	lea a6@(-16),a0
 2417 	movel #__nilString,a0@
 2418 	clrw a0@(4)
 2419 	clrw a0@(6)
 2420 	jra L2488
============ Listing of String.s ============	PAGE 45

 2421 L2461:
 2422 	lea a6@(-24),a0
 2423 	movel a4,a0@
 2424 	movew d2,a0@(4)
 2425 	movew d3,a0@(6)
 2426 L2488:
 2427 	movel a0@,a1@
 2428 	movel a0@,a1@
 2429 	movew a0@(4),a1@(4)
 2430 	movew a0@(6),a1@(6)
 2431 	movel a1,d0
 2432 	lea a6@(-8),a0
 2433 	movel a0@,a3@
 2434 	movel a0@,a3@
 2435 	movew a0@(4),a3@(4)
 2436 	movew a0@(6),a3@(6)
 2437 	movel a3,d0
 2438 	moveml a6@(-44),#0x1c0c
 2439 	unlk a6
 2440 	rts
 2441 	.even
 2442 .globl _at__6Stringci
 2443 _at__6Stringci:
 2444 	link a6,#-24
 2445 	moveml #0x3838,sp@-
 2446 	movel a1,a2
 2447 	movel a6@(8),a4
 2448 	moveb a6@(15),d4
 2449 	extbl d4
 2450 	movel d4,sp@-
 2451 	movel a4@,a3
 2452 	clrl d0
 2453 	movew a3@,d0
 2454 	movel d0,sp@-
 2455 	movel a6@(16),sp@-
 2456 	movel a4,sp@-
 2457 	jbsr _search__C6Stringiic
 2458 	movel d0,d2
 2459 	moveq #1,d3
 2460 	lea a6@(-8),a1
 2461 	tstl d2
 2462 	jlt L2493
 2463 	movel d2,d1
 2464 	addl d3,d1
 2465 	clrl d0
 2466 	movew a3@,d0
 2467 	cmpl d1,d0
 2468 	jcc L2492
 2469 L2493:
 2470 	lea a6@(-16),a0
 2471 	movel #__nilString,a0@
 2472 	clrw a0@(4)
 2473 	clrw a0@(6)
 2474 	jra L2519
 2475 L2492:
============ Listing of String.s ============	PAGE 46

 2476 	lea a6@(-24),a0
 2477 	movel a4,a0@
 2478 	movew d2,a0@(4)
 2479 	movew d3,a0@(6)
 2480 L2519:
 2481 	movel a0@,a1@
 2482 	movel a0@,a1@
 2483 	movew a0@(4),a1@(4)
 2484 	movew a0@(6),a1@(6)
 2485 	movel a1,d0
 2486 	lea a6@(-8),a0
 2487 	movel a0@,a2@
 2488 	movel a0@,a2@
 2489 	movew a0@(4),a2@(4)
 2490 	movew a0@(6),a2@(6)
 2491 	movel a2,d0
 2492 	moveml a6@(-48),#0x1c1c
 2493 	unlk a6
 2494 	rts
 2495 	.even
 2496 .globl _before__6StringRC6Stringi
 2497 _before__6StringRC6Stringi:
 2498 	link a6,#-24
 2499 	moveml #0x3038,sp@-
 2500 	movel a1,a3
 2501 	movel a6@(8),a4
 2502 	movel a6@(12),a0
 2503 	movel a0@,a1
 2504 	clrl d0
 2505 	movew a1@,d0
 2506 	movel d0,sp@-
 2507 	movel a0@,d3
 2508 	addql #4,d3
 2509 	movel d3,sp@-
 2510 	movel a4@,a2
 2511 	clrl d0
 2512 	movew a2@,d0
 2513 	movel d0,sp@-
 2514 	movel a6@(16),sp@-
 2515 	movel a4,sp@-
 2516 	jbsr _search__C6StringiiPCci
 2517 	movel d0,d1
 2518 	clrl d2
 2519 	lea a6@(-8),a1
 2520 	clrl d0
 2521 	movew a2@,d0
 2522 	cmpl d1,d0
 2523 	jcc L2525
 2524 	lea a6@(-16),a0
 2525 	movel #__nilString,a0@
 2526 	clrw a0@(4)
 2527 	clrw a0@(6)
 2528 	jra L2552
 2529 L2525:
 2530 	lea a6@(-24),a0
============ Listing of String.s ============	PAGE 47

 2531 	movel a4,a0@
 2532 	movew d2,a0@(4)
 2533 	movew d1,a0@(6)
 2534 L2552:
 2535 	movel a0@,a1@
 2536 	movel a0@,a1@
 2537 	movew a0@(4),a1@(4)
 2538 	movew a0@(6),a1@(6)
 2539 	movel a1,d0
 2540 	lea a6@(-8),a0
 2541 	movel a0@,a3@
 2542 	movel a0@,a3@
 2543 	movew a0@(4),a3@(4)
 2544 	movew a0@(6),a3@(6)
 2545 	movel a3,d0
 2546 	moveml a6@(-44),#0x1c0c
 2547 	unlk a6
 2548 	rts
 2549 	.even
 2550 .globl _before__6StringRC9SubStringi
 2551 _before__6StringRC9SubStringi:
 2552 	link a6,#-24
 2553 	moveml #0x2038,sp@-
 2554 	movel a1,a3
 2555 	movel a6@(8),a4
 2556 	movel a6@(12),a0
 2557 	clrl d0
 2558 	movew a0@(6),d0
 2559 	movel d0,sp@-
 2560 	movel a0@,a1
 2561 	clrl d0
 2562 	movew a0@(4),d0
 2563 	addql #4,d0
 2564 	addl a1@,d0
 2565 	movel d0,sp@-
 2566 	movel a4@,a2
 2567 	clrl d0
 2568 	movew a2@,d0
 2569 	movel d0,sp@-
 2570 	movel a6@(16),sp@-
 2571 	movel a4,sp@-
 2572 	jbsr _search__C6StringiiPCci
 2573 	movel d0,d1
 2574 	clrl d2
 2575 	lea a6@(-8),a1
 2576 	clrl d0
 2577 	movew a2@,d0
 2578 	cmpl d1,d0
 2579 	jcc L2558
 2580 	lea a6@(-16),a0
 2581 	movel #__nilString,a0@
 2582 	clrw a0@(4)
 2583 	clrw a0@(6)
 2584 	jra L2585
 2585 L2558:
============ Listing of String.s ============	PAGE 48

 2586 	lea a6@(-24),a0
 2587 	movel a4,a0@
 2588 	movew d2,a0@(4)
 2589 	movew d1,a0@(6)
 2590 L2585:
 2591 	movel a0@,a1@
 2592 	movel a0@,a1@
 2593 	movew a0@(4),a1@(4)
 2594 	movew a0@(6),a1@(6)
 2595 	movel a1,d0
 2596 	lea a6@(-8),a0
 2597 	movel a0@,a3@
 2598 	movel a0@,a3@
 2599 	movew a0@(4),a3@(4)
 2600 	movew a0@(6),a3@(6)
 2601 	movel a3,d0
 2602 	moveml a6@(-40),#0x1c04
 2603 	unlk a6
 2604 	rts
 2605 	.even
 2606 .globl _before__6StringRC5Regexi
 2607 _before__6StringRC5Regexi:
 2608 	link a6,#-28
 2609 	moveml #0x3038,sp@-
 2610 	movel a1,a3
 2611 	movel a6@(8),a4
 2612 	movel a6@(16),sp@-
 2613 	pea a6@(-4)
 2614 	movel a4@,a2
 2615 	clrl d0
 2616 	movew a2@,d0
 2617 	movel d0,sp@-
 2618 	movel a4@,d3
 2619 	addql #4,d3
 2620 	movel d3,sp@-
 2621 	movel a6@(12),sp@-
 2622 	jbsr _search__C5RegexPCciRii
 2623 	movel d0,d1
 2624 	clrl d2
 2625 	lea a6@(-12),a1
 2626 	clrl d0
 2627 	movew a2@,d0
 2628 	cmpl d1,d0
 2629 	jcc L2590
 2630 	lea a6@(-20),a0
 2631 	movel #__nilString,a0@
 2632 	clrw a0@(4)
 2633 	clrw a0@(6)
 2634 	jra L2617
 2635 L2590:
 2636 	lea a6@(-28),a0
 2637 	movel a4,a0@
 2638 	movew d2,a0@(4)
 2639 	movew d1,a0@(6)
 2640 L2617:
============ Listing of String.s ============	PAGE 49

 2641 	movel a0@,a1@
 2642 	movel a0@,a1@
 2643 	movew a0@(4),a1@(4)
 2644 	movew a0@(6),a1@(6)
 2645 	movel a1,d0
 2646 	lea a6@(-12),a0
 2647 	movel a0@,a3@
 2648 	movel a0@,a3@
 2649 	movew a0@(4),a3@(4)
 2650 	movew a0@(6),a3@(6)
 2651 	movel a3,d0
 2652 	moveml a6@(-48),#0x1c0c
 2653 	unlk a6
 2654 	rts
 2655 	.even
 2656 .globl _before__6Stringci
 2657 _before__6Stringci:
 2658 	link a6,#-24
 2659 	moveml #0x3038,sp@-
 2660 	movel a1,a3
 2661 	movel a6@(8),a4
 2662 	moveb a6@(15),d3
 2663 	extbl d3
 2664 	movel d3,sp@-
 2665 	movel a4@,a2
 2666 	clrl d0
 2667 	movew a2@,d0
 2668 	movel d0,sp@-
 2669 	movel a6@(16),sp@-
 2670 	movel a4,sp@-
 2671 	jbsr _search__C6Stringiic
 2672 	movel d0,d1
 2673 	clrl d2
 2674 	lea a6@(-8),a1
 2675 	clrl d0
 2676 	movew a2@,d0
 2677 	cmpl d1,d0
 2678 	jcc L2621
 2679 	lea a6@(-16),a0
 2680 	movel #__nilString,a0@
 2681 	clrw a0@(4)
 2682 	clrw a0@(6)
 2683 	jra L2648
 2684 L2621:
 2685 	lea a6@(-24),a0
 2686 	movel a4,a0@
 2687 	movew d2,a0@(4)
 2688 	movew d1,a0@(6)
 2689 L2648:
 2690 	movel a0@,a1@
 2691 	movel a0@,a1@
 2692 	movew a0@(4),a1@(4)
 2693 	movew a0@(6),a1@(6)
 2694 	movel a1,d0
 2695 	lea a6@(-8),a0
============ Listing of String.s ============	PAGE 50

 2696 	movel a0@,a3@
 2697 	movel a0@,a3@
 2698 	movew a0@(4),a3@(4)
 2699 	movew a0@(6),a3@(6)
 2700 	movel a3,d0
 2701 	moveml a6@(-44),#0x1c0c
 2702 	unlk a6
 2703 	rts
 2704 	.even
 2705 .globl _before__6StringPCci
 2706 _before__6StringPCci:
 2707 	link a6,#-24
 2708 	moveml #0x2038,sp@-
 2709 	movel a1,a3
 2710 	movel a6@(8),a4
 2711 	movel a6@(12),d1
 2712 	jne L2651
 2713 	clrl d0
 2714 	jra L2650
 2715 L2651:
 2716 	movel d1,a0
 2717 L2653:
 2718 	tstb a0@+
 2719 	jne L2653
 2720 	movel d1,d0
 2721 	addql #1,d0
 2722 	subl a0,d0
 2723 	negl d0
 2724 L2650:
 2725 	movel d0,sp@-
 2726 	movel d1,sp@-
 2727 	movel a4@,a2
 2728 	clrl d0
 2729 	movew a2@,d0
 2730 	movel d0,sp@-
 2731 	movel a6@(16),sp@-
 2732 	movel a4,sp@-
 2733 	jbsr _search__C6StringiiPCci
 2734 	movel d0,d1
 2735 	clrl d2
 2736 	lea a6@(-8),a1
 2737 	clrl d0
 2738 	movew a2@,d0
 2739 	cmpl d1,d0
 2740 	jcc L2657
 2741 	lea a6@(-16),a0
 2742 	movel #__nilString,a0@
 2743 	clrw a0@(4)
 2744 	clrw a0@(6)
 2745 	jra L2684
 2746 L2657:
 2747 	lea a6@(-24),a0
 2748 	movel a4,a0@
 2749 	movew d2,a0@(4)
 2750 	movew d1,a0@(6)
============ Listing of String.s ============	PAGE 51

 2751 L2684:
 2752 	movel a0@,a1@
 2753 	movel a0@,a1@
 2754 	movew a0@(4),a1@(4)
 2755 	movew a0@(6),a1@(6)
 2756 	movel a1,d0
 2757 	lea a6@(-8),a0
 2758 	movel a0@,a3@
 2759 	movel a0@,a3@
 2760 	movew a0@(4),a3@(4)
 2761 	movew a0@(6),a3@(6)
 2762 	movel a3,d0
 2763 	moveml a6@(-40),#0x1c04
 2764 	unlk a6
 2765 	rts
 2766 	.even
 2767 .globl _through__6StringRC6Stringi
 2768 _through__6StringRC6Stringi:
 2769 	link a6,#-24
 2770 	moveml #0x3038,sp@-
 2771 	movel a1,a2
 2772 	movel a6@(8),a4
 2773 	movel a6@(12),a0
 2774 	movel a0@,a3
 2775 	clrl d0
 2776 	movew a3@,d0
 2777 	movel d0,sp@-
 2778 	movel a0@,d3
 2779 	addql #4,d3
 2780 	movel d3,sp@-
 2781 	movel a4@,a0
 2782 	clrl d0
 2783 	movew a0@,d0
 2784 	movel d0,sp@-
 2785 	movel a6@(16),sp@-
 2786 	movel a4,sp@-
 2787 	jbsr _search__C6StringiiPCci
 2788 	movel d0,d1
 2789 	jlt L2689
 2790 	clrl d0
 2791 	movew a3@,d0
 2792 	addl d0,d1
 2793 L2689:
 2794 	clrl d2
 2795 	lea a6@(-8),a1
 2796 	movel a4@,a0
 2797 	clrl d0
 2798 	movew a0@,d0
 2799 	cmpl d1,d0
 2800 	jcc L2692
 2801 	lea a6@(-16),a0
 2802 	movel #__nilString,a0@
 2803 	clrw a0@(4)
 2804 	clrw a0@(6)
 2805 	jra L2719
============ Listing of String.s ============	PAGE 52

 2806 L2692:
 2807 	lea a6@(-24),a0
 2808 	movel a4,a0@
 2809 	movew d2,a0@(4)
 2810 	movew d1,a0@(6)
 2811 L2719:
 2812 	movel a0@,a1@
 2813 	movel a0@,a1@
 2814 	movew a0@(4),a1@(4)
 2815 	movew a0@(6),a1@(6)
 2816 	movel a1,d0
 2817 	lea a6@(-8),a0
 2818 	movel a0@,a2@
 2819 	movel a0@,a2@
 2820 	movew a0@(4),a2@(4)
 2821 	movew a0@(6),a2@(6)
 2822 	movel a2,d0
 2823 	moveml a6@(-44),#0x1c0c
 2824 	unlk a6
 2825 	rts
 2826 	.even
 2827 .globl _through__6StringRC9SubStringi
 2828 _through__6StringRC9SubStringi:
 2829 	link a6,#-24
 2830 	moveml #0x2038,sp@-
 2831 	movel a1,a3
 2832 	movel a6@(8),a4
 2833 	movel a6@(12),a2
 2834 	clrl d0
 2835 	movew a2@(6),d0
 2836 	movel d0,sp@-
 2837 	movel a2@,a0
 2838 	clrl d0
 2839 	movew a2@(4),d0
 2840 	addql #4,d0
 2841 	addl a0@,d0
 2842 	movel d0,sp@-
 2843 	movel a4@,a0
 2844 	clrl d0
 2845 	movew a0@,d0
 2846 	movel d0,sp@-
 2847 	movel a6@(16),sp@-
 2848 	movel a4,sp@-
 2849 	jbsr _search__C6StringiiPCci
 2850 	movel d0,d1
 2851 	jlt L2724
 2852 	clrl d0
 2853 	movew a2@(6),d0
 2854 	addl d0,d1
 2855 L2724:
 2856 	clrl d2
 2857 	lea a6@(-8),a1
 2858 	movel a4@,a0
 2859 	clrl d0
 2860 	movew a0@,d0
============ Listing of String.s ============	PAGE 53

 2861 	cmpl d1,d0
 2862 	jcc L2727
 2863 	lea a6@(-16),a0
 2864 	movel #__nilString,a0@
 2865 	clrw a0@(4)
 2866 	clrw a0@(6)
 2867 	jra L2754
 2868 L2727:
 2869 	lea a6@(-24),a0
 2870 	movel a4,a0@
 2871 	movew d2,a0@(4)
 2872 	movew d1,a0@(6)
 2873 L2754:
 2874 	movel a0@,a1@
 2875 	movel a0@,a1@
 2876 	movew a0@(4),a1@(4)
 2877 	movew a0@(6),a1@(6)
 2878 	movel a1,d0
 2879 	lea a6@(-8),a0
 2880 	movel a0@,a3@
 2881 	movel a0@,a3@
 2882 	movew a0@(4),a3@(4)
 2883 	movew a0@(6),a3@(6)
 2884 	movel a3,d0
 2885 	moveml a6@(-40),#0x1c04
 2886 	unlk a6
 2887 	rts
 2888 	.even
 2889 .globl _through__6StringRC5Regexi
 2890 _through__6StringRC5Regexi:
 2891 	link a6,#-28
 2892 	moveml #0x3030,sp@-
 2893 	movel a1,a2
 2894 	movel a6@(8),a3
 2895 	movel a6@(16),sp@-
 2896 	pea a6@(-4)
 2897 	movel a3@,a0
 2898 	clrl d0
 2899 	movew a0@,d0
 2900 	movel d0,sp@-
 2901 	movel a3@,d3
 2902 	addql #4,d3
 2903 	movel d3,sp@-
 2904 	movel a6@(12),sp@-
 2905 	jbsr _search__C5RegexPCciRii
 2906 	movel d0,d1
 2907 	jlt L2758
 2908 	addl a6@(-4),d1
 2909 L2758:
 2910 	clrl d2
 2911 	lea a6@(-12),a1
 2912 	movel a3@,a0
 2913 	clrl d0
 2914 	movew a0@,d0
 2915 	cmpl d1,d0
============ Listing of String.s ============	PAGE 54

 2916 	jcc L2760
 2917 	lea a6@(-20),a0
 2918 	movel #__nilString,a0@
 2919 	clrw a0@(4)
 2920 	clrw a0@(6)
 2921 	jra L2787
 2922 L2760:
 2923 	lea a6@(-28),a0
 2924 	movel a3,a0@
 2925 	movew d2,a0@(4)
 2926 	movew d1,a0@(6)
 2927 L2787:
 2928 	movel a0@,a1@
 2929 	movel a0@,a1@
 2930 	movew a0@(4),a1@(4)
 2931 	movew a0@(6),a1@(6)
 2932 	movel a1,d0
 2933 	lea a6@(-12),a0
 2934 	movel a0@,a2@
 2935 	movel a0@,a2@
 2936 	movew a0@(4),a2@(4)
 2937 	movew a0@(6),a2@(6)
 2938 	movel a2,d0
 2939 	moveml a6@(-44),#0xc0c
 2940 	unlk a6
 2941 	rts
 2942 	.even
 2943 .globl _through__6Stringci
 2944 _through__6Stringci:
 2945 	link a6,#-24
 2946 	moveml #0x3030,sp@-
 2947 	movel a1,a2
 2948 	movel a6@(8),a3
 2949 	moveb a6@(15),d3
 2950 	extbl d3
 2951 	movel d3,sp@-
 2952 	movel a3@,a0
 2953 	clrl d0
 2954 	movew a0@,d0
 2955 	movel d0,sp@-
 2956 	movel a6@(16),sp@-
 2957 	movel a3,sp@-
 2958 	jbsr _search__C6Stringiic
 2959 	movel d0,d1
 2960 	jlt L2790
 2961 	addql #1,d1
 2962 L2790:
 2963 	clrl d2
 2964 	lea a6@(-8),a1
 2965 	movel a3@,a0
 2966 	clrl d0
 2967 	movew a0@,d0
 2968 	cmpl d1,d0
 2969 	jcc L2792
 2970 	lea a6@(-16),a0
============ Listing of String.s ============	PAGE 55

 2971 	movel #__nilString,a0@
 2972 	clrw a0@(4)
 2973 	clrw a0@(6)
 2974 	jra L2819
 2975 L2792:
 2976 	lea a6@(-24),a0
 2977 	movel a3,a0@
 2978 	movew d2,a0@(4)
 2979 	movew d1,a0@(6)
 2980 L2819:
 2981 	movel a0@,a1@
 2982 	movel a0@,a1@
 2983 	movew a0@(4),a1@(4)
 2984 	movew a0@(6),a1@(6)
 2985 	movel a1,d0
 2986 	lea a6@(-8),a0
 2987 	movel a0@,a2@
 2988 	movel a0@,a2@
 2989 	movew a0@(4),a2@(4)
 2990 	movew a0@(6),a2@(6)
 2991 	movel a2,d0
 2992 	moveml a6@(-40),#0xc0c
 2993 	unlk a6
 2994 	rts
 2995 	.even
 2996 .globl _through__6StringPCci
 2997 _through__6StringPCci:
 2998 	link a6,#-24
 2999 	moveml #0x2030,sp@-
 3000 	movel a1,a2
 3001 	movel a6@(8),a3
 3002 	movel a6@(12),d1
 3003 	jne L2822
 3004 	clrl d2
 3005 	jra L2821
 3006 L2822:
 3007 	movel d1,a0
 3008 L2824:
 3009 	tstb a0@+
 3010 	jne L2824
 3011 	movel d1,d0
 3012 	addql #1,d0
 3013 	movel a0,d2
 3014 	subl d0,d2
 3015 L2821:
 3016 	movel d2,sp@-
 3017 	movel d1,sp@-
 3018 	movel a3@,a0
 3019 	clrl d0
 3020 	movew a0@,d0
 3021 	movel d0,sp@-
 3022 	movel a6@(16),sp@-
 3023 	movel a3,sp@-
 3024 	jbsr _search__C6StringiiPCci
 3025 	movel d0,d1
============ Listing of String.s ============	PAGE 56

 3026 	jlt L2827
 3027 	addl d2,d1
 3028 L2827:
 3029 	clrl d2
 3030 	lea a6@(-8),a1
 3031 	movel a3@,a0
 3032 	clrl d0
 3033 	movew a0@,d0
 3034 	cmpl d1,d0
 3035 	jcc L2829
 3036 	lea a6@(-16),a0
 3037 	movel #__nilString,a0@
 3038 	clrw a0@(4)
 3039 	clrw a0@(6)
 3040 	jra L2856
 3041 L2829:
 3042 	lea a6@(-24),a0
 3043 	movel a3,a0@
 3044 	movew d2,a0@(4)
 3045 	movew d1,a0@(6)
 3046 L2856:
 3047 	movel a0@,a1@
 3048 	movel a0@,a1@
 3049 	movew a0@(4),a1@(4)
 3050 	movew a0@(6),a1@(6)
 3051 	movel a1,d0
 3052 	lea a6@(-8),a0
 3053 	movel a0@,a2@
 3054 	movel a0@,a2@
 3055 	movew a0@(4),a2@(4)
 3056 	movew a0@(6),a2@(6)
 3057 	movel a2,d0
 3058 	moveml a6@(-36),#0xc04
 3059 	unlk a6
 3060 	rts
 3061 	.even
 3062 .globl _after__6StringRC6Stringi
 3063 _after__6StringRC6Stringi:
 3064 	link a6,#-24
 3065 	moveml #0x3838,sp@-
 3066 	movel a1,a2
 3067 	movel a6@(8),a4
 3068 	movel a6@(12),a0
 3069 	movel a0@,a3
 3070 	clrl d0
 3071 	movew a3@,d0
 3072 	movel d0,sp@-
 3073 	movel a0@,d4
 3074 	addql #4,d4
 3075 	movel d4,sp@-
 3076 	movel a4@,a0
 3077 	clrl d0
 3078 	movew a0@,d0
 3079 	movel d0,sp@-
 3080 	movel a6@(16),sp@-
============ Listing of String.s ============	PAGE 57

 3081 	movel a4,sp@-
 3082 	jbsr _search__C6StringiiPCci
 3083 	movel d0,d2
 3084 	jlt L2861
 3085 	clrl d0
 3086 	movew a3@,d0
 3087 	addl d0,d2
 3088 L2861:
 3089 	movel a4@,a0
 3090 	clrl d0
 3091 	movew a0@,d0
 3092 	movel d0,d3
 3093 	subl d2,d3
 3094 	lea a6@(-8),a1
 3095 	tstl d2
 3096 	jlt L2866
 3097 	movel d2,d1
 3098 	addl d3,d1
 3099 	clrl d0
 3100 	movew a0@,d0
 3101 	cmpl d1,d0
 3102 	jcc L2865
 3103 L2866:
 3104 	lea a6@(-16),a0
 3105 	movel #__nilString,a0@
 3106 	clrw a0@(4)
 3107 	clrw a0@(6)
 3108 	jra L2892
 3109 L2865:
 3110 	lea a6@(-24),a0
 3111 	movel a4,a0@
 3112 	movew d2,a0@(4)
 3113 	movew d3,a0@(6)
 3114 L2892:
 3115 	movel a0@,a1@
 3116 	movel a0@,a1@
 3117 	movew a0@(4),a1@(4)
 3118 	movew a0@(6),a1@(6)
 3119 	movel a1,d0
 3120 	lea a6@(-8),a0
 3121 	movel a0@,a2@
 3122 	movel a0@,a2@
 3123 	movew a0@(4),a2@(4)
 3124 	movew a0@(6),a2@(6)
 3125 	movel a2,d0
 3126 	moveml a6@(-48),#0x1c1c
 3127 	unlk a6
 3128 	rts
 3129 	.even
 3130 .globl _after__6StringRC9SubStringi
 3131 _after__6StringRC9SubStringi:
 3132 	link a6,#-24
 3133 	moveml #0x3038,sp@-
 3134 	movel a1,a3
 3135 	movel a6@(8),a4
============ Listing of String.s ============	PAGE 58

 3136 	movel a6@(12),a2
 3137 	clrl d0
 3138 	movew a2@(6),d0
 3139 	movel d0,sp@-
 3140 	movel a2@,a0
 3141 	clrl d0
 3142 	movew a2@(4),d0
 3143 	addql #4,d0
 3144 	addl a0@,d0
 3145 	movel d0,sp@-
 3146 	movel a4@,a0
 3147 	clrl d0
 3148 	movew a0@,d0
 3149 	movel d0,sp@-
 3150 	movel a6@(16),sp@-
 3151 	movel a4,sp@-
 3152 	jbsr _search__C6StringiiPCci
 3153 	movel d0,d2
 3154 	jlt L2897
 3155 	clrl d0
 3156 	movew a2@(6),d0
 3157 	addl d0,d2
 3158 L2897:
 3159 	movel a4@,a0
 3160 	clrl d0
 3161 	movew a0@,d0
 3162 	movel d0,d3
 3163 	subl d2,d3
 3164 	lea a6@(-8),a1
 3165 	tstl d2
 3166 	jlt L2902
 3167 	movel d2,d1
 3168 	addl d3,d1
 3169 	clrl d0
 3170 	movew a0@,d0
 3171 	cmpl d1,d0
 3172 	jcc L2901
 3173 L2902:
 3174 	lea a6@(-16),a0
 3175 	movel #__nilString,a0@
 3176 	clrw a0@(4)
 3177 	clrw a0@(6)
 3178 	jra L2928
 3179 L2901:
 3180 	lea a6@(-24),a0
 3181 	movel a4,a0@
 3182 	movew d2,a0@(4)
 3183 	movew d3,a0@(6)
 3184 L2928:
 3185 	movel a0@,a1@
 3186 	movel a0@,a1@
 3187 	movew a0@(4),a1@(4)
 3188 	movew a0@(6),a1@(6)
 3189 	movel a1,d0
 3190 	lea a6@(-8),a0
============ Listing of String.s ============	PAGE 59

 3191 	movel a0@,a3@
 3192 	movel a0@,a3@
 3193 	movew a0@(4),a3@(4)
 3194 	movew a0@(6),a3@(6)
 3195 	movel a3,d0
 3196 	moveml a6@(-44),#0x1c0c
 3197 	unlk a6
 3198 	rts
 3199 	.even
 3200 .globl _after__6Stringci
 3201 _after__6Stringci:
 3202 	link a6,#-24
 3203 	moveml #0x3830,sp@-
 3204 	movel a1,a2
 3205 	movel a6@(8),a3
 3206 	moveb a6@(15),d4
 3207 	extbl d4
 3208 	movel d4,sp@-
 3209 	movel a3@,a0
 3210 	clrl d0
 3211 	movew a0@,d0
 3212 	movel d0,sp@-
 3213 	movel a6@(16),sp@-
 3214 	movel a3,sp@-
 3215 	jbsr _search__C6Stringiic
 3216 	movel d0,d2
 3217 	jlt L2931
 3218 	addql #1,d2
 3219 L2931:
 3220 	movel a3@,a0
 3221 	clrl d0
 3222 	movew a0@,d0
 3223 	movel d0,d3
 3224 	subl d2,d3
 3225 	lea a6@(-8),a1
 3226 	tstl d2
 3227 	jlt L2935
 3228 	movel d2,d1
 3229 	addl d3,d1
 3230 	clrl d0
 3231 	movew a0@,d0
 3232 	cmpl d1,d0
 3233 	jcc L2934
 3234 L2935:
 3235 	lea a6@(-16),a0
 3236 	movel #__nilString,a0@
 3237 	clrw a0@(4)
 3238 	clrw a0@(6)
 3239 	jra L2961
 3240 L2934:
 3241 	lea a6@(-24),a0
 3242 	movel a3,a0@
 3243 	movew d2,a0@(4)
 3244 	movew d3,a0@(6)
 3245 L2961:
============ Listing of String.s ============	PAGE 60

 3246 	movel a0@,a1@
 3247 	movel a0@,a1@
 3248 	movew a0@(4),a1@(4)
 3249 	movew a0@(6),a1@(6)
 3250 	movel a1,d0
 3251 	lea a6@(-8),a0
 3252 	movel a0@,a2@
 3253 	movel a0@,a2@
 3254 	movew a0@(4),a2@(4)
 3255 	movew a0@(6),a2@(6)
 3256 	movel a2,d0
 3257 	moveml a6@(-44),#0xc1c
 3258 	unlk a6
 3259 	rts
 3260 	.even
 3261 .globl _after__6StringRC5Regexi
 3262 _after__6StringRC5Regexi:
 3263 	link a6,#-28
 3264 	moveml #0x3830,sp@-
 3265 	movel a1,a2
 3266 	movel a6@(8),a3
 3267 	movel a6@(16),sp@-
 3268 	pea a6@(-4)
 3269 	movel a3@,a0
 3270 	clrl d0
 3271 	movew a0@,d0
 3272 	movel d0,sp@-
 3273 	movel a3@,d4
 3274 	addql #4,d4
 3275 	movel d4,sp@-
 3276 	movel a6@(12),sp@-
 3277 	jbsr _search__C5RegexPCciRii
 3278 	movel d0,d2
 3279 	jlt L2965
 3280 	addl a6@(-4),d2
 3281 L2965:
 3282 	movel a3@,a0
 3283 	clrl d0
 3284 	movew a0@,d0
 3285 	movel d0,d3
 3286 	subl d2,d3
 3287 	lea a6@(-12),a1
 3288 	tstl d2
 3289 	jlt L2969
 3290 	movel d2,d1
 3291 	addl d3,d1
 3292 	clrl d0
 3293 	movew a0@,d0
 3294 	cmpl d1,d0
 3295 	jcc L2968
 3296 L2969:
 3297 	lea a6@(-20),a0
 3298 	movel #__nilString,a0@
 3299 	clrw a0@(4)
 3300 	clrw a0@(6)
============ Listing of String.s ============	PAGE 61

 3301 	jra L2995
 3302 L2968:
 3303 	lea a6@(-28),a0
 3304 	movel a3,a0@
 3305 	movew d2,a0@(4)
 3306 	movew d3,a0@(6)
 3307 L2995:
 3308 	movel a0@,a1@
 3309 	movel a0@,a1@
 3310 	movew a0@(4),a1@(4)
 3311 	movew a0@(6),a1@(6)
 3312 	movel a1,d0
 3313 	lea a6@(-12),a0
 3314 	movel a0@,a2@
 3315 	movel a0@,a2@
 3316 	movew a0@(4),a2@(4)
 3317 	movew a0@(6),a2@(6)
 3318 	movel a2,d0
 3319 	moveml a6@(-48),#0xc1c
 3320 	unlk a6
 3321 	rts
 3322 	.even
 3323 .globl _after__6StringPCci
 3324 _after__6StringPCci:
 3325 	link a6,#-24
 3326 	moveml #0x3030,sp@-
 3327 	movel a1,a2
 3328 	movel a6@(8),a3
 3329 	movel a6@(12),d1
 3330 	jne L2998
 3331 	clrl d3
 3332 	jra L2997
 3333 L2998:
 3334 	movel d1,a0
 3335 L3000:
 3336 	tstb a0@+
 3337 	jne L3000
 3338 	movel d1,d0
 3339 	addql #1,d0
 3340 	movel a0,d3
 3341 	subl d0,d3
 3342 L2997:
 3343 	movel d3,sp@-
 3344 	movel d1,sp@-
 3345 	movel a3@,a0
 3346 	clrl d0
 3347 	movew a0@,d0
 3348 	movel d0,sp@-
 3349 	movel a6@(16),sp@-
 3350 	movel a3,sp@-
 3351 	jbsr _search__C6StringiiPCci
 3352 	movel d0,d2
 3353 	jlt L3003
 3354 	addl d3,d2
 3355 L3003:
============ Listing of String.s ============	PAGE 62

 3356 	movel a3@,a0
 3357 	clrl d0
 3358 	movew a0@,d0
 3359 	movel d0,d3
 3360 	subl d2,d3
 3361 	lea a6@(-8),a1
 3362 	tstl d2
 3363 	jlt L3007
 3364 	movel d2,d1
 3365 	addl d3,d1
 3366 	clrl d0
 3367 	movew a0@,d0
 3368 	cmpl d1,d0
 3369 	jcc L3006
 3370 L3007:
 3371 	lea a6@(-16),a0
 3372 	movel #__nilString,a0@
 3373 	clrw a0@(4)
 3374 	clrw a0@(6)
 3375 	jra L3033
 3376 L3006:
 3377 	lea a6@(-24),a0
 3378 	movel a3,a0@
 3379 	movew d2,a0@(4)
 3380 	movew d3,a0@(6)
 3381 L3033:
 3382 	movel a0@,a1@
 3383 	movel a0@,a1@
 3384 	movew a0@(4),a1@(4)
 3385 	movew a0@(6),a1@(6)
 3386 	movel a1,d0
 3387 	lea a6@(-8),a0
 3388 	movel a0@,a2@
 3389 	movel a0@,a2@
 3390 	movew a0@(4),a2@(4)
 3391 	movew a0@(6),a2@(6)
 3392 	movel a2,d0
 3393 	moveml a6@(-40),#0xc0c
 3394 	unlk a6
 3395 	rts
 3396 	.even
 3397 .globl _from__6StringRC6Stringi
 3398 _from__6StringRC6Stringi:
 3399 	link a6,#-24
 3400 	moveml #0x3838,sp@-
 3401 	movel a1,a3
 3402 	movel a6@(8),a4
 3403 	movel a6@(12),a0
 3404 	movel a0@,a1
 3405 	clrl d0
 3406 	movew a1@,d0
 3407 	movel d0,sp@-
 3408 	movel a0@,d4
 3409 	addql #4,d4
 3410 	movel d4,sp@-
============ Listing of String.s ============	PAGE 63

 3411 	movel a4@,a2
 3412 	clrl d0
 3413 	movew a2@,d0
 3414 	movel d0,sp@-
 3415 	movel a6@(16),sp@-
 3416 	movel a4,sp@-
 3417 	jbsr _search__C6StringiiPCci
 3418 	movel d0,d2
 3419 	clrl d0
 3420 	movew a2@,d0
 3421 	movel d0,d3
 3422 	subl d2,d3
 3423 	lea a6@(-8),a1
 3424 	tstl d2
 3425 	jlt L3041
 3426 	movel d2,d1
 3427 	addl d3,d1
 3428 	clrl d0
 3429 	movew a2@,d0
 3430 	cmpl d1,d0
 3431 	jcc L3040
 3432 L3041:
 3433 	lea a6@(-16),a0
 3434 	movel #__nilString,a0@
 3435 	clrw a0@(4)
 3436 	clrw a0@(6)
 3437 	jra L3067
 3438 L3040:
 3439 	lea a6@(-24),a0
 3440 	movel a4,a0@
 3441 	movew d2,a0@(4)
 3442 	movew d3,a0@(6)
 3443 L3067:
 3444 	movel a0@,a1@
 3445 	movel a0@,a1@
 3446 	movew a0@(4),a1@(4)
 3447 	movew a0@(6),a1@(6)
 3448 	movel a1,d0
 3449 	lea a6@(-8),a0
 3450 	movel a0@,a3@
 3451 	movel a0@,a3@
 3452 	movew a0@(4),a3@(4)
 3453 	movew a0@(6),a3@(6)
 3454 	movel a3,d0
 3455 	moveml a6@(-48),#0x1c1c
 3456 	unlk a6
 3457 	rts
 3458 	.even
 3459 .globl _from__6StringRC9SubStringi
 3460 _from__6StringRC9SubStringi:
 3461 	link a6,#-24
 3462 	moveml #0x3038,sp@-
 3463 	movel a1,a3
 3464 	movel a6@(8),a4
 3465 	movel a6@(12),a0
============ Listing of String.s ============	PAGE 64

 3466 	clrl d0
 3467 	movew a0@(6),d0
 3468 	movel d0,sp@-
 3469 	movel a0@,a1
 3470 	clrl d0
 3471 	movew a0@(4),d0
 3472 	addql #4,d0
 3473 	addl a1@,d0
 3474 	movel d0,sp@-
 3475 	movel a4@,a2
 3476 	clrl d0
 3477 	movew a2@,d0
 3478 	movel d0,sp@-
 3479 	movel a6@(16),sp@-
 3480 	movel a4,sp@-
 3481 	jbsr _search__C6StringiiPCci
 3482 	movel d0,d2
 3483 	clrl d0
 3484 	movew a2@,d0
 3485 	movel d0,d3
 3486 	subl d2,d3
 3487 	lea a6@(-8),a1
 3488 	tstl d2
 3489 	jlt L3075
 3490 	movel d2,d1
 3491 	addl d3,d1
 3492 	clrl d0
 3493 	movew a2@,d0
 3494 	cmpl d1,d0
 3495 	jcc L3074
 3496 L3075:
 3497 	lea a6@(-16),a0
 3498 	movel #__nilString,a0@
 3499 	clrw a0@(4)
 3500 	clrw a0@(6)
 3501 	jra L3101
 3502 L3074:
 3503 	lea a6@(-24),a0
 3504 	movel a4,a0@
 3505 	movew d2,a0@(4)
 3506 	movew d3,a0@(6)
 3507 L3101:
 3508 	movel a0@,a1@
 3509 	movel a0@,a1@
 3510 	movew a0@(4),a1@(4)
 3511 	movew a0@(6),a1@(6)
 3512 	movel a1,d0
 3513 	lea a6@(-8),a0
 3514 	movel a0@,a3@
 3515 	movel a0@,a3@
 3516 	movew a0@(4),a3@(4)
 3517 	movew a0@(6),a3@(6)
 3518 	movel a3,d0
 3519 	moveml a6@(-44),#0x1c0c
 3520 	unlk a6
============ Listing of String.s ============	PAGE 65

 3521 	rts
 3522 	.even
 3523 .globl _from__6StringRC5Regexi
 3524 _from__6StringRC5Regexi:
 3525 	link a6,#-28
 3526 	moveml #0x3838,sp@-
 3527 	movel a1,a3
 3528 	movel a6@(8),a4
 3529 	movel a6@(16),sp@-
 3530 	pea a6@(-4)
 3531 	movel a4@,a2
 3532 	clrl d0
 3533 	movew a2@,d0
 3534 	movel d0,sp@-
 3535 	movel a4@,d4
 3536 	addql #4,d4
 3537 	movel d4,sp@-
 3538 	movel a6@(12),sp@-
 3539 	jbsr _search__C5RegexPCciRii
 3540 	movel d0,d2
 3541 	clrl d0
 3542 	movew a2@,d0
 3543 	movel d0,d3
 3544 	subl d2,d3
 3545 	lea a6@(-12),a1
 3546 	tstl d2
 3547 	jlt L3108
 3548 	movel d2,d1
 3549 	addl d3,d1
 3550 	clrl d0
 3551 	movew a2@,d0
 3552 	cmpl d1,d0
 3553 	jcc L3107
 3554 L3108:
 3555 	lea a6@(-20),a0
 3556 	movel #__nilString,a0@
 3557 	clrw a0@(4)
 3558 	clrw a0@(6)
 3559 	jra L3134
 3560 L3107:
 3561 	lea a6@(-28),a0
 3562 	movel a4,a0@
 3563 	movew d2,a0@(4)
 3564 	movew d3,a0@(6)
 3565 L3134:
 3566 	movel a0@,a1@
 3567 	movel a0@,a1@
 3568 	movew a0@(4),a1@(4)
 3569 	movew a0@(6),a1@(6)
 3570 	movel a1,d0
 3571 	lea a6@(-12),a0
 3572 	movel a0@,a3@
 3573 	movel a0@,a3@
 3574 	movew a0@(4),a3@(4)
 3575 	movew a0@(6),a3@(6)
============ Listing of String.s ============	PAGE 66

 3576 	movel a3,d0
 3577 	moveml a6@(-52),#0x1c1c
 3578 	unlk a6
 3579 	rts
 3580 	.even
 3581 .globl _from__6Stringci
 3582 _from__6Stringci:
 3583 	link a6,#-24
 3584 	moveml #0x3838,sp@-
 3585 	movel a1,a3
 3586 	movel a6@(8),a4
 3587 	moveb a6@(15),d4
 3588 	extbl d4
 3589 	movel d4,sp@-
 3590 	movel a4@,a2
 3591 	clrl d0
 3592 	movew a2@,d0
 3593 	movel d0,sp@-
 3594 	movel a6@(16),sp@-
 3595 	movel a4,sp@-
 3596 	jbsr _search__C6Stringiic
 3597 	movel d0,d2
 3598 	clrl d0
 3599 	movew a2@,d0
 3600 	movel d0,d3
 3601 	subl d2,d3
 3602 	lea a6@(-8),a1
 3603 	tstl d2
 3604 	jlt L3140
 3605 	movel d2,d1
 3606 	addl d3,d1
 3607 	clrl d0
 3608 	movew a2@,d0
 3609 	cmpl d1,d0
 3610 	jcc L3139
 3611 L3140:
 3612 	lea a6@(-16),a0
 3613 	movel #__nilString,a0@
 3614 	clrw a0@(4)
 3615 	clrw a0@(6)
 3616 	jra L3166
 3617 L3139:
 3618 	lea a6@(-24),a0
 3619 	movel a4,a0@
 3620 	movew d2,a0@(4)
 3621 	movew d3,a0@(6)
 3622 L3166:
 3623 	movel a0@,a1@
 3624 	movel a0@,a1@
 3625 	movew a0@(4),a1@(4)
 3626 	movew a0@(6),a1@(6)
 3627 	movel a1,d0
 3628 	lea a6@(-8),a0
 3629 	movel a0@,a3@
 3630 	movel a0@,a3@
============ Listing of String.s ============	PAGE 67

 3631 	movew a0@(4),a3@(4)
 3632 	movew a0@(6),a3@(6)
 3633 	movel a3,d0
 3634 	moveml a6@(-48),#0x1c1c
 3635 	unlk a6
 3636 	rts
 3637 	.even
 3638 .globl _from__6StringPCci
 3639 _from__6StringPCci:
 3640 	link a6,#-24
 3641 	moveml #0x3038,sp@-
 3642 	movel a1,a3
 3643 	movel a6@(8),a4
 3644 	movel a6@(12),d1
 3645 	jne L3169
 3646 	clrl d0
 3647 	jra L3168
 3648 L3169:
 3649 	movel d1,a0
 3650 L3171:
 3651 	tstb a0@+
 3652 	jne L3171
 3653 	movel d1,d0
 3654 	addql #1,d0
 3655 	subl a0,d0
 3656 	negl d0
 3657 L3168:
 3658 	movel d0,sp@-
 3659 	movel d1,sp@-
 3660 	movel a4@,a2
 3661 	clrl d0
 3662 	movew a2@,d0
 3663 	movel d0,sp@-
 3664 	movel a6@(16),sp@-
 3665 	movel a4,sp@-
 3666 	jbsr _search__C6StringiiPCci
 3667 	movel d0,d2
 3668 	clrl d0
 3669 	movew a2@,d0
 3670 	movel d0,d3
 3671 	subl d2,d3
 3672 	lea a6@(-8),a1
 3673 	tstl d2
 3674 	jlt L3177
 3675 	movel d2,d1
 3676 	addl d3,d1
 3677 	clrl d0
 3678 	movew a2@,d0
 3679 	cmpl d1,d0
 3680 	jcc L3176
 3681 L3177:
 3682 	lea a6@(-16),a0
 3683 	movel #__nilString,a0@
 3684 	clrw a0@(4)
 3685 	clrw a0@(6)
============ Listing of String.s ============	PAGE 68

 3686 	jra L3203
 3687 L3176:
 3688 	lea a6@(-24),a0
 3689 	movel a4,a0@
 3690 	movew d2,a0@(4)
 3691 	movew d3,a0@(6)
 3692 L3203:
 3693 	movel a0@,a1@
 3694 	movel a0@,a1@
 3695 	movew a0@(4),a1@(4)
 3696 	movew a0@(6),a1@(6)
 3697 	movel a1,d0
 3698 	lea a6@(-8),a0
 3699 	movel a0@,a3@
 3700 	movel a0@,a3@
 3701 	movew a0@(4),a3@(4)
 3702 	movew a0@(6),a3@(6)
 3703 	movel a3,d0
 3704 	moveml a6@(-44),#0x1c0c
 3705 	unlk a6
 3706 	rts
 3707 	.even
 3708 .globl _split__FRC6StringP6StringiT0
 3709 _split__FRC6StringP6StringiT0:
 3710 	link a6,#-4
 3711 	moveml #0x3f38,sp@-
 3712 	movel a6@(12),a4
 3713 	movel a6@(16),d7
 3714 	movel a6@(20),a3
 3715 	lea a6@(-4),a2
 3716 	movel a6@(8),a1
 3717 	movel a1@,sp@-
 3718 	clrl sp@-
 3719 	jbsr _Scopy__FP6StrRepT0
 3720 	movel d0,a0
 3721 	movel a0,a2@
 3722 	addqw #8,sp
 3723 	movel a2@,a2
 3724 	addqw #4,a2
 3725 	clrl d0
 3726 	movew a0@,d0
 3727 	movel d0,d6
 3728 	clrl d5
 3729 	clrl d3
 3730 	cmpl d5,d7
 3731 	jle L3209
 3732 	clrl d4
 3733 L3214:
 3734 	cmpl d3,d6
 3735 	jle L3209
 3736 	movel a3@,a0
 3737 	movew a0@,d4
 3738 	movel d4,sp@-
 3739 	movel a3@,a1
 3740 	addqw #4,a1
============ Listing of String.s ============	PAGE 69

 3741 	movel a1,sp@-
 3742 	movel d6,sp@-
 3743 	movel d3,sp@-
 3744 	pea a6@(-4)
 3745 	jbsr _search__C6StringiiPCci
 3746 	movel d0,d2
 3747 	addw #20,sp
 3748 	jge L3212
 3749 	movel d6,d2
 3750 L3212:
 3751 	movel d2,d0
 3752 	subl d3,d0
 3753 	movel d0,sp@-
 3754 	movel d0,sp@-
 3755 	pea a2@(d3:l)
 3756 	movel a4@(d5:l:4),sp@-
 3757 	jbsr _Salloc__FP6StrRepPCcii
 3758 	movel d0,a4@(d5:l:4)
 3759 	addql #1,d5
 3760 	addw #16,sp
 3761 	movel a3@,a0
 3762 	movew a0@,d4
 3763 	movel d2,d3
 3764 	addl d4,d3
 3765 	cmpl d5,d7
 3766 	jgt L3214
 3767 L3209:
 3768 	lea a6@(-4),a2
 3769 	clrl d2
 3770 	cmpl #__nilStrRep,a2@
 3771 	jeq L3226
 3772 	movel a2@,sp@-
 3773 	jbsr ___builtin_delete
 3774 	addqw #4,sp
 3775 L3226:
 3776 	tstl d2
 3777 	jeq L3223
 3778 	movel a2,sp@-
 3779 	jbsr ___builtin_delete
 3780 L3223:
 3781 	movel d5,d0
 3782 	moveml a6@(-40),#0x1cfc
 3783 	unlk a6
 3784 	rts
 3785 	.even
 3786 .globl _split__FRC6StringP6StringiRC5Regex
 3787 _split__FRC6StringP6StringiRC5Regex:
 3788 	link a6,#-8
 3789 	moveml #0x3f30,sp@-
 3790 	movel a6@(12),a3
 3791 	movel a6@(16),d6
 3792 	movel a6@(20),d7
 3793 	lea a6@(-4),a2
 3794 	movel a6@(8),a1
 3795 	movel a1@,sp@-
============ Listing of String.s ============	PAGE 70

 3796 	clrl sp@-
 3797 	jbsr _Scopy__FP6StrRepT0
 3798 	movel d0,a0
 3799 	movel a0,a2@
 3800 	addqw #8,sp
 3801 	movel a2@,a2
 3802 	addqw #4,a2
 3803 	clrl d0
 3804 	movew a0@,d0
 3805 	movel d0,d5
 3806 	clrl d4
 3807 	clrl d3
 3808 	cmpl d4,d6
 3809 	jle L3235
 3810 L3237:
 3811 	cmpl d3,d5
 3812 	jle L3235
 3813 	movel d3,sp@-
 3814 	pea a6@(-8)
 3815 	movel d5,sp@-
 3816 	movel a2,sp@-
 3817 	movel d7,sp@-
 3818 	jbsr _search__C5RegexPCciRii
 3819 	movel d0,d2
 3820 	addw #20,sp
 3821 	jge L3236
 3822 	movel d5,d2
 3823 L3236:
 3824 	movel d2,d0
 3825 	subl d3,d0
 3826 	movel d0,sp@-
 3827 	movel d0,sp@-
 3828 	pea a2@(d3:l)
 3829 	movel a3@(d4:l:4),sp@-
 3830 	jbsr _Salloc__FP6StrRepPCcii
 3831 	movel d0,a3@(d4:l:4)
 3832 	addql #1,d4
 3833 	movel d2,d3
 3834 	addl a6@(-8),d3
 3835 	addw #16,sp
 3836 	cmpl d4,d6
 3837 	jgt L3237
 3838 L3235:
 3839 	lea a6@(-4),a2
 3840 	clrl d2
 3841 	cmpl #__nilStrRep,a2@
 3842 	jeq L3249
 3843 	movel a2@,sp@-
 3844 	jbsr ___builtin_delete
 3845 	addqw #4,sp
 3846 L3249:
 3847 	tstl d2
 3848 	jeq L3246
 3849 	movel a2,sp@-
 3850 	jbsr ___builtin_delete
============ Listing of String.s ============	PAGE 71

 3851 L3246:
 3852 	movel d4,d0
 3853 	moveml a6@(-40),#0xcfc
 3854 	unlk a6
 3855 	rts
 3856 	.even
 3857 .globl _join__FP6StringiRC6String
 3858 _join__FP6StringiRC6String:
 3859 	link a6,#-12
 3860 	moveml #0x3c3c,sp@-
 3861 	movel a1,d5
 3862 	movel a6@(8),a5
 3863 	movel a6@(12),d4
 3864 	lea a6@(-4),a2
 3865 	movel a6@(16),a3
 3866 	movel a3@,sp@-
 3867 	clrl sp@-
 3868 	jbsr _Scopy__FP6StrRepT0
 3869 	movel d0,a2@
 3870 	addqw #8,sp
 3871 	subl a1,a1
 3872 	clrl d2
 3873 	cmpl d2,d4
 3874 	jle L3317
 3875 	clrl d0
 3876 L3259:
 3877 	movel a5@(d2:l:4),a0
 3878 	movew a0@,d0
 3879 	addl d0,a1
 3880 	addql #1,d2
 3881 	cmpl d2,d4
 3882 	jgt L3259
 3883 L3317:
 3884 	movel a6@(-4),a0
 3885 	clrl d0
 3886 	movew a0@,d0
 3887 	movel d4,d1
 3888 	subql #1,d1
 3889 	mulsl d0,d1
 3890 	pea a1@(d1:l)
 3891 	clrl sp@-
 3892 	jbsr _Sresize__FP6StrRepi
 3893 	movel d0,a4
 3894 	clrl d3
 3895 	clrl d2
 3896 	addqw #8,sp
 3897 	clrl d1
 3898 	movel a6,a3
 3899 	subqw #4,a3
 3900 	movel a3,a6@(-12)
 3901 	jra L3261
 3902 L3280:
 3903 	lea a5@(d2:l:4),a0
 3904 	movel a0@,a2
 3905 	addqw #4,a2
============ Listing of String.s ============	PAGE 72

 3906 	lea a4@(4,d3:l),a1
 3907 	movel a0@,a0
 3908 	movew a0@,d1
 3909 	movel d1,d0
 3910 	cmpl a2,a1
 3911 	jeq L3266
 3912 	jra L3268
 3913 L3270:
 3914 	moveb a2@+,a1@+
 3915 L3268:
 3916 	subql #1,d0
 3917 	jpl L3270
 3918 L3266:
 3919 	movel a5@(d2:l:4),a0
 3920 	movew a0@,d1
 3921 	addl d1,d3
 3922 	movel a6@(-12),a3
 3923 	movel a3@,a2
 3924 	addqw #4,a2
 3925 	lea a4@(4,d3:l),a1
 3926 	movel a3@,a0
 3927 	movew a0@,d1
 3928 	movel d1,d0
 3929 	cmpl a2,a1
 3930 	jeq L3274
 3931 	jra L3276
 3932 L3278:
 3933 	moveb a2@+,a1@+
 3934 L3276:
 3935 	subql #1,d0
 3936 	jpl L3278
 3937 L3274:
 3938 	movel a6@(-12),a3
 3939 	movel a3@,a0
 3940 	movew a0@,d1
 3941 	addl d1,d3
 3942 	addql #1,d2
 3943 L3261:
 3944 	movel d4,d0
 3945 	subql #1,d0
 3946 	cmpl d2,d0
 3947 	jgt L3280
 3948 	lea a5@(d2:l:4),a0
 3949 	movel a0@,a2
 3950 	addqw #4,a2
 3951 	lea a4@(4,d3:l),a1
 3952 	movel a0@,a0
 3953 	clrl d0
 3954 	movew a0@,d0
 3955 	cmpl a2,a1
 3956 	jeq L3283
 3957 	jra L3285
 3958 L3287:
 3959 	moveb a2@+,a1@+
 3960 L3285:
============ Listing of String.s ============	PAGE 73

 3961 	subql #1,d0
 3962 	jpl L3287
 3963 	clrb a1@
 3964 L3283:
 3965 	lea a6@(-8),a0
 3966 	movel #__nilStrRep,a0@
 3967 	movel a4,a0@
 3968 	movel d5,a3
 3969 	movel #__nilStrRep,a3@
 3970 	movel a0@,a3@
 3971 	movel #__nilStrRep,a0@
 3972 	movel a0,a2
 3973 	clrl d2
 3974 	cmpl #__nilStrRep,a2@
 3975 	jeq L3300
 3976 	pea __nilStrRep
 3977 	jbsr ___builtin_delete
 3978 	addqw #4,sp
 3979 L3300:
 3980 	tstl d2
 3981 	jeq L3293
 3982 	movel a2,sp@-
 3983 	jbsr ___builtin_delete
 3984 	addqw #4,sp
 3985 L3293:
 3986 	lea a6@(-4),a2
 3987 	clrl d2
 3988 	cmpl #__nilStrRep,a2@
 3989 	jeq L3314
 3990 	movel a2@,sp@-
 3991 	jbsr ___builtin_delete
 3992 	addqw #4,sp
 3993 L3314:
 3994 	tstl d2
 3995 	jeq L3253
 3996 	movel a2,sp@-
 3997 	jbsr ___builtin_delete
 3998 L3253:
 3999 	movel d5,d0
 4000 	moveml a6@(-44),#0x3c3c
 4001 	unlk a6
 4002 	rts
 4003 	.even
 4004 .globl _Sreverse__FP6StrRepT0
 4005 _Sreverse__FP6StrRepT0:
 4006 	link a6,#0
 4007 	movel d2,sp@-
 4008 	movel a6@(8),a0
 4009 	movel a6@(12),d1
 4010 	clrl d2
 4011 	movew a0@,d2
 4012 	cmpl a0,d1
 4013 	jeq L3319
 4014 	movel d2,sp@-
 4015 	movel d2,sp@-
============ Listing of String.s ============	PAGE 74

 4016 	pea a0@(4)
 4017 	movel d1,sp@-
 4018 	jbsr _Salloc__FP6StrRepPCcii
 4019 	movel d0,d1
 4020 L3319:
 4021 	tstl d2
 4022 	jle L3320
 4023 	movel d1,a0
 4024 	addqw #4,a0
 4025 	lea a0@(-1,d2:l),a1
 4026 	cmpl a0,a1
 4027 	jls L3320
 4028 L3323:
 4029 	moveb a0@,d0
 4030 	moveb a1@,a0@+
 4031 	moveb d0,a1@
 4032 	subqw #1,a1
 4033 	cmpl a0,a1
 4034 	jhi L3323
 4035 L3320:
 4036 	movel d1,d0
 4037 	movel a6@(-4),d2
 4038 	unlk a6
 4039 	rts
 4040 	.even
 4041 .globl _Supcase__FP6StrRepT0
 4042 _Supcase__FP6StrRepT0:
 4043 	link a6,#0
 4044 	moveml #0x3c00,sp@-
 4045 	movel a6@(8),a0
 4046 	movel a6@(12),d4
 4047 	clrl d2
 4048 	movew a0@,d2
 4049 	cmpl a0,d4
 4050 	jeq L3326
 4051 	movel d2,sp@-
 4052 	movel d2,sp@-
 4053 	pea a0@(4)
 4054 	movel d4,sp@-
 4055 	jbsr _Salloc__FP6StrRepPCcii
 4056 	movel d0,d4
 4057 L3326:
 4058 	movel d4,a0
 4059 	addqw #4,a0
 4060 	movel a0,d3
 4061 	addl d2,d3
 4062 	cmpl a0,d3
 4063 	jls L3337
 4064 	lea __ctype_+1,a1
 4065 L3336:
 4066 	moveb a0@,d0
 4067 	extbl d0
 4068 	moveb d0,d1
 4069 	extbl d1
 4070 	btst #1,a1@(d1:l)
============ Listing of String.s ============	PAGE 75

 4071 	jeq L3329
 4072 	movel d0,d2
 4073 	moveb d1,d0
 4074 	extbl d0
 4075 	btst #1,a1@(d0:l)
 4076 	jeq L3333
 4077 	movel d1,d0
 4078 	moveq #-32,d5
 4079 	addl d5,d0
 4080 	jra L3334
 4081 L3333:
 4082 	moveb d2,d0
 4083 	extbl d0
 4084 L3334:
 4085 	moveb d0,a0@
 4086 L3329:
 4087 	addqw #1,a0
 4088 	cmpl a0,d3
 4089 	jhi L3336
 4090 L3337:
 4091 	movel d4,d0
 4092 	moveml a6@(-16),#0x3c
 4093 	unlk a6
 4094 	rts
 4095 	.even
 4096 .globl _Sdowncase__FP6StrRepT0
 4097 _Sdowncase__FP6StrRepT0:
 4098 	link a6,#0
 4099 	moveml #0x3c00,sp@-
 4100 	movel a6@(8),a0
 4101 	movel a6@(12),d4
 4102 	clrl d2
 4103 	movew a0@,d2
 4104 	cmpl a0,d4
 4105 	jeq L3339
 4106 	movel d2,sp@-
 4107 	movel d2,sp@-
 4108 	pea a0@(4)
 4109 	movel d4,sp@-
 4110 	jbsr _Salloc__FP6StrRepPCcii
 4111 	movel d0,d4
 4112 L3339:
 4113 	movel d4,a0
 4114 	addqw #4,a0
 4115 	movel a0,d3
 4116 	addl d2,d3
 4117 	cmpl a0,d3
 4118 	jls L3350
 4119 	lea __ctype_+1,a1
 4120 L3349:
 4121 	moveb a0@,d0
 4122 	extbl d0
 4123 	moveb d0,d1
 4124 	extbl d1
 4125 	btst #0,a1@(d1:l)
============ Listing of String.s ============	PAGE 76

 4126 	jeq L3342
 4127 	movel d0,d2
 4128 	moveb d1,d0
 4129 	extbl d0
 4130 	btst #0,a1@(d0:l)
 4131 	jeq L3346
 4132 	movel d1,d0
 4133 	moveq #32,d5
 4134 	addl d5,d0
 4135 	jra L3347
 4136 L3346:
 4137 	moveb d2,d0
 4138 	extbl d0
 4139 L3347:
 4140 	moveb d0,a0@
 4141 L3342:
 4142 	addqw #1,a0
 4143 	cmpl a0,d3
 4144 	jhi L3349
 4145 L3350:
 4146 	movel d4,d0
 4147 	moveml a6@(-16),#0x3c
 4148 	unlk a6
 4149 	rts
 4150 	.even
 4151 .globl _Scapitalize__FP6StrRepT0
 4152 _Scapitalize__FP6StrRepT0:
 4153 	link a6,#0
 4154 	moveml #0x3e00,sp@-
 4155 	movel a6@(8),a0
 4156 	movel a6@(12),d5
 4157 	clrl d2
 4158 	movew a0@,d2
 4159 	cmpl a0,d5
 4160 	jeq L3352
 4161 	movel d2,sp@-
 4162 	movel d2,sp@-
 4163 	pea a0@(4)
 4164 	movel d5,sp@-
 4165 	jbsr _Salloc__FP6StrRepPCcii
 4166 	movel d0,d5
 4167 L3352:
 4168 	movel d5,a0
 4169 	addqw #4,a0
 4170 	movel a0,d4
 4171 	addl d2,d4
 4172 	cmpl a0,d4
 4173 	jls L3382
 4174 	lea __ctype_+1,a1
 4175 L3381:
 4176 	moveb a0@,d0
 4177 	extbl d0
 4178 	moveb d0,d1
 4179 	extbl d1
 4180 	moveb a1@(d1:l),d2
============ Listing of String.s ============	PAGE 77

 4181 	moveq #2,d6
 4182 	andl d6,d2
 4183 	jeq L3356
 4184 	movel d0,d3
 4185 	moveb d1,d0
 4186 	extbl d0
 4187 	btst #1,a1@(d0:l)
 4188 	jeq L3359
 4189 	movel d1,d0
 4190 	moveq #-32,d6
 4191 	addl d6,d0
 4192 	jra L3360
 4193 L3359:
 4194 	moveb d3,d0
 4195 	extbl d0
 4196 L3360:
 4197 	moveb d0,a0@
 4198 	jra L3362
 4199 L3356:
 4200 	clrl d1
 4201 	moveb a0@,d0
 4202 	extbl d0
 4203 	btst #0,a1@(d0:l)
 4204 	jne L3364
 4205 	btst #2,a1@(d0:l)
 4206 	jeq L3363
 4207 L3364:
 4208 	moveq #1,d1
 4209 L3363:
 4210 	movel d1,d2
 4211 L3362:
 4212 	tstl d2
 4213 	jeq L3355
 4214 	jra L3368
 4215 L3380:
 4216 	moveb a0@,d0
 4217 	extbl d0
 4218 	moveb d0,d1
 4219 	extbl d1
 4220 	btst #0,a1@(d1:l)
 4221 	jeq L3370
 4222 	movel d0,d2
 4223 	moveb d1,d0
 4224 	extbl d0
 4225 	btst #0,a1@(d0:l)
 4226 	jeq L3373
 4227 	movel d1,d0
 4228 	moveq #32,d6
 4229 	addl d6,d0
 4230 	jra L3374
 4231 L3373:
 4232 	moveb d2,d0
 4233 	extbl d0
 4234 L3374:
 4235 	moveb d0,a0@
============ Listing of String.s ============	PAGE 78

 4236 	jra L3368
 4237 L3370:
 4238 	moveb a0@,d0
 4239 	extbl d0
 4240 	btst #1,a1@(d0:l)
 4241 	jne L3368
 4242 	btst #2,a1@(d0:l)
 4243 	jeq L3355
 4244 L3368:
 4245 	addqw #1,a0
 4246 	cmpl a0,d4
 4247 	jhi L3380
 4248 L3355:
 4249 	addqw #1,a0
 4250 	cmpl a0,d4
 4251 	jhi L3381
 4252 L3382:
 4253 	movel d5,d0
 4254 	moveml a6@(-20),#0x7c
 4255 	unlk a6
 4256 	rts
 4257 	.even
 4258 .globl _replicate__Fci
 4259 _replicate__Fci:
 4260 	link a6,#-4
 4261 	moveml #0x3030,sp@-
 4262 	movel a1,a3
 4263 	moveb a6@(11),d3
 4264 	movel a6@(12),d2
 4265 	movel d2,sp@-
 4266 	clrl sp@-
 4267 	jbsr _Sresize__FP6StrRepi
 4268 	movel d0,a0
 4269 	addqw #4,a0
 4270 	addqw #8,sp
 4271 	jra L3384
 4272 L3386:
 4273 	moveb d3,a0@+
 4274 L3384:
 4275 	subql #1,d2
 4276 	moveq #-1,d1
 4277 	cmpl d2,d1
 4278 	jlt L3386
 4279 	clrb a0@
 4280 	lea a6@(-4),a0
 4281 	movel #__nilStrRep,a0@
 4282 	movel d0,a0@
 4283 	movel #__nilStrRep,a3@
 4284 	movel a0@,a3@
 4285 	movel #__nilStrRep,a0@
 4286 	movel a0,a2
 4287 	clrl d2
 4288 	cmpl #__nilStrRep,a2@
 4289 	jeq L3399
 4290 	pea __nilStrRep
============ Listing of String.s ============	PAGE 79

 4291 	jbsr ___builtin_delete
 4292 	addqw #4,sp
 4293 L3399:
 4294 	tstl d2
 4295 	jeq L3383
 4296 	movel a2,sp@-
 4297 	jbsr ___builtin_delete
 4298 L3383:
 4299 	movel a3,d0
 4300 	moveml a6@(-20),#0xc0c
 4301 	unlk a6
 4302 	rts
 4303 	.even
 4304 .globl _replicate__FRC6Stringi
 4305 _replicate__FRC6Stringi:
 4306 	link a6,#-4
 4307 	moveml #0x3838,sp@-
 4308 	movel a1,a3
 4309 	movel a6@(8),a4
 4310 	movel a6@(12),d2
 4311 	movel a4@,a0
 4312 	clrl d0
 4313 	movew a0@,d0
 4314 	movel d0,d3
 4315 	movel d2,d4
 4316 	mulsl d3,d4
 4317 	movel d4,sp@-
 4318 	clrl sp@-
 4319 	jbsr _Sresize__FP6StrRepi
 4320 	movel d0,d1
 4321 	movel d1,a2
 4322 	addqw #4,a2
 4323 	addqw #8,sp
 4324 	jra L3404
 4325 L3412:
 4326 	movel a4@,a0
 4327 	addqw #4,a0
 4328 	movel a2,a1
 4329 	movel d3,d0
 4330 	cmpl a0,a2
 4331 	jeq L3407
 4332 	jra L3409
 4333 L3411:
 4334 	moveb a0@+,a1@+
 4335 L3409:
 4336 	subql #1,d0
 4337 	jpl L3411
 4338 L3407:
 4339 	addl d3,a2
 4340 L3404:
 4341 	subql #1,d2
 4342 	moveq #-1,d4
 4343 	cmpl d2,d4
 4344 	jlt L3412
 4345 	clrb a2@
============ Listing of String.s ============	PAGE 80

 4346 	lea a6@(-4),a0
 4347 	movel #__nilStrRep,a0@
 4348 	movel d1,a0@
 4349 	movel #__nilStrRep,a3@
 4350 	movel a0@,a3@
 4351 	movel #__nilStrRep,a0@
 4352 	movel a0,a2
 4353 	clrl d2
 4354 	cmpl #__nilStrRep,a2@
 4355 	jeq L3425
 4356 	pea __nilStrRep
 4357 	jbsr ___builtin_delete
 4358 	addqw #4,sp
 4359 L3425:
 4360 	tstl d2
 4361 	jeq L3402
 4362 	movel a2,sp@-
 4363 	jbsr ___builtin_delete
 4364 L3402:
 4365 	movel a3,d0
 4366 	moveml a6@(-28),#0x1c1c
 4367 	unlk a6
 4368 	rts
 4369 	.even
 4370 .globl _common_prefix__FRC6StringT0i
 4371 _common_prefix__FRC6StringT0i:
 4372 	link a6,#-4
 4373 	moveml #0x3830,sp@-
 4374 	movel a1,a3
 4375 	movel a6@(8),a1
 4376 	movel a6@(12),a0
 4377 	movel a6@(16),d1
 4378 	movel a1@,d2
 4379 	addql #4,d2
 4380 	movel a0@,d0
 4381 	addql #4,d0
 4382 	movel d2,d4
 4383 	addl d1,d4
 4384 	movel d4,a2
 4385 	movel a1@,a1
 4386 	clrl d3
 4387 	movew a1@,d3
 4388 	addl d3,d2
 4389 	movel d0,a1
 4390 	addl d1,a1
 4391 	movel a0@,a0
 4392 	clrl d1
 4393 	movew a0@,d1
 4394 	addl d0,d1
 4395 	clrl d0
 4396 	cmpl a2,d2
 4397 	jls L3434
 4398 L3436:
 4399 	cmpl a1,d1
 4400 	jls L3434
============ Listing of String.s ============	PAGE 81

 4401 	cmpmb a1@+,a2@+
 4402 	jne L3434
 4403 	addql #1,d0
 4404 	cmpl a2,d2
 4405 	jhi L3436
 4406 L3434:
 4407 	lea a6@(-4),a2
 4408 	movel d0,sp@-
 4409 	movel d0,sp@-
 4410 	movel d4,sp@-
 4411 	clrl sp@-
 4412 	jbsr _Salloc__FP6StrRepPCcii
 4413 	addw #16,sp
 4414 	movel #__nilStrRep,a2@
 4415 	movel d0,a2@
 4416 	movel #__nilStrRep,a3@
 4417 	movel a2@,a3@
 4418 	movel #__nilStrRep,a2@
 4419 	clrl d2
 4420 	cmpl #__nilStrRep,a2@
 4421 	jeq L3449
 4422 	pea __nilStrRep
 4423 	jbsr ___builtin_delete
 4424 	addqw #4,sp
 4425 L3449:
 4426 	tstl d2
 4427 	jeq L3428
 4428 	movel a2,sp@-
 4429 	jbsr ___builtin_delete
 4430 L3428:
 4431 	movel a3,d0
 4432 	moveml a6@(-24),#0xc1c
 4433 	unlk a6
 4434 	rts
 4435 	.even
 4436 .globl _common_suffix__FRC6StringT0i
 4437 _common_suffix__FRC6StringT0i:
 4438 	link a6,#-4
 4439 	moveml #0x3830,sp@-
 4440 	movel a1,a3
 4441 	movel a6@(8),a1
 4442 	movel a6@(12),a0
 4443 	movel a6@(16),d0
 4444 	movel a1@,d2
 4445 	addql #4,d2
 4446 	movel a0@,d1
 4447 	addql #4,d1
 4448 	movel a1@,a1
 4449 	clrl d3
 4450 	movew a1@,d3
 4451 	addl d0,d3
 4452 	movel d2,a1
 4453 	addl d3,a1
 4454 	movel d2,d3
 4455 	movel a0@,a0
============ Listing of String.s ============	PAGE 82

 4456 	clrl d2
 4457 	movew a0@,d2
 4458 	addl d0,d2
 4459 	movel d1,a0
 4460 	addl d2,a0
 4461 	clrl d0
 4462 	cmpl a1,d3
 4463 	jhi L3459
 4464 L3461:
 4465 	cmpl a0,d1
 4466 	jhi L3459
 4467 	moveb a1@,d4
 4468 	cmpb a0@,d4
 4469 	jne L3459
 4470 	subqw #1,a1
 4471 	subqw #1,a0
 4472 	addql #1,d0
 4473 	cmpl a1,d3
 4474 	jls L3461
 4475 L3459:
 4476 	lea a6@(-4),a2
 4477 	movel d0,sp@-
 4478 	movel d0,sp@-
 4479 	pea a1@(1)
 4480 	clrl sp@-
 4481 	jbsr _Salloc__FP6StrRepPCcii
 4482 	addw #16,sp
 4483 	movel #__nilStrRep,a2@
 4484 	movel d0,a2@
 4485 	movel #__nilStrRep,a3@
 4486 	movel a2@,a3@
 4487 	movel #__nilStrRep,a2@
 4488 	clrl d2
 4489 	cmpl #__nilStrRep,a2@
 4490 	jeq L3474
 4491 	pea __nilStrRep
 4492 	jbsr ___builtin_delete
 4493 	addqw #4,sp
 4494 L3474:
 4495 	tstl d2
 4496 	jeq L3453
 4497 	movel a2,sp@-
 4498 	jbsr ___builtin_delete
 4499 L3453:
 4500 	movel a3,d0
 4501 	moveml a6@(-24),#0xc1c
 4502 	unlk a6
 4503 	rts
 4504 	.even
 4505 .globl _op$arshift__FR7istreamR6String
 4506 _op$arshift__FR7istreamR6String:
 4507 	link a6,#-4
 4508 	moveml #0x2038,sp@-
 4509 	movel a6@(8),a3
 4510 	movel a6@(12),a4
============ Listing of String.s ============	PAGE 83

 4511 	clrl d2
 4512 	tstl a3@
 4513 	jeq L3481
 4514 	movel a3@,a0
 4515 	movel a0@(18),a0
 4516 	movew a0@(88),a1
 4517 	addl a3@,a1
 4518 	movel a1,sp@-
 4519 	movel a0@(92),a0
 4520 	jbsr a0@
 4521 	addqw #4,sp
 4522 	tstl d0
 4523 	jeq L3481
 4524 	tstl a3@(4)
 4525 	jne L3481
 4526 	moveq #1,d2
 4527 L3481:
 4528 	tstl d2
 4529 	jne L3479
 4530 	moveq #4,d1
 4531 	jra L3498
 4532 L3479:
 4533 	subl a2,a2
 4534 	pea 20:w
 4535 	movel a4@,sp@-
 4536 	jbsr _Sresize__FP6StrRepi
 4537 	movel d0,a4@
 4538 	pea _WS
 4539 	movel a3,sp@-
 4540 	jbsr _op$arshift__7istreamR10whitespace
 4541 	addw #16,sp
 4542 	tstl a3@(4)
 4543 	seq d0
 4544 	btst #0,d0
 4545 	jne L3486
 4546 	moveq #4,d1
 4547 	jra L3498
 4548 L3494:
 4549 	moveb a6@(-1),d0
 4550 	extbl d0
 4551 	lea __ctype_+1,a0
 4552 	btst #3,a0@(d0:l)
 4553 	jne L3487
 4554 	movel a4@,a0
 4555 	clrl d0
 4556 	movew a0@(2),d0
 4557 	subql #1,d0
 4558 	cmpl a2,d0
 4559 	jgt L3493
 4560 	pea a2@(1)
 4561 	movel a0,sp@-
 4562 	jbsr _Sresize__FP6StrRepi
 4563 	movel d0,a4@
 4564 	addqw #8,sp
 4565 L3493:
============ Listing of String.s ============	PAGE 84

 4566 	movel a4@,a0
 4567 	addl a2,a0
 4568 	moveb a6@(-1),a0@(4)
 4569 	addqw #1,a2
 4570 L3486:
 4571 	pea a6@(-1)
 4572 	movel a3,sp@-
 4573 	jbsr _get__7istreamRc
 4574 	movel d0,a0
 4575 	addqw #8,sp
 4576 	tstl a0@(4)
 4577 	jeq L3490
 4578 	clrl d0
 4579 L3490:
 4580 	tstl d0
 4581 	jne L3494
 4582 L3487:
 4583 	movel a4@,a0
 4584 	clrb a2@(4,a0:l)
 4585 	movel a4@,a0
 4586 	movew a2,a0@
 4587 	tstl a2
 4588 	seq d0
 4589 	btst #0,d0
 4590 	jeq L3496
 4591 	moveq #2,d1
 4592 L3498:
 4593 	orl d1,a3@(4)
 4594 L3496:
 4595 	movel a3,d0
 4596 	moveml a6@(-20),#0x1c04
 4597 	unlk a6
 4598 	rts
 4599 	.even
 4600 .globl _readline__FR7istreamR6Stringci
 4601 _readline__FR7istreamR6Stringci:
 4602 	link a6,#-4
 4603 	moveml #0x3838,sp@-
 4604 	movel a6@(8),a4
 4605 	movel a6@(12),a3
 4606 	moveb a6@(19),d3
 4607 	movel a6@(20),d4
 4608 	clrl d2
 4609 	tstl a4@
 4610 	jeq L3502
 4611 	movel a4@,a0
 4612 	movel a0@(18),a0
 4613 	movew a0@(88),a1
 4614 	addl a4@,a1
 4615 	movel a1,sp@-
 4616 	movel a0@(92),a0
 4617 	jbsr a0@
 4618 	addqw #4,sp
 4619 	tstl d0
 4620 	jeq L3502
============ Listing of String.s ============	PAGE 85

 4621 	tstl a4@(4)
 4622 	jne L3502
 4623 	moveq #1,d2
 4624 L3502:
 4625 	tstl d2
 4626 	jne L3500
 4627 	moveq #4,d1
 4628 	orl d1,a4@(4)
 4629 	clrl d0
 4630 	jra L3499
 4631 L3500:
 4632 	subl a2,a2
 4633 	pea 80:w
 4634 	movel a3@,sp@-
 4635 	jbsr _Sresize__FP6StrRepi
 4636 	movel d0,a3@
 4637 	addqw #8,sp
 4638 	jra L3504
 4639 L3513:
 4640 	cmpb a6@(-1),d3
 4641 	jne L3510
 4642 	tstl d4
 4643 	jne L3509
 4644 L3510:
 4645 	movel a3@,a0
 4646 	clrl d0
 4647 	movew a0@(2),d0
 4648 	subql #1,d0
 4649 	cmpl a2,d0
 4650 	jgt L3511
 4651 	pea a2@(1)
 4652 	movel a0,sp@-
 4653 	jbsr _Sresize__FP6StrRepi
 4654 	movel d0,a3@
 4655 	addqw #8,sp
 4656 L3511:
 4657 	movel a3@,a0
 4658 	addl a2,a0
 4659 	moveb a6@(-1),a0@(4)
 4660 	addqw #1,a2
 4661 L3509:
 4662 	cmpb a6@(-1),d3
 4663 	jeq L3505
 4664 L3504:
 4665 	pea a6@(-1)
 4666 	movel a4,sp@-
 4667 	jbsr _get__7istreamRc
 4668 	movel d0,a0
 4669 	addqw #8,sp
 4670 	tstl a0@(4)
 4671 	jeq L3508
 4672 	clrl d0
 4673 L3508:
 4674 	tstl d0
 4675 	jne L3513
============ Listing of String.s ============	PAGE 86

 4676 L3505:
 4677 	movel a3@,a0
 4678 	clrb a2@(4,a0:l)
 4679 	movel a3@,a0
 4680 	movew a2,a0@
 4681 	movel a2,d0
 4682 L3499:
 4683 	moveml a6@(-28),#0x1c1c
 4684 	unlk a6
 4685 	rts
 4686 	.even
 4687 .globl _op$alshift__FR7ostreamRC9SubString
 4688 _op$alshift__FR7ostreamRC9SubString:
 4689 	link a6,#0
 4690 	moveml #0x3030,sp@-
 4691 	movel a6@(8),a3
 4692 	movel a6@(12),a0
 4693 	movel a0@,a1
 4694 	clrl d0
 4695 	movew a0@(4),d0
 4696 	addql #4,d0
 4697 	movel d0,a2
 4698 	addl a1@,a2
 4699 	clrl d0
 4700 	movew a0@(6),d0
 4701 	movel a2,d3
 4702 	addl d0,d3
 4703 L3530:
 4704 	cmpl a2,d3
 4705 	jls L3529
 4706 	moveb a2@+,d0
 4707 	extbl d0
 4708 	clrl d2
 4709 	tstl a3@(4)
 4710 	jne L3521
 4711 	movel a3@,a1
 4712 	extbl d0
 4713 	movel a1@(4),d1
 4714 	cmpl a1@(12),d1
 4715 	jcc L3523
 4716 	movel a1@(4),a0
 4717 	moveb d0,a0@
 4718 	extbl d0
 4719 	addql #1,a1@(4)
 4720 	jra L3524
 4721 L3523:
 4722 	movel a1@(18),a0
 4723 	movel d0,sp@-
 4724 	addw a0@(16),a1
 4725 	movel a1,sp@-
 4726 	movel a0@(20),a0
 4727 	jbsr a0@
 4728 	addqw #8,sp
 4729 L3524:
 4730 	moveq #-1,d1
============ Listing of String.s ============	PAGE 87

 4731 	cmpl d0,d1
 4732 	jne L3520
 4733 L3521:
 4734 	moveq #1,d2
 4735 L3520:
 4736 	tstl d2
 4737 	jeq L3530
 4738 	moveq #2,d1
 4739 	orl d1,a3@(4)
 4740 	jra L3530
 4741 L3529:
 4742 	movel a3,d0
 4743 	moveml a6@(-16),#0xc0c
 4744 	unlk a6
 4745 	rts
 4746 	.even
 4747 .globl _freq__C6StringRC9SubString
 4748 _freq__C6StringRC9SubString:
 4749 	link a6,#0
 4750 	moveml #0x3830,sp@-
 4751 	movel a6@(8),a3
 4752 	movel a6@(12),a2
 4753 	clrl d4
 4754 	clrl d3
 4755 	clrl d2
 4756 	jra L3532
 4757 L3540:
 4758 	movew a2@(6),d2
 4759 	movel d2,sp@-
 4760 	movel a2@,a0
 4761 	movew a2@(4),d2
 4762 	movel d2,d0
 4763 	addql #4,d0
 4764 	addl a0@,d0
 4765 	movel d0,sp@-
 4766 	clrl sp@-
 4767 	movel a3@,a0
 4768 	movew a0@,d2
 4769 	movel d2,sp@-
 4770 	movel d3,sp@-
 4771 	movel a3,sp@-
 4772 	jbsr _match__C6StringiiiPCci
 4773 	addw #24,sp
 4774 	tstl d0
 4775 	jeq L3534
 4776 	addql #1,d4
 4777 L3534:
 4778 	addql #1,d3
 4779 L3532:
 4780 	movel a3@,a0
 4781 	movew a0@,d2
 4782 	cmpl d3,d2
 4783 	jgt L3540
 4784 	movel d4,d0
 4785 	moveml a6@(-20),#0xc1c
============ Listing of String.s ============	PAGE 88

 4786 	unlk a6
 4787 	rts
 4788 	.even
 4789 .globl _freq__C6StringRC6String
 4790 _freq__C6StringRC6String:
 4791 	link a6,#0
 4792 	moveml #0x3830,sp@-
 4793 	movel a6@(8),a2
 4794 	movel a6@(12),a3
 4795 	clrl d4
 4796 	clrl d3
 4797 	clrl d2
 4798 	jra L3542
 4799 L3550:
 4800 	movel a3@,a0
 4801 	movew a0@,d2
 4802 	movel d2,sp@-
 4803 	movel a3@,d1
 4804 	addql #4,d1
 4805 	movel d1,sp@-
 4806 	clrl sp@-
 4807 	movel a2@,a0
 4808 	movew a0@,d2
 4809 	movel d2,sp@-
 4810 	movel d3,sp@-
 4811 	movel a2,sp@-
 4812 	jbsr _match__C6StringiiiPCci
 4813 	addw #24,sp
 4814 	tstl d0
 4815 	jeq L3544
 4816 	addql #1,d4
 4817 L3544:
 4818 	addql #1,d3
 4819 L3542:
 4820 	movel a2@,a0
 4821 	movew a0@,d2
 4822 	cmpl d3,d2
 4823 	jgt L3550
 4824 	movel d4,d0
 4825 	moveml a6@(-20),#0xc1c
 4826 	unlk a6
 4827 	rts
 4828 	.even
 4829 .globl _freq__C6StringPCc
 4830 _freq__C6StringPCc:
 4831 	link a6,#0
 4832 	moveml #0x3c20,sp@-
 4833 	movel a6@(8),a2
 4834 	movel a6@(12),d5
 4835 	clrl d4
 4836 	clrl d3
 4837 	clrl d2
 4838 	jra L3552
 4839 L3558:
 4840 	pea -1:w
============ Listing of String.s ============	PAGE 89

 4841 	movel d5,sp@-
 4842 	clrl sp@-
 4843 	movel a2@,a0
 4844 	movew a0@,d2
 4845 	movel d2,sp@-
 4846 	movel d3,sp@-
 4847 	movel a2,sp@-
 4848 	jbsr _match__C6StringiiiPCci
 4849 	addw #24,sp
 4850 	tstl d0
 4851 	jeq L3554
 4852 	addql #1,d4
 4853 L3554:
 4854 	addql #1,d3
 4855 L3552:
 4856 	movel a2@,a0
 4857 	movew a0@,d2
 4858 	cmpl d3,d2
 4859 	jgt L3558
 4860 	movel d4,d0
 4861 	moveml a6@(-20),#0x43c
 4862 	unlk a6
 4863 	rts
 4864 	.even
 4865 .globl _freq__C6Stringc
 4866 _freq__C6Stringc:
 4867 	link a6,#0
 4868 	moveml #0x3820,sp@-
 4869 	movel a6@(8),a2
 4870 	clrl d4
 4871 	clrl d3
 4872 	clrl d2
 4873 	jra L3560
 4874 L3566:
 4875 	pea 1:w
 4876 	pea a6@(15)
 4877 	clrl sp@-
 4878 	movel a2@,a0
 4879 	movew a0@,d2
 4880 	movel d2,sp@-
 4881 	movel d3,sp@-
 4882 	movel a2,sp@-
 4883 	jbsr _match__C6StringiiiPCci
 4884 	addw #24,sp
 4885 	tstl d0
 4886 	jeq L3562
 4887 	addql #1,d4
 4888 L3562:
 4889 	addql #1,d3
 4890 L3560:
 4891 	movel a2@,a0
 4892 	movew a0@,d2
 4893 	cmpl d3,d2
 4894 	jgt L3566
 4895 	movel d4,d0
============ Listing of String.s ============	PAGE 90

 4896 	moveml a6@(-16),#0x41c
 4897 	unlk a6
 4898 	rts
 4899 LC4:
 4900 	.ascii "invariant failure\0"
 4901 	.even
 4902 .globl _OK__C6String
 4903 _OK__C6String:
 4904 	link a6,#0
 4905 	movel d2,sp@-
 4906 	movel a6@(8),a1
 4907 	tstl a1@
 4908 	sne d0
 4909 	moveq #1,d1
 4910 	andl d0,d1
 4911 	movel a1@,a0
 4912 	movew a0@(2),d2
 4913 	cmpw a0@,d2
 4914 	scc d0
 4915 	moveq #1,d2
 4916 	andl d2,d0
 4917 	andl d0,d1
 4918 	clrl d0
 4919 	movew a0@,d0
 4920 	tstb a0@(4,d0:l)
 4921 	seq d0
 4922 	andl d2,d0
 4923 	andl d0,d1
 4924 	jne L3568
 4925 	pea LC4
 4926 	movel a1,sp@-
 4927 	jbsr _error__C6StringPc
 4928 L3568:
 4929 	movel d1,d0
 4930 	movel a6@(-4),d2
 4931 	unlk a6
 4932 	rts
 4933 LC5:
 4934 	.ascii "SubString invariant failure\0"
 4935 	.even
 4936 .globl _OK__C9SubString
 4937 _OK__C9SubString:
 4938 	link a6,#0
 4939 	moveml #0x3030,sp@-
 4940 	movel a6@(8),a2
 4941 	movel a2@,a3
 4942 	clrl sp@-
 4943 	movel a3,sp@-
 4944 	jbsr _compare__FRC6StringPCc
 4945 	addqw #8,sp
 4946 	tstl d0
 4947 	sne d1
 4948 	moveq #1,d2
 4949 	andl d1,d2
 4950 	movel a3,sp@-
============ Listing of String.s ============	PAGE 91

 4951 	jbsr _OK__C6String
 4952 	andl d0,d2
 4953 	clrl d0
 4954 	movew a2@(4),d0
 4955 	clrl d1
 4956 	movew a2@(6),d1
 4957 	addl d1,d0
 4958 	movel a3@,a0
 4959 	clrl d1
 4960 	movew a0@,d1
 4961 	addqw #4,sp
 4962 	cmpl d0,d1
 4963 	sle d0
 4964 	moveq #1,d3
 4965 	andl d3,d0
 4966 	andl d0,d2
 4967 	jne L3571
 4968 	pea LC5
 4969 	movel a3,sp@-
 4970 	jbsr _error__C6StringPc
 4971 L3571:
 4972 	movel d2,d0
 4973 	moveml a6@(-16),#0xc0c
 4974 	unlk a6
 4975 	rts
 4976 	.even
 4977 .globl _OK__C5Regex
 4978 _OK__C5Regex:
 4979 	link a6,#0
 4980 	movel d2,sp@-
 4981 	movel a6@(8),a0
 4982 	tstl a0@
 4983 	sne d0
 4984 	moveq #1,d2
 4985 	andl d0,d2
 4986 	movel a0@,a0
 4987 	tstl a0@
 4988 	sne d0
 4989 	moveq #1,d1
 4990 	andl d1,d0
 4991 	andl d0,d2
 4992 	jne L3573
 4993 	pea LC4
 4994 	pea LC3
 4995 	movel _lib_error_handler,a0
 4996 	jbsr a0@
 4997 L3573:
 4998 	movel d2,d0
 4999 	movel a6@(-4),d2
 5000 	unlk a6
 5001 	rts
 5002 .globl _RXwhite
 5003 .data
 5004 	.even
 5005 _RXwhite:
============ Listing of String.s ============	PAGE 92

 5006 	.skip 8
 5007 .globl _RXint
 5008 	.even
 5009 _RXint:
 5010 	.skip 8
 5011 .globl _RXdouble
 5012 	.even
 5013 _RXdouble:
 5014 	.skip 8
 5015 .globl _RXalpha
 5016 	.even
 5017 _RXalpha:
 5018 	.skip 8
 5019 .globl _RXlowercase
 5020 	.even
 5021 _RXlowercase:
 5022 	.skip 8
 5023 .globl _RXuppercase
 5024 	.even
 5025 _RXuppercase:
 5026 	.skip 8
 5027 .globl _RXalphanum
 5028 	.even
 5029 _RXalphanum:
 5030 	.skip 8
 5031 .globl _RXidentifier
 5032 	.even
 5033 _RXidentifier:
 5034 	.skip 8
 5035 .stabs "_fini",10,0,0,0
 5036 .stabs "__GLOBAL_$D$String_cc",4,0,0,0
 5037 .text
 5038 	.even
 5039 .globl __GLOBAL_$D$String_cc
 5040 __GLOBAL_$D$String_cc:
 5041 	link a6,#0
 5042 	moveml #0x2020,sp@-
 5043 	clrl sp@-
 5044 	pea _RXidentifier
 5045 	lea __$_Regex,a2
 5046 	jbsr a2@
 5047 	addqw #8,sp
 5048 	clrl sp@-
 5049 	pea _RXalphanum
 5050 	jbsr a2@
 5051 	addqw #8,sp
 5052 	clrl sp@-
 5053 	pea _RXuppercase
 5054 	jbsr a2@
 5055 	addqw #8,sp
 5056 	clrl sp@-
 5057 	pea _RXlowercase
 5058 	jbsr a2@
 5059 	addqw #8,sp
 5060 	clrl sp@-
============ Listing of String.s ============	PAGE 93

 5061 	pea _RXalpha
 5062 	jbsr a2@
 5063 	addqw #8,sp
 5064 	clrl sp@-
 5065 	pea _RXdouble
 5066 	jbsr a2@
 5067 	addqw #8,sp
 5068 	clrl sp@-
 5069 	pea _RXint
 5070 	jbsr a2@
 5071 	addqw #8,sp
 5072 	clrl sp@-
 5073 	pea _RXwhite
 5074 	jbsr a2@
 5075 	addqw #8,sp
 5076 	lea __nilString,a2
 5077 	clrl d2
 5078 	cmpl #__nilStrRep,a2@
 5079 	jeq L3595
 5080 	movel a2@,sp@-
 5081 	jbsr ___builtin_delete
 5082 	addqw #4,sp
 5083 L3595:
 5084 	tstl d2
 5085 	jeq L3592
 5086 	movel a2,sp@-
 5087 	jbsr ___builtin_delete
 5088 L3592:
 5089 	moveml a6@(-8),#0x404
 5090 	unlk a6
 5091 	rts
 5092 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$String_cc
 5093 .stabs "_init",10,0,0,0
 5094 .stabs "__GLOBAL_$I$String_cc",4,0,0,0
 5095 LC6:
 5096 	.ascii "[ \12\11\15\13\14]+\0"
 5097 LC7:
 5098 	.ascii "-?[0-9]+\0"
 5099 LC8:
 5100 	.ascii "-?\\(\\([0-9]+\\.[0-9]*\\)\\|\\([0-9]+\\)\\|\\(\\.[0-9]+\\)\\)\\([eE][---+]?[0-9]+\\)?\0"
 5101 LC9:
 5102 	.ascii "[A-Za-z]+\0"
 5103 LC10:
 5104 	.ascii "[a-z]+\0"
 5105 LC11:
 5106 	.ascii "[A-Z]+\0"
 5107 LC12:
 5108 	.ascii "[0-9A-Za-z]+\0"
 5109 LC13:
 5110 	.ascii "[A-Za-z_][A-Za-z0-9_]*\0"
 5111 	.even
 5112 .globl __GLOBAL_$I$String_cc
 5113 __GLOBAL_$I$String_cc:
 5114 	link a6,#0
 5115 	moveml #0x3020,sp@-
============ Listing of String.s ============	PAGE 94

 5116 	movel #__nilStrRep,__nilString
 5117 	moveq #1,d2
 5118 	moveq #40,d3
 5119 	clrl sp@-
 5120 	movel d3,sp@-
 5121 	movel d2,sp@-
 5122 	pea -1:w
 5123 	pea LC6
 5124 	pea _RXwhite
 5125 	lea _initialize__5RegexPCciiiT0,a2
 5126 	jbsr a2@
 5127 	addw #24,sp
 5128 	clrl sp@-
 5129 	movel d3,sp@-
 5130 	movel d2,sp@-
 5131 	pea -1:w
 5132 	pea LC7
 5133 	pea _RXint
 5134 	jbsr a2@
 5135 	addw #24,sp
 5136 	clrl sp@-
 5137 	pea 200:w
 5138 	movel d2,sp@-
 5139 	pea -1:w
 5140 	pea LC8
 5141 	pea _RXdouble
 5142 	jbsr a2@
 5143 	addw #24,sp
 5144 	clrl sp@-
 5145 	movel d3,sp@-
 5146 	movel d2,sp@-
 5147 	pea -1:w
 5148 	pea LC9
 5149 	pea _RXalpha
 5150 	jbsr a2@
 5151 	addw #24,sp
 5152 	clrl sp@-
 5153 	movel d3,sp@-
 5154 	movel d2,sp@-
 5155 	pea -1:w
 5156 	pea LC10
 5157 	pea _RXlowercase
 5158 	jbsr a2@
 5159 	addw #24,sp
 5160 	clrl sp@-
 5161 	movel d3,sp@-
 5162 	movel d2,sp@-
 5163 	pea -1:w
 5164 	pea LC11
 5165 	pea _RXuppercase
 5166 	jbsr a2@
 5167 	addw #24,sp
 5168 	clrl sp@-
 5169 	movel d3,sp@-
 5170 	movel d2,sp@-
============ Listing of String.s ============	PAGE 95

 5171 	pea -1:w
 5172 	pea LC12
 5173 	pea _RXalphanum
 5174 	jbsr a2@
 5175 	addw #24,sp
 5176 	clrl sp@-
 5177 	movel d3,sp@-
 5178 	movel d2,sp@-
 5179 	pea -1:w
 5180 	pea LC13
 5181 	pea _RXidentifier
 5182 	jbsr a2@
 5183 	moveml a6@(-12),#0x40c
 5184 	unlk a6
 5185 	rts
 5186 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$String_cc

============ Listing Complete ============
============ Listing of builtin.cc ============ 	PAGE 1


    1 /* 
    2 Copyright (C) 1988 Free Software Foundation
    3     written by Doug Lea (dl@rocky.oswego.edu)
    4 
    5 This file is part of GNU CC.
    6 
    7 GNU CC is distributed in the hope that it will be useful,
    8 but WITHOUT ANY WARRANTY.  No author or distributor
    9 accepts responsibility to anyone for the consequences of using it
   10 or for whether it serves any particular purpose or works at all,
   11 unless he says so in writing.  Refer to the GNU CC General Public
   12 License for full details.
   13 
   14 Everyone is granted permission to copy, modify and redistribute
   15 GNU CC, but only under the conditions described in the
   16 GNU CC General Public License.   A copy of this license is
   17 supposed to have been given to you along with GNU CC so you
   18 can know your rights and responsibilities.  It should be in a
   19 file named COPYING.  Among other things, the copyright notice
   20 and this notice must be preserved on all copies.  
   21 */
   22 
   23 #include <builtin.h>
   24 #include <math.h>
   25 #include <stdio.h>
   26 #include <stdarg.h>
   27 #include <values.h>
   28 #include <Obstack.h>
   29 #include <AllocQueue.h>
   30 #include <float.h>
   31 
   32 /*
   33  common functions on built-in types
   34 */
   35 
   36 long gcd(long x, long y)        // euclid's algorithm
   37 {
   38   long a = abs(x);
   39   long b = abs(y);
   40 
   41   long tmp;
   42   
   43   if (b > a)
   44   {
   45     tmp = a; a = b; b = tmp;
   46   }
   47   for(;;)
   48   {
   49     if (b == 0)
   50       return a;
   51     else if (b == 1)
   52       return b;
   53     else
   54     {
   55       tmp = b;
============ Listing of builtin.cc ============	PAGE 2

   56       b = a % b;
   57       a = tmp;
   58     }
   59   }
   60 }
   61 
   62 double pow(double x, long p)
   63 {
   64   if (p == 0)
   65     return (x < 0 && (p & 1)) ? -1.0 : 1.0;
   66   else if (x == 0.0)
   67     return 0.0;
   68   else
   69   {
   70     double b;
   71     if (p < 0)
   72     {
   73       p = -p;
   74       b = 1.0 / x;
   75     }
   76     else
   77       b = x;
   78     double r = 1.0;
   79     for(;;)
   80     {
   81       if (p & 1)
   82         r *= b;
   83       if ((p >>= 1) == 0)
   84         return r;
   85       else
   86         b *= b;
   87     }
   88   }
   89 }
   90 
   91 long lg(long x)
   92 {
   93   long l = 0;
   94   unsigned long a = abs(x);
   95 
   96   while (a > 1)
   97   {
   98     a = a >> 1;
   99     ++l;
  100   }
  101   return l;
  102 }
  103 
  104 long  pow(long  x, long y)
  105 {
  106   if (x == 0)
  107     return (y == 0)? 1 : 0;
  108   else if (y < 0)
  109     return 0;
  110   else if (y == 0 || x == 1)
============ Listing of builtin.cc ============	PAGE 3

  111     return  1;
  112   else if (x == -1)
  113     return (y & 1)? -1 : 1;
  114   else
  115   {
  116     long r = 1;
  117     for(;;)
  118     {
  119       if (y & 1)
  120         r *= x;
  121       if ((y >>= 1) == 0)
  122         return r;
  123       else
  124         x *= x;
  125     }
  126   }
  127 }
  128 
  129 long sqrt(long x)
  130 {
  131   if (x <= 0)
  132     return 0;                   // no int error handler, so ...
  133   else if (x == 1)
  134     return 1;
  135   else
  136   {
  137     long r = x >> 1;
  138     long q;
  139     for(;;)
  140     {
  141       q = x / r;
  142       if (q >= r)
  143         return r;
  144       else
  145         r = (r + q) >> 1;
  146     }
  147   }
  148 }
  149 
  150 
  151 // Obstacks are used as an easy way to allocate enough space
  152 // for various input operations
  153 
  154 
  155 Obstack _libgxx_io_ob;
  156 char* _libgxx_io_oblast = 0;
  157 
  158     
  159 // AllocQueues are used for output operations
  160 // We guaranteee that the last _libgxx_maxfmt formats
  161 // will be intact
  162 
  163 static const int _libgxx_maxfmt = 20;
  164 AllocQueue _libgxx_fmtq(_libgxx_maxfmt);
  165 
============ Listing of builtin.cc ============	PAGE 4

  166 char* form(const char* fmt ...)
  167 {
  168   va_list args;
  169   va_start(args, fmt);
  170   char* fmtbase = _libgxx_fmtq.alloc(BUFSIZ);
  171 #ifndef HAVE_VPRINTF
  172   FILE b;
  173   b._flag = _IOWRT|_IOSTRG;
  174   b._ptr = fmtbase;
  175   b._cnt = BUFSIZ-1;
  176   _doprnt(fmt, args, &b);
  177   putc('\0', &b);
  178 #else
  179   vsprintf(fmtbase, fmt, args);
  180 #endif
  181   va_end(args);
  182   return fmtbase;
  183 }
  184 
  185 char* itoa(long x, int base = 10, int width = 0)
  186 {
  187   int wrksiz;
  188   if (base == 10)
  189     wrksiz = width + 13;
  190   else
  191     wrksiz = (BITS(long) + 1) / lg(base) + 1 + width + 1;
  192 
  193   char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
  194   char* e = fmtbase + wrksiz - 1;
  195   char* s = e;
  196   *--s = 0;
  197   char sgn = 0;
  198 
  199   if (x == 0)
  200     *--s = '0';
  201   else
  202   {
  203     int z;
  204     if (x < 0)
  205     {
  206       sgn = '-';
  207       z = -x;
  208     }
  209     else
  210       z = x;
  211     while (z != 0)
  212     {
  213       char ch = char(z % base);
  214       z = z / base;
  215       if (ch >= 10)
  216         ch += 'a' - 10;
  217       else
  218         ch += '0';
  219       *--s = ch;
  220     }
============ Listing of builtin.cc ============	PAGE 5

  221   }
  222 
  223   if (sgn) *--s = sgn;
  224   int w = e - s - 1;
  225   while (w++ < width)
  226     *--s = ' ';
  227   return s;
  228 }
  229 
  230 char* itoa(unsigned long x,  int base = 10, int width = 0)
  231 {
  232   int wrksiz;
  233   if (base == 10)
  234     wrksiz = width + 13;
  235   else
  236     wrksiz = (BITS(long) + 1) / lg(base) + 1 + width + 1;
  237 
  238   char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
  239   char* e = fmtbase + wrksiz - 1;
  240   char* s = e;
  241   *--s = 0;
  242 
  243   if (x == 0)
  244     *--s = '0';
  245   else
  246   {
  247     unsigned int b = base;
  248     while (x != 0)
  249     {
  250       char ch = char(x % b);
  251       x = x / b;
  252       if (ch >= 10)
  253         ch += 'a' - 10;
  254       else
  255         ch += '0';
  256       *--s = ch;
  257     }
  258   }
  259 
  260   int w = e - s - 1;
  261   while (w++ < width)
  262     *--s = ' ';
  263   return s;
  264 }
  265 
  266 char* itoa(long long x, int base = 10, int width = 0)
  267 {
  268   int wrksiz;
  269   if (base == 10)
  270     wrksiz = width + 23;
  271   else
  272     wrksiz = (BITS(long long) + 1) / lg(base) + 1 + width + 1;
  273 
  274   char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
  275   char* e = fmtbase + wrksiz - 1;
============ Listing of builtin.cc ============	PAGE 6

  276   char* s = e;
  277   *--s = 0;
  278   char sgn = 0;
  279 
  280   if (x == 0)
  281     *--s = '0';
  282   else
  283   {
  284     long long z;
  285     if (x < 0)
  286     {
  287       sgn = '-';
  288       z = -x;
  289     }
  290     else
  291       z = x;
  292     while (z != 0)
  293     {
  294       char ch = char(z % base);
  295       z = z / base;
  296       if (ch >= 10)
  297         ch += 'a' - 10;
  298       else
  299         ch += '0';
  300       *--s = ch;
  301     }
  302   }
  303 
  304   if (sgn) *--s = sgn;
  305   int w = e - s - 1;
  306   while (w++ < width)
  307     *--s = ' ';
  308   return s;
  309 }
  310 
  311 char* itoa(unsigned long long x,  int base = 10, int width = 0)
  312 {
  313   int wrksiz;
  314   if (base == 10)
  315     wrksiz = width + 23;
  316   else
  317     wrksiz = (BITS(long long) + 1) / lg(base) + 1 + width + 1;
  318 
  319   char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
  320   char* e = fmtbase + wrksiz - 1;
  321   char* s = e;
  322   *--s = 0;
  323 
  324   if (x == 0)
  325     *--s = '0';
  326   else
  327   {
  328     unsigned int b = base;
  329     while (x != 0)
  330     {
============ Listing of builtin.cc ============	PAGE 7

  331       char ch = char(x % b);
  332       x = x / b;
  333       if (ch >= 10)
  334         ch += 'a' - 10;
  335       else
  336         ch += '0';
  337       *--s = ch;
  338     }
  339   }
  340 
  341   int w = e - s - 1;
  342   while (w++ < width)
  343     *--s = ' ';
  344   return s;
  345 }
  346 
  347 char* hex(long i, int width = 0)
  348 {
  349   return itoa(i, 16, width);
  350 }
  351 
  352 char* oct(long i, int width = 0)
  353 {
  354   return itoa(i, 8, width);
  355 }
  356 
  357 char* dec(long i, int width = 0)
  358 {
  359   return itoa(i, 10, width);
  360 }
  361 
  362 char* hex(unsigned long i, int width = 0)
  363 {
  364   return itoa(i, 16, width);
  365 }
  366 
  367 char* oct(unsigned long i, int width = 0)
  368 {
  369   return itoa(i, 8, width);
  370 }
  371 
  372 char* dec(unsigned long i, int width = 0)
  373 {
  374   return itoa(i, 10, width);
  375 }
  376 
  377 
  378 char* dtoa(double fpnum,  char cvt = 'g', int width = 0, int prec = 6)
  379 {
  380   // set up workspace
  381 
  382   const int worksiz = DBL_DIG + DBL_MAX_10_EXP + 2; // max possible digits
  383 
  384   // for fractional part
  385   char  fwork[worksiz];
============ Listing of builtin.cc ============	PAGE 8

  386   char* fworkend = &fwork[sizeof(fwork) - 1];
  387   char* fw = fwork;
  388 
  389   // for integer part
  390   char  iwork[worksiz];
  391   char* iworkend = &iwork[sizeof(iwork) - 1];
  392   char* iw = iworkend;
  393   *iw = 0;
  394 
  395   // for exponent part
  396   const int eworksiz = 30;
  397   char  ework[eworksiz];
  398   char* eworkend = &ework[sizeof(ework) - 1];
  399   char* ew = eworkend;
  400   *ew = 0;
  401 
  402   // grab sign & make non-negative
  403   int is_neg = fpnum < 0;
  404   if (is_neg) fpnum = -fpnum;
  405 
  406   // precision matters
  407 
  408   if (prec > worksiz - 2) // can't have more prec than supported
  409     prec = worksiz - 2;
  410   
  411   double powprec;
  412   if (prec == 6)
  413     powprec = 1.0e6;
  414   else
  415     powprec = pow(10.0, prec);
  416 
  417   double rounder = 0.5 / powprec;
  418 
  419   int f_fmt = cvt == 'f' ||
  420     ((cvt == 'g') && (fpnum == 0.0 || (fpnum >= 1e-4 && fpnum < powprec)));
  421 
  422   int iwidth = 0;
  423   int fwidth = 0;
  424   int ewidth = 0;
  425 
  426   if (f_fmt)  // fixed format
  427   {
  428     double ipart;
  429     double fpart = modf(fpnum, &ipart);
  430 
  431     // convert fractional part
  432 
  433     if (fpart >= rounder || cvt != 'g')
  434     {
  435       fpart += rounder;
  436       if (fpart >= 1.0)
  437       {
  438         ipart += 1.0;
  439         fpart -= 1.0;
  440       }
============ Listing of builtin.cc ============	PAGE 9

  441       double ffpart = fpart;
  442       double ifpart;
  443       for (int i = 0; i < prec; ++i)
  444       {
  445         ffpart = modf(ffpart * 10.0, &ifpart);
  446         *fw++ = '0' + int(ifpart);
  447         ++fwidth;
  448       }
  449       if (cvt == 'g')  // inhibit trailing zeroes if g-fmt
  450       {
  451         for (char* p = fw - 1; p >= fwork && *p == '0'; --p)
  452         {
  453           *p = 0;
  454           --fwidth;
  455         }
  456       }
  457     }
  458 
  459     // convert integer part
  460     if (ipart == 0.0)
  461     {
  462       if (cvt != 'g' || fwidth < prec || fwidth < width)
  463       {
  464         *--iw = '0'; ++iwidth;
  465       }
  466     }
  467     else if (ipart <= double(MAXLONG)) // a useful speedup
  468     {
  469       long li = long(ipart);
  470       while (li != 0)
  471       {
  472         *--iw = '0' + (li % 10);
  473         li = li / 10;
  474         ++iwidth;
  475       }
  476     }
  477     else // the slow way
  478     {
  479       while (ipart > 0.5)
  480       {
  481         double ff = modf(ipart / 10.0, &ipart);
  482         ff = (ff + 0.05) * 10.0;
  483         *--iw = '0' + int(ff);
  484         ++iwidth;
  485       }
  486     }
  487 
  488     // g-fmt: kill part of frac if prec/width exceeded
  489     if (cvt == 'g')
  490     {
  491       int m = prec;
  492       if (m < width)
  493         m = width;
  494       int adj = iwidth + fwidth - m;
  495       if (adj > fwidth)
============ Listing of builtin.cc ============	PAGE 10

  496         adj = fwidth;
  497       if (adj > 0)
  498       {
  499         int carry = 0;
  500         for (char* f = &fwork[fwidth-1]; f >= fwork && adj > 0; --adj, --f)
  501         {
  502           --fwidth;
  503           char ch = *f;
  504           *f = 0;
  505           if (ch > '5') // properly round: unavoidable propagation
  506           {
  507             int carry = 1;
  508             for (char* p = f - 1; p >= fwork && carry; --p)
  509             {
  510               ++*p;
  511               if (*p > '9')
  512                 *p = '0';
  513               else
  514                 carry = 0;
  515             }
  516             if (carry)
  517             {
  518               for (p = iworkend - 1; p >= iw && carry; --p)
  519               {
  520                 ++*p;
  521                 if (*p > '9')
  522                   *p = '0';
  523                 else
  524                   carry = 0;
  525               }
  526               if (carry)
  527               {
  528                 *--iw = '1';
  529                 ++iwidth;
  530                 --adj;
  531               }
  532             }
  533           }
  534         }
  535       }
  536     }
  537               
  538   }
  539   else  // e-fmt
  540   {
  541     
  542     // normalize
  543     int exp = 0;
  544     while (fpnum >= 10.0)
  545     {
  546       fpnum *= 0.1;
  547       ++exp;
  548     }
  549     while (fpnum > 0.0 && fpnum < 1.0)
  550     {
============ Listing of builtin.cc ============	PAGE 11

  551       fpnum *= 10.0;
  552       --exp;
  553     }
  554     
  555     double ipart;
  556     double fpart = modf(fpnum, &ipart);
  557 
  558 
  559     if (cvt == 'g')     // used up one digit for int part...
  560     {
  561       --prec;
  562       powprec /= 10.0;
  563       rounder = 0.5 / powprec;
  564     }
  565 
  566     // convert fractional part -- almost same as above
  567     if (fpart >= rounder || cvt != 'g')
  568     {
  569       fpart += rounder;
  570       if (fpart >= 1.0)
  571       {
  572         fpart -= 1.0;
  573         ipart += 1.0;
  574         if (ipart >= 10.0)
  575         {
  576           ++exp;
  577           ipart /= 10.0;
  578           fpart /= 10.0;
  579         }
  580       }
  581       double ffpart = fpart;
  582       double ifpart;
  583       for (int i = 0; i < prec; ++i)
  584       {
  585         ffpart = modf(ffpart * 10.0, &ifpart);
  586         *fw++ = '0' + int(ifpart);
  587         ++fwidth;
  588       }
  589       if (cvt == 'g')  // inhibit trailing zeroes if g-fmt
  590       {
  591         for (char* p = fw - 1; p >= fwork && *p == '0'; --p)
  592         {
  593           *p = 0;
  594           --fwidth;
  595         }
  596       }
  597     }
  598 
  599     
  600     // convert exponent
  601 
  602     char eneg = exp < 0;
  603     if (eneg) exp = - exp;
  604 
  605     while (exp > 0)
============ Listing of builtin.cc ============	PAGE 12

  606     {
  607       *--ew = '0' + (exp % 10);
  608       exp /= 10;
  609       ++ewidth;
  610     }
  611 
  612     while (ewidth < 2)  // ensure at least 2 zeroes
  613     {
  614       *--ew = '0';
  615       ++ewidth;
  616     }
  617 
  618     *--ew = eneg ? '-' : '+';
  619     *--ew = 'e';
  620 
  621     ewidth += 2;
  622 
  623     // convert the one-digit integer part
  624     *--iw = '0' + int(ipart);
  625     ++iwidth;
  626     
  627   }
  628 
  629   // arrange everything in returned string
  630 
  631   int showdot = cvt != 'g' || fwidth > 0;
  632 
  633   int fmtwidth = is_neg + iwidth + showdot + fwidth + ewidth;
  634   
  635   int pad = width - fmtwidth;
  636   if (pad < 0) pad = 0;
  637   
  638   char* fmtbase = _libgxx_fmtq.alloc(fmtwidth + pad + 1);
  639   char* fmt = fmtbase;
  640   
  641   for (int i = 0; i < pad; ++i) *fmt++ = ' ';
  642   
  643   if (is_neg) *fmt++ = '-';
  644   
  645   for (i = 0; i < iwidth; ++i) *fmt++ = *iw++;
  646   
  647   if (showdot)
  648   {
  649     *fmt++ = '.';
  650     fw = fwork;
  651     for (i = 0; i < fwidth; ++i) *fmt++ = *fw++;
  652   }
  653   
  654   for (i = 0; i < ewidth; ++i) *fmt++ = *ew++;
  655   
  656   *fmt = 0;
  657   
  658   return fmtbase;
  659 }
  660 
============ Listing of builtin.cc ============	PAGE 13

  661 
  662 static char chr_buf[2];   // fixed slot to hold chr(ch)
  663 
  664 char* chr(char ch)
  665 {
  666   chr_buf[0] = ch;
  667   chr_buf[1] = 0;
  668   return chr_buf;
  669 }
  670 
  671 char* str(const char* s, int width = 0)
  672 {
  673   int len = strlen(s);
  674   int wrksiz = len + width;
  675   char* fmtbase = _libgxx_fmtq.alloc(wrksiz);
  676   char* fmt = fmtbase;
  677   for (int blanks = width - len; blanks > 0; --blanks)
  678    *fmt++ = ' ';
  679   while (*s != 0) 
  680     *fmt++ = *s++;
  681   *fmt = 0;
  682   return fmtbase;
  683 }
  684 
  685 /*
  686  some useful hash functions
  687 */
  688 
  689 unsigned int hashpjw(const char* x) // From Dragon book, p436
  690 {
  691   unsigned int h = 0;
  692   unsigned int g;
  693 
  694   while (*x != 0)
  695   {
  696     h = (h << 4) + *x++;
  697     if ((g = h & 0xf0000000) != 0)
  698       h = (h ^ (g >> 24)) ^ g;
  699   }
  700   return h;
  701 }
  702 
  703 unsigned int multiplicativehash(int x)
  704 {
  705   // uses a const close to golden ratio * pow(2,32)
  706   return ((unsigned)x) * 2654435767;
  707 }
  708 
  709 
  710 unsigned int foldhash(double x)
  711 {
  712   union { unsigned int i[2]; double d; } u;
  713   u.d = x;
  714   unsigned int u0 = u.i[0];
  715   unsigned int u1 = u.i[1]; 
============ Listing of builtin.cc ============	PAGE 14

  716   return u0 ^ u1;
  717 }
  718 
  719 void default_one_arg_error_handler(const char* msg)
  720 {
  721   fputs("Error: ", stderr);
  722   fputs(msg, stderr);
  723   fputs("\n", stderr);
  724   abort();
  725 }
  726 
  727 
  728 void default_two_arg_error_handler(const char* kind, const char* msg)
  729 {
  730   fputs(kind, stderr);
  731   fputs(" Error: ", stderr);
  732   fputs(msg, stderr);
  733   fputs("\n", stderr);
  734   abort();
  735 }
  736 
  737 two_arg_error_handler_t lib_error_handler = default_two_arg_error_handler;
  738 
  739 two_arg_error_handler_t set_lib_error_handler(two_arg_error_handler_t f)
  740 {
  741   two_arg_error_handler_t old = lib_error_handler;
  742   lib_error_handler = f;
  743   return old;
  744 }
  745 
  746 
  747 // from Doug Schmidt...
  748 
  749 /* no such thing as "negative time"! */
  750 #define  TIMER_ERROR_VALUE -1.0   
  751 
  752 // surely OK for these machines...
  753 
  754 #if defined(BSD) || defined(USG) || defined(vax) || defined(sun)
  755 
  756 #ifdef USG
  757 extern "C" {
  758 #include <sys/types.h>
  759 #include <sys/param.h>
  760 #include <sys/times.h>
  761 }
  762 #else
  763 #include <osfcn.h>
  764 #endif
  765 
  766 #ifdef USG
  767 static struct tms Old_Time;
  768 static struct tms New_Time;
  769 #else
  770 static struct rusage Old_Time;
============ Listing of builtin.cc ============	PAGE 15

  771 static struct rusage New_Time;
  772 #endif
  773 static int    Timer_Set = 0;
  774 
  775 double start_timer()
  776 {
  777    Timer_Set = 1;
  778 #ifdef USG
  779    times(&Old_Time);
  780    return((double) Old_Time.tms_utime / HZ);
  781 #else
  782    getrusage(RUSAGE_SELF,&Old_Time);        /* set starting process time */
  783    return(Old_Time.ru_utime.tv_sec + (Old_Time.ru_utime.tv_usec / 1000000.0));
  784 #endif
  785 }
  786 
  787 /* returns process time since Last_Time (if parameter is not DEFAULT_TIME, */
  788 /* i.e., (double) 0.0 ),otherwise, if parameter == DEFAULT_TIME then       */
  789 /* the time since the Old_Time was set is returned. */
  790 /* Returns TIMER_ERROR_VALUE   */
  791 /* if Start_Timer() is not called first */
  792 
  793 double return_elapsed_time(double Last_Time)
  794 {
  795    if (!Timer_Set) {
  796       return(TIMER_ERROR_VALUE);
  797    }   
  798    else {
  799     /* get process time */
  800 #ifdef USG
  801       times(&New_Time);
  802 #else
  803       getrusage(RUSAGE_SELF,&New_Time);
  804 #endif
  805       if (Last_Time == 0.0) {
  806 #ifdef USG
  807 	 return((double) (New_Time.tms_utime - Old_Time.tms_utime) / HZ);
  808 #else
  809          return((New_Time.ru_utime.tv_sec - Old_Time.ru_utime.tv_sec) + 
  810                ((New_Time.ru_utime.tv_usec - Old_Time.ru_utime.tv_usec) 
  811                 / 1000000.0));
  812 #endif
  813       }
  814       else {
  815 #ifdef USG
  816 	 return((double) New_Time.tms_utime / HZ - Last_Time);
  817 #else
  818          return((New_Time.ru_utime.tv_sec + 
  819                 (New_Time.ru_utime.tv_usec / 1000000.0)) - Last_Time);
  820 #endif
  821       }
  822    }
  823 }
  824 
  825 #else /* dummy them out */
============ Listing of builtin.cc ============	PAGE 16

  826 double start_timer()
  827 {
  828   return TIMER_ERROR_VALUE;
  829 }
  830 
  831 double return_elapsed_time(double)
  832 {
  833   return TIMER_ERROR_VALUE;
  834 }
  835 
  836 #endif
  837 
  838 
  839 #ifndef NO_GNULIB3
  840 // from tiemann
  841 
  842 /* Needed, in case there are no other objects which
  843    need static initialization and cleanup.  */
  844 struct __xyzzy__
  845 {
  846   __xyzzy__ () {}
  847   ~__xyzzy__ () {}
  848 } __1xyzzy__;
  849 
  850 #endif

============ Listing Complete ============
============ Listing of builtin.s ============ 	PAGE 1


    1 #NO_APP
    2 gcc_compiled.:
    3 .text
    4 	.even
    5 .globl _gcd__Fll
    6 _gcd__Fll:
    7 	link a6,#0
    8 	moveml #0x3000,sp@-
    9 	movel a6@(8),d0
   10 	movel a6@(12),d2
   11 	tstl d0
   12 	jge L283
   13 	negl d0
   14 L283:
   15 	movel d0,d1
   16 	tstl d2
   17 	jge L286
   18 	movel d2,d0
   19 	negl d0
   20 	jra L287
   21 L286:
   22 	movel d2,d0
   23 L287:
   24 	cmpl d0,d1
   25 	jge L288
   26 	movel d1,d2
   27 	movel d0,d1
   28 	movel d2,d0
   29 L288:
   30 L289:
   31 	tstl d0
   32 	jne L292
   33 	movel d1,d0
   34 	jra L281
   35 L292:
   36 	moveq #1,d3
   37 	cmpl d0,d3
   38 	jeq L294
   39 	movel d0,d2
   40 	divsll d0,d0:d1
   41 	movel d2,d1
   42 	jra L289
   43 L294:
   44 L281:
   45 	moveml a6@(-8),#0xc
   46 	unlk a6
   47 	rts
   48 	.even
   49 .globl _pow__Fdl
   50 _pow__Fdl:
   51 	link a6,#0
   52 	fmovem #0x4,sp@-
   53 	fmoved a6@(8),fp0
   54 	movel a6@(16),d0
   55 	jne L297
============ Listing of builtin.s ============	PAGE 2

   56 	ftstx fp0
   57 	fjnlt L298
   58 	btst #0,d0
   59 	jeq L298
   60 	movel #-1074790400,d0
   61 	clrl d1
   62 	jra L296
   63 L298:
   64 	movel #1072693248,d0
   65 	clrl d1
   66 	jra L296
   67 L297:
   68 	ftstx fp0
   69 	fjne L301
   70 	clrl d0
   71 	clrl d1
   72 	jra L296
   73 L301:
   74 	tstl d0
   75 	jge L303
   76 	negl d0
   77 	fmovecr #0x32,fp2
   78 	fdivx fp0,fp2
   79 	fmovex fp2,fp0
   80 L303:
   81 	fmovecr #0x32,fp1
   82 L305:
   83 	btst #0,d0
   84 	jeq L308
   85 	fmulx fp0,fp1
   86 L308:
   87 	asrl #1,d0
   88 	jeq L309
   89 	fmulx fp0,fp0
   90 	jra L305
   91 L309:
   92 	fmoved fp1,sp@-
   93 	movel sp@+,d0
   94 	movel sp@+,d1
   95 L296:
   96 	fmovem a6@(-12),#0x20
   97 	unlk a6
   98 	rts
   99 	.even
  100 .globl _lg__Fl
  101 _lg__Fl:
  102 	link a6,#0
  103 	movel d2,sp@-
  104 	movel a6@(8),d0
  105 	clrl d1
  106 	tstl d0
  107 	jge L319
  108 	negl d0
  109 	jra L319
  110 L317:
============ Listing of builtin.s ============	PAGE 3

  111 	lsrl #1,d0
  112 	addql #1,d1
  113 L319:
  114 	moveq #1,d2
  115 	cmpl d0,d2
  116 	jcs L317
  117 	movel d1,d0
  118 	movel a6@(-4),d2
  119 	unlk a6
  120 	rts
  121 	.even
  122 .globl _pow__Fll
  123 _pow__Fll:
  124 	link a6,#0
  125 	moveml #0x3000,sp@-
  126 	movel a6@(8),d0
  127 	movel a6@(12),d1
  128 	tstl d0
  129 	jne L321
  130 	tstl d1
  131 	jeq L331
  132 	jra L340
  133 L321:
  134 	tstl d1
  135 	jge L325
  136 L340:
  137 	clrl d0
  138 	jra L320
  139 L325:
  140 	tstl d1
  141 	jeq L331
  142 	moveq #1,d3
  143 	cmpl d0,d3
  144 	jeq L331
  145 	moveq #-1,d3
  146 	cmpl d0,d3
  147 	jne L330
  148 	btst #0,d1
  149 	jeq L331
  150 	moveq #-1,d0
  151 	jra L320
  152 L331:
  153 	moveq #1,d0
  154 	jra L320
  155 L330:
  156 	moveq #1,d2
  157 L334:
  158 	btst #0,d1
  159 	jeq L337
  160 	mulsl d0,d2
  161 L337:
  162 	asrl #1,d1
  163 	jeq L338
  164 	mulsl d0,d0
  165 	jra L334
============ Listing of builtin.s ============	PAGE 4

  166 L338:
  167 	movel d2,d0
  168 L320:
  169 	moveml a6@(-8),#0xc
  170 	unlk a6
  171 	rts
  172 	.even
  173 .globl _sqrt__Fl
  174 _sqrt__Fl:
  175 	link a6,#0
  176 	moveml #0x3000,sp@-
  177 	movel a6@(8),d2
  178 	jgt L342
  179 	clrl d0
  180 	jra L341
  181 L342:
  182 	moveq #1,d3
  183 	cmpl d2,d3
  184 	jne L344
  185 	moveq #1,d0
  186 	jra L341
  187 L344:
  188 	movel d2,d0
  189 L351:
  190 	asrl #1,d0
  191 	movel d2,d1
  192 	divsl d0,d1
  193 	cmpl d1,d0
  194 	jle L341
  195 	addl d1,d0
  196 	jra L351
  197 L341:
  198 	moveml a6@(-8),#0xc
  199 	unlk a6
  200 	rts
  201 .globl __libgxx_io_ob
  202 .data
  203 	.even
  204 __libgxx_io_ob:
  205 	.skip 24
  206 .globl __libgxx_io_oblast
  207 	.even
  208 __libgxx_io_oblast:
  209 	.long 0
  210 .globl __libgxx_fmtq
  211 	.even
  212 __libgxx_fmtq:
  213 	.skip 12
  214 .text
  215 	.even
  216 .globl _form__FPCce
  217 _form__FPCce:
  218 	link a6,#0
  219 	moveml #0x3000,sp@-
  220 	moveq #12,d2
============ Listing of builtin.s ============	PAGE 5

  221 	addl a6,d2
  222 	pea 1024:w
  223 	pea __libgxx_fmtq
  224 	jbsr _alloc__10AllocQueuei
  225 	movel d0,d3
  226 	movel d2,sp@-
  227 	movel a6@(8),sp@-
  228 	movel d3,sp@-
  229 	jbsr _vsprintf
  230 	movel d3,d0
  231 	moveml a6@(-8),#0xc
  232 	unlk a6
  233 	rts
  234 	.even
  235 .globl _itoa__Flii
  236 _itoa__Flii:
  237 	link a6,#0
  238 	moveml #0x3e30,sp@-
  239 	movel a6@(8),d5
  240 	movel a6@(12),d4
  241 	movel a6@(16),a3
  242 	moveq #10,d6
  243 	cmpl d4,d6
  244 	jne L354
  245 	lea a3@(13),a2
  246 	jra L355
  247 L354:
  248 	movel d4,sp@-
  249 	jbsr _lg__Fl
  250 	moveq #33,d1
  251 	divsl d0,d1
  252 	lea a3@(2,d1:l),a2
  253 	addqw #4,sp
  254 L355:
  255 	movel a2,sp@-
  256 	pea __libgxx_fmtq
  257 	jbsr _alloc__10AllocQueuei
  258 	movel d0,a0
  259 	lea a2@(-1,a0:l),a0
  260 	movel a0,d3
  261 	clrb a0@-
  262 	clrb d2
  263 	tstl d5
  264 	jne L356
  265 	moveb #48,a0@-
  266 	jra L357
  267 L356:
  268 	tstl d5
  269 	jge L358
  270 	moveb #45,d2
  271 	movel d5,d0
  272 	negl d0
  273 	jra L370
  274 L358:
  275 	movel d5,d0
============ Listing of builtin.s ============	PAGE 6

  276 	jra L370
  277 L364:
  278 	divsll d4,d1:d0
  279 	cmpb #9,d1
  280 	jle L362
  281 	addb #87,d1
  282 	jra L363
  283 L362:
  284 	addb #48,d1
  285 L363:
  286 	moveb d1,a0@-
  287 L370:
  288 	tstl d0
  289 	jne L364
  290 L357:
  291 	tstb d2
  292 	jeq L365
  293 	moveb d2,a0@-
  294 L365:
  295 	movel d3,d1
  296 	subl a0,d1
  297 	subql #1,d1
  298 	jra L366
  299 L368:
  300 	moveb #32,a0@-
  301 L366:
  302 	movel d1,d0
  303 	addql #1,d1
  304 	cmpl d0,a3
  305 	jgt L368
  306 	movel a0,d0
  307 	moveml a6@(-28),#0xc7c
  308 	unlk a6
  309 	rts
  310 	.even
  311 .globl _itoa__FUlii
  312 _itoa__FUlii:
  313 	link a6,#0
  314 	moveml #0x3c30,sp@-
  315 	movel a6@(8),d2
  316 	movel a6@(12),d3
  317 	movel a6@(16),a3
  318 	moveq #10,d5
  319 	cmpl d3,d5
  320 	jne L372
  321 	lea a3@(13),a2
  322 	jra L373
  323 L372:
  324 	movel d3,sp@-
  325 	jbsr _lg__Fl
  326 	moveq #33,d1
  327 	divsl d0,d1
  328 	lea a3@(2,d1:l),a2
  329 	addqw #4,sp
  330 L373:
============ Listing of builtin.s ============	PAGE 7

  331 	movel a2,sp@-
  332 	pea __libgxx_fmtq
  333 	jbsr _alloc__10AllocQueuei
  334 	movel d0,a0
  335 	lea a2@(-1,a0:l),a0
  336 	movel a0,d4
  337 	clrb a0@-
  338 	tstl d2
  339 	jne L385
  340 	moveb #48,a0@-
  341 	jra L375
  342 L380:
  343 	movel d2,d0
  344 	divull d3,d1:d0
  345 	movel d0,d2
  346 	cmpb #9,d1
  347 	jle L378
  348 	addb #87,d1
  349 	jra L379
  350 L378:
  351 	addb #48,d1
  352 L379:
  353 	moveb d1,a0@-
  354 L385:
  355 	tstl d2
  356 	jne L380
  357 L375:
  358 	movel d4,d1
  359 	subl a0,d1
  360 	subql #1,d1
  361 	jra L381
  362 L383:
  363 	moveb #32,a0@-
  364 L381:
  365 	movel d1,d0
  366 	addql #1,d1
  367 	cmpl d0,a3
  368 	jgt L383
  369 	movel a0,d0
  370 	moveml a6@(-24),#0xc3c
  371 	unlk a6
  372 	rts
  373 	.even
  374 .globl _itoa__Fxii
  375 _itoa__Fxii:
  376 	link a6,#0
  377 	moveml #0x3f3c,sp@-
  378 	movel a6@(8),a4
  379 	movel a6@(12),a5
  380 	movel a6@(16),d5
  381 	movel a6@(20),a3
  382 	moveq #10,d4
  383 	cmpl d5,d4
  384 	jne L387
  385 	lea a3@(23),a2
============ Listing of builtin.s ============	PAGE 8

  386 	jra L388
  387 L387:
  388 	movel d5,sp@-
  389 	jbsr _lg__Fl
  390 	moveq #65,d1
  391 	divsl d0,d1
  392 	lea a3@(2,d1:l),a2
  393 	addqw #4,sp
  394 L388:
  395 	movel a2,sp@-
  396 	pea __libgxx_fmtq
  397 	jbsr _alloc__10AllocQueuei
  398 	movel d0,a0
  399 	lea a2@(-1,a0:l),a2
  400 	movel a2,d7
  401 	clrb a2@-
  402 	clrb d6
  403 	addqw #8,sp
  404 	clrl d3
  405 	clrl d4
  406 	movel d4,sp@-
  407 	movel d3,sp@-
  408 	movel a5,sp@-
  409 	movel a4,sp@-
  410 	jbsr ___cmpdi2
  411 	addw #16,sp
  412 	moveq #1,d4
  413 	cmpl d0,d4
  414 	jne L389
  415 	moveb #48,a2@-
  416 	jra L390
  417 L389:
  418 	clrl d3
  419 	clrl d4
  420 	movel d4,sp@-
  421 	movel d3,sp@-
  422 	movel a5,sp@-
  423 	movel a4,sp@-
  424 	jbsr ___cmpdi2
  425 	addw #16,sp
  426 	moveq #1,d4
  427 	cmpl d0,d4
  428 	jle L393
  429 	moveb #45,d6
  430 	movel a5,sp@-
  431 	movel a4,sp@-
  432 	jbsr ___negdi2
  433 	addqw #8,sp
  434 	movel d0,a4
  435 	movel d1,a5
  436 	jra L393
  437 L399:
  438 	clrl d1
  439 	movel d5,d0
  440 	jge L395
============ Listing of builtin.s ============	PAGE 9

  441 	notl d1
  442 L395:
  443 	movel d1,sp@-
  444 	movel d0,sp@-
  445 	movel a5,sp@-
  446 	movel a4,sp@-
  447 	jbsr ___moddi3
  448 	addw #16,sp
  449 	moveb d0,d2
  450 	clrl d1
  451 	movel d5,d0
  452 	jge L396
  453 	notl d1
  454 L396:
  455 	movel d1,sp@-
  456 	movel d0,sp@-
  457 	movel a5,sp@-
  458 	movel a4,sp@-
  459 	jbsr ___divdi3
  460 	addw #16,sp
  461 	movel d0,a4
  462 	movel d1,a5
  463 	cmpb #9,d2
  464 	jle L397
  465 	addb #87,d2
  466 	jra L398
  467 L397:
  468 	addb #48,d2
  469 L398:
  470 	moveb d2,a2@-
  471 L393:
  472 	clrl d3
  473 	clrl d4
  474 	movel d4,sp@-
  475 	movel d3,sp@-
  476 	movel a5,sp@-
  477 	movel a4,sp@-
  478 	jbsr ___cmpdi2
  479 	addw #16,sp
  480 	moveq #1,d4
  481 	cmpl d0,d4
  482 	jne L399
  483 L390:
  484 	tstb d6
  485 	jeq L400
  486 	moveb d6,a2@-
  487 L400:
  488 	movel d7,d1
  489 	subl a2,d1
  490 	subql #1,d1
  491 	jra L401
  492 L403:
  493 	moveb #32,a2@-
  494 L401:
  495 	movel d1,d0
============ Listing of builtin.s ============	PAGE 10

  496 	addql #1,d1
  497 	cmpl d0,a3
  498 	jgt L403
  499 	movel a2,d0
  500 	moveml a6@(-40),#0x3cfc
  501 	unlk a6
  502 	rts
  503 	.even
  504 .globl _itoa__FUxii
  505 _itoa__FUxii:
  506 	link a6,#0
  507 	moveml #0x3f3c,sp@-
  508 	movel a6@(8),a4
  509 	movel a6@(12),a5
  510 	movel a6@(16),d2
  511 	movel a6@(20),a3
  512 	moveq #10,d5
  513 	cmpl d2,d5
  514 	jne L405
  515 	lea a3@(23),a2
  516 	jra L406
  517 L405:
  518 	movel d2,sp@-
  519 	jbsr _lg__Fl
  520 	moveq #65,d1
  521 	divsl d0,d1
  522 	lea a3@(2,d1:l),a2
  523 	addqw #4,sp
  524 L406:
  525 	movel a2,sp@-
  526 	pea __libgxx_fmtq
  527 	jbsr _alloc__10AllocQueuei
  528 	movel d0,a0
  529 	lea a2@(-1,a0:l),a2
  530 	movel a2,d7
  531 	clrb a2@-
  532 	addqw #8,sp
  533 	clrl d5
  534 	clrl d6
  535 	movel d6,sp@-
  536 	movel d5,sp@-
  537 	movel a5,sp@-
  538 	movel a4,sp@-
  539 	jbsr ___ucmpdi2
  540 	addw #16,sp
  541 	moveq #1,d5
  542 	cmpl d0,d5
  543 	jne L407
  544 	moveb #48,a2@-
  545 	jra L408
  546 L407:
  547 	movel d2,d3
  548 	jra L409
  549 L413:
  550 	movel d3,d0
============ Listing of builtin.s ============	PAGE 11

  551 	clrl d1
  552 	movel d1,sp@-
  553 	movel d0,sp@-
  554 	movel a5,sp@-
  555 	movel a4,sp@-
  556 	jbsr ___umoddi3
  557 	addw #16,sp
  558 	moveb d0,d2
  559 	movel d3,d0
  560 	clrl d1
  561 	movel d1,sp@-
  562 	movel d0,sp@-
  563 	movel a5,sp@-
  564 	movel a4,sp@-
  565 	jbsr ___udivdi3
  566 	addw #16,sp
  567 	movel d0,a4
  568 	movel d1,a5
  569 	cmpb #9,d2
  570 	jle L411
  571 	addb #87,d2
  572 	jra L412
  573 L411:
  574 	addb #48,d2
  575 L412:
  576 	moveb d2,a2@-
  577 L409:
  578 	clrl d5
  579 	clrl d6
  580 	movel d6,sp@-
  581 	movel d5,sp@-
  582 	movel a5,sp@-
  583 	movel a4,sp@-
  584 	jbsr ___ucmpdi2
  585 	addw #16,sp
  586 	moveq #1,d5
  587 	cmpl d0,d5
  588 	jne L413
  589 L408:
  590 	movel d7,d1
  591 	subl a2,d1
  592 	subql #1,d1
  593 	jra L414
  594 L416:
  595 	moveb #32,a2@-
  596 L414:
  597 	movel d1,d0
  598 	addql #1,d1
  599 	cmpl d0,a3
  600 	jgt L416
  601 	movel a2,d0
  602 	moveml a6@(-40),#0x3cfc
  603 	unlk a6
  604 	rts
  605 	.even
============ Listing of builtin.s ============	PAGE 12

  606 .globl _hex__Fli
  607 _hex__Fli:
  608 	link a6,#0
  609 	movel a6@(12),sp@-
  610 	pea 16:w
  611 	movel a6@(8),sp@-
  612 	jbsr _itoa__Flii
  613 	unlk a6
  614 	rts
  615 	.even
  616 .globl _oct__Fli
  617 _oct__Fli:
  618 	link a6,#0
  619 	movel a6@(12),sp@-
  620 	pea 8:w
  621 	movel a6@(8),sp@-
  622 	jbsr _itoa__Flii
  623 	unlk a6
  624 	rts
  625 	.even
  626 .globl _dec__Fli
  627 _dec__Fli:
  628 	link a6,#0
  629 	movel a6@(12),sp@-
  630 	pea 10:w
  631 	movel a6@(8),sp@-
  632 	jbsr _itoa__Flii
  633 	unlk a6
  634 	rts
  635 	.even
  636 .globl _hex__FUli
  637 _hex__FUli:
  638 	link a6,#0
  639 	movel a6@(12),sp@-
  640 	pea 16:w
  641 	movel a6@(8),sp@-
  642 	jbsr _itoa__FUlii
  643 	unlk a6
  644 	rts
  645 	.even
  646 .globl _oct__FUli
  647 _oct__FUli:
  648 	link a6,#0
  649 	movel a6@(12),sp@-
  650 	pea 8:w
  651 	movel a6@(8),sp@-
  652 	jbsr _itoa__FUlii
  653 	unlk a6
  654 	rts
  655 	.even
  656 .globl _dec__FUli
  657 _dec__FUli:
  658 	link a6,#0
  659 	movel a6@(12),sp@-
  660 	pea 10:w
============ Listing of builtin.s ============	PAGE 13

  661 	movel a6@(8),sp@-
  662 	jbsr _itoa__FUlii
  663 	unlk a6
  664 	rts
  665 	.even
  666 .globl _dtoa__Fdcii
  667 _dtoa__Fdcii:
  668 	link a6,#-724
  669 	fmovem #0x3c,sp@-
  670 	moveml #0x3f3c,sp@-
  671 	fmoved a6@(8),fp2
  672 	moveb a6@(19),d6
  673 	movel a6@(24),d3
  674 	lea a6@(-326),a2
  675 	lea a6@(-328),a4
  676 	movel a4,a6@(-722)
  677 	clrb a4@
  678 	lea a6@(-653),a5
  679 	clrb a5@
  680 	ftstx fp2
  681 	fslt d0
  682 	moveq #1,d7
  683 	andl d7,d0
  684 	movel d0,a6@(-718)
  685 	jeq L424
  686 	fnegx fp2,fp2
  687 L424:
  688 	cmpl #323,d3
  689 	jle L425
  690 	movel #323,d3
  691 L425:
  692 	moveq #6,d7
  693 	cmpl d3,d7
  694 	jne L426
  695 	fmoved #0r1000000,fp1
  696 	jra L427
  697 L426:
  698 	movel d3,sp@-
  699 	clrl sp@-
  700 	movel #1076101120,sp@-
  701 	jbsr _pow__Fdl
  702 	movel d1,sp@-
  703 	movel d0,sp@-
  704 	fmoved sp@+,fp1
  705 	addw #12,sp
  706 L427:
  707 	fmoved #0r.5,fp3
  708 	fdivx fp1,fp3
  709 	clrl d0
  710 	cmpb #102,d6
  711 	jeq L429
  712 	cmpb #103,d6
  713 	jne L428
  714 	ftstx fp2
  715 	fjeq L429
============ Listing of builtin.s ============	PAGE 14

  716 	fcmpd #0r0.00010000000000000000479,fp2
  717 	fjnge L428
  718 	fcmpx fp1,fp2
  719 	fjnlt L428
  720 L429:
  721 	moveq #1,d0
  722 L428:
  723 	clrl d4
  724 	subl a3,a3
  725 	clrl d5
  726 	tstl d0
  727 	jeq L430
  728 #APP
  729 	fintrzx fp2,fp0
  730 #NO_APP
  731 	fmoved fp0,a6@(-690)
  732 	fsubx fp0,fp2
  733 	fmovex fp2,fp0
  734 	fcmpx fp3,fp0
  735 	fjge L433
  736 	cmpb #103,d6
  737 	jeq L432
  738 L433:
  739 	faddx fp3,fp0
  740 	fmovecr #0x32,fp4
  741 	fcmpx fp4,fp0
  742 	fjnge L434
  743 	fmovecr #0x32,fp4
  744 	faddd a6@(-690),fp4
  745 	fmoved fp4,a6@(-690)
  746 	fmovecr #0x32,fp4
  747 	fsubx fp4,fp0
  748 L434:
  749 	fmovex fp0,fp1
  750 	clrl d1
  751 	cmpl d1,d3
  752 	jle L546
  753 	lea a6@(-698),a0
  754 L439:
  755 	fmovecr #0x33,fp0
  756 	fmulx fp1,fp0
  757 #APP
  758 	fintrzx fp0,fp1
  759 #NO_APP
  760 	fmoved fp1,a0@
  761 	fsubx fp1,fp0
  762 	fmovex fp0,fp1
  763 	fintrzd a6@(-698),fp0
  764 	fmovel fp0,d0
  765 	addb #48,d0
  766 	moveb d0,a2@+
  767 	addqw #1,a3
  768 	addql #1,d1
  769 	cmpl d1,d3
  770 	jgt L439
============ Listing of builtin.s ============	PAGE 15

  771 L546:
  772 	cmpb #103,d6
  773 	jne L432
  774 	lea a2@(-1),a0
  775 	movel a6,d0
  776 	addl #-326,d0
  777 	jra L441
  778 L444:
  779 	cmpb #48,a0@
  780 	jne L432
  781 	clrb a0@
  782 	subqw #1,a3
  783 	subqw #1,a0
  784 L441:
  785 	cmpl a0,d0
  786 	jls L444
  787 L432:
  788 	ftstd a6@(-690)
  789 	fjne L445
  790 	cmpb #103,d6
  791 	jne L447
  792 	cmpl a3,d3
  793 	jgt L447
  794 	cmpl a6@(20),a3
  795 	jge L448
  796 L447:
  797 	moveb #48,a4@-
  798 	addql #1,d4
  799 	jra L448
  800 L445:
  801 	fmoved a6@(-690),fp4
  802 	fcmpd #0r2147483647,fp4
  803 	fjnle L449
  804 	fintrzd a6@(-690),fp0
  805 	fmovel fp0,d0
  806 	tstl d0
  807 	jeq L448
  808 L452:
  809 	moveq #10,d7
  810 	divsll d7,d1:d0
  811 	addb #48,d1
  812 	moveb d1,a4@-
  813 	addql #1,d4
  814 	tstl d0
  815 	jne L452
  816 	jra L448
  817 L449:
  818 	fmoved a6@(-690),fp4
  819 	fcmpd #0r.5,fp4
  820 	fjngt L448
  821 	lea a6@(-690),a0
  822 L457:
  823 	fmoved a6@(-690),fp0
  824 	fmovecr #0x33,fp4
  825 	fdivx fp4,fp0
============ Listing of builtin.s ============	PAGE 16

  826 #APP
  827 	fintrzx fp0,fp1
  828 #NO_APP
  829 	fmoved fp1,a0@
  830 	fsubx fp1,fp0
  831 	faddd #0r0.050000000000000002776,fp0
  832 	fmovecr #0x33,fp4
  833 	fmulx fp4,fp0
  834 	fintrzx fp0,fp0
  835 	fmovel fp0,d0
  836 	addb #48,d0
  837 	moveb d0,a4@-
  838 	addql #1,d4
  839 	fmoved a6@(-690),fp4
  840 	fcmpd #0r.5,fp4
  841 	fjgt L457
  842 L448:
  843 	cmpb #103,d6
  844 	jne L481
  845 	movel d3,d0
  846 	cmpl a6@(20),d3
  847 	jge L459
  848 	movel a6@(20),d0
  849 L459:
  850 	movel d4,d1
  851 	addl a3,d1
  852 	subl d0,d1
  853 	cmpl d1,a3
  854 	jge L460
  855 	movel a3,d1
  856 L460:
  857 	tstl d1
  858 	jle L481
  859 	lea a6@(-326),a0
  860 	lea a0@(-1,a3:l),a1
  861 	movel a6,d2
  862 	addl #-326,d2
  863 	jra L462
  864 L480:
  865 	tstl d1
  866 	jle L481
  867 	subqw #1,a3
  868 	moveb a1@,d0
  869 	clrb a1@
  870 	cmpb #53,d0
  871 	jle L464
  872 	moveq #1,d0
  873 	lea a1@(-1),a0
  874 	jra L466
  875 L471:
  876 	tstl d0
  877 	jeq L467
  878 	addqb #1,a0@
  879 	cmpb #57,a0@
  880 	jle L469
============ Listing of builtin.s ============	PAGE 17

  881 	moveb #48,a0@
  882 	jra L468
  883 L469:
  884 	clrl d0
  885 L468:
  886 	subqw #1,a0
  887 L466:
  888 	cmpl a0,d2
  889 	jls L471
  890 L467:
  891 	tstl d0
  892 	jeq L464
  893 	movel a6@(-722),a0
  894 	jra L475
  895 L478:
  896 	tstl d0
  897 	jeq L474
  898 	addqb #1,a0@
  899 	cmpb #57,a0@
  900 	jle L476
  901 	moveb #48,a0@
  902 	jra L475
  903 L476:
  904 	clrl d0
  905 L475:
  906 	subqw #1,a0
  907 	cmpl a0,a4
  908 	jls L478
  909 L474:
  910 	tstl d0
  911 	jeq L464
  912 	moveb #49,a4@-
  913 	addql #1,d4
  914 	subql #1,d1
  915 L464:
  916 	subql #1,d1
  917 	subqw #1,a1
  918 L462:
  919 	cmpl a1,d2
  920 	jls L480
  921 	jra L481
  922 L430:
  923 	clrl d2
  924 	fmovecr #0x33,fp4
  925 	fcmpx fp4,fp2
  926 	fjnge L542
  927 L484:
  928 	fmuld #0r.10000000000000000555,fp2
  929 	addql #1,d2
  930 	fmovecr #0x33,fp4
  931 	fcmpx fp4,fp2
  932 	fjge L484
  933 L542:
  934 	ftstx fp2
  935 	fjngt L486
============ Listing of builtin.s ============	PAGE 18

  936 L487:
  937 	fmovecr #0x32,fp4
  938 	fcmpx fp4,fp2
  939 	fjnlt L486
  940 	fmovecr #0x33,fp4
  941 	fmulx fp4,fp2
  942 	subql #1,d2
  943 	ftstx fp2
  944 	fjgt L487
  945 L486:
  946 #APP
  947 	fintrzx fp2,fp0
  948 #NO_APP
  949 	fmoved fp0,a6@(-706)
  950 	fsubx fp0,fp2
  951 	fmovex fp2,fp0
  952 	cmpb #103,d6
  953 	jne L489
  954 	subql #1,d3
  955 	fmovecr #0x33,fp4
  956 	fdivx fp4,fp1
  957 	fmoved #0r.5,fp3
  958 	fdivx fp1,fp3
  959 L489:
  960 	fcmpx fp3,fp0
  961 	fjge L491
  962 	cmpb #103,d6
  963 	jeq L490
  964 L491:
  965 	faddx fp3,fp0
  966 	fmovecr #0x32,fp4
  967 	fcmpx fp4,fp0
  968 	fjnge L492
  969 	fmovecr #0x32,fp4
  970 	fsubx fp4,fp0
  971 	fmovecr #0x32,fp4
  972 	faddd a6@(-706),fp4
  973 	fmoved fp4,a6@(-706)
  974 	fmovecr #0x33,fp4
  975 	fcmpd a6@(-706),fp4
  976 	fjnle L492
  977 	addql #1,d2
  978 	fmoved a6@(-706),fp4
  979 	fmovecr #0x33,fp5
  980 	fdivx fp5,fp4
  981 	fmoved fp4,a6@(-706)
  982 	fmovecr #0x33,fp4
  983 	fdivx fp4,fp0
  984 L492:
  985 	fmovex fp0,fp1
  986 	clrl d1
  987 	cmpl d1,d3
  988 	jle L540
  989 	lea a6@(-714),a0
  990 L498:
============ Listing of builtin.s ============	PAGE 19

  991 	fmovecr #0x33,fp0
  992 	fmulx fp1,fp0
  993 #APP
  994 	fintrzx fp0,fp1
  995 #NO_APP
  996 	fmoved fp1,a0@
  997 	fsubx fp1,fp0
  998 	fmovex fp0,fp1
  999 	fintrzd a6@(-714),fp0
 1000 	fmovel fp0,d0
 1001 	addb #48,d0
 1002 	moveb d0,a2@+
 1003 	addqw #1,a3
 1004 	addql #1,d1
 1005 	cmpl d1,d3
 1006 	jgt L498
 1007 L540:
 1008 	cmpb #103,d6
 1009 	jne L490
 1010 	lea a2@(-1),a0
 1011 	movel a6,d0
 1012 	addl #-326,d0
 1013 	jra L500
 1014 L503:
 1015 	cmpb #48,a0@
 1016 	jne L490
 1017 	clrb a0@
 1018 	subqw #1,a3
 1019 	subqw #1,a0
 1020 L500:
 1021 	cmpl a0,d0
 1022 	jls L503
 1023 L490:
 1024 	tstl d2
 1025 	slt d3
 1026 	andb #1,d3
 1027 	jeq L547
 1028 	negl d2
 1029 	jra L547
 1030 L507:
 1031 	movel d2,d0
 1032 	moveq #10,d7
 1033 	divsll d7,d1:d0
 1034 	addb #48,d1
 1035 	moveb d1,a5@-
 1036 	movel d0,d2
 1037 	addql #1,d5
 1038 L547:
 1039 	tstl d2
 1040 	jgt L507
 1041 	jra L548
 1042 L510:
 1043 	moveb #48,a5@-
 1044 	addql #1,d5
 1045 L548:
============ Listing of builtin.s ============	PAGE 20

 1046 	moveq #1,d7
 1047 	cmpl d5,d7
 1048 	jge L510
 1049 	subqw #1,a5
 1050 	tstb d3
 1051 	jeq L511
 1052 	moveb #45,d0
 1053 	jra L512
 1054 L511:
 1055 	moveb #43,d0
 1056 L512:
 1057 	moveb d0,a5@
 1058 	moveb #101,a5@-
 1059 	addql #2,d5
 1060 	fintrzd a6@(-706),fp0
 1061 	fmovel fp0,d0
 1062 	addb #48,d0
 1063 	moveb d0,a4@-
 1064 	addql #1,d4
 1065 L481:
 1066 	clrl d0
 1067 	cmpb #103,d6
 1068 	jne L514
 1069 	tstl a3
 1070 	jle L513
 1071 L514:
 1072 	moveq #1,d0
 1073 L513:
 1074 	movel d0,d2
 1075 	movel a6@(-718),a0
 1076 	addl d4,a0
 1077 	addl d2,a0
 1078 	addl a3,a0
 1079 	addl d5,a0
 1080 	movel a6@(20),a2
 1081 	subl a0,a2
 1082 	tstl a2
 1083 	jge L515
 1084 	subl a2,a2
 1085 L515:
 1086 	pea a2@(1,a0:l)
 1087 	pea __libgxx_fmtq
 1088 	jbsr _alloc__10AllocQueuei
 1089 	movel d0,d1
 1090 	movel d1,a0
 1091 	clrl d0
 1092 	cmpl d0,a2
 1093 	jle L537
 1094 L519:
 1095 	moveb #32,a0@+
 1096 	addql #1,d0
 1097 	cmpl d0,a2
 1098 	jgt L519
 1099 L537:
 1100 	tstl a6@(-718)
============ Listing of builtin.s ============	PAGE 21

 1101 	jeq L520
 1102 	moveb #45,a0@+
 1103 L520:
 1104 	clrl d0
 1105 	cmpl d0,d4
 1106 	jle L536
 1107 L524:
 1108 	moveb a4@+,a0@+
 1109 	addql #1,d0
 1110 	cmpl d0,d4
 1111 	jgt L524
 1112 L536:
 1113 	tstl d2
 1114 	jeq L525
 1115 	moveb #46,a0@+
 1116 	lea a6@(-326),a2
 1117 	clrl d0
 1118 	cmpl d0,a3
 1119 	jle L525
 1120 L529:
 1121 	moveb a2@+,a0@+
 1122 	addql #1,d0
 1123 	cmpl d0,a3
 1124 	jgt L529
 1125 L525:
 1126 	clrl d0
 1127 	cmpl d0,d5
 1128 	jle L534
 1129 L533:
 1130 	moveb a5@+,a0@+
 1131 	addql #1,d0
 1132 	cmpl d0,d5
 1133 	jgt L533
 1134 L534:
 1135 	clrb a0@
 1136 	movel d1,d0
 1137 	moveml a6@(-812),#0x3cfc
 1138 	fmovem a6@(-772),#0x3c
 1139 	unlk a6
 1140 	rts
 1141 	.even
 1142 .globl _chr__Fc
 1143 _chr__Fc:
 1144 	link a6,#0
 1145 	lea _chr_buf,a0
 1146 	moveb a6@(11),a0@
 1147 	clrb a0@(1)
 1148 	movel a0,d0
 1149 	unlk a6
 1150 	rts
 1151 	.even
 1152 .globl _str__FPCci
 1153 _str__FPCci:
 1154 	link a6,#0
 1155 	moveml #0x38,sp@-
============ Listing of builtin.s ============	PAGE 22

 1156 	movel a6@(8),a4
 1157 	movel a6@(12),a2
 1158 	movel a4,sp@-
 1159 	jbsr _strlen
 1160 	movel d0,a3
 1161 	pea a2@(a3:l)
 1162 	pea __libgxx_fmtq
 1163 	jbsr _alloc__10AllocQueuei
 1164 	movel d0,d1
 1165 	movel d1,a0
 1166 	movel a2,d0
 1167 	subl a3,d0
 1168 	tstl d0
 1169 	jle L560
 1170 L554:
 1171 	moveb #32,a0@+
 1172 	subql #1,d0
 1173 	tstl d0
 1174 	jgt L554
 1175 	jra L560
 1176 L557:
 1177 	moveb a4@+,a0@+
 1178 L560:
 1179 	tstb a4@
 1180 	jne L557
 1181 	clrb a0@
 1182 	movel d1,d0
 1183 	moveml a6@(-12),#0x1c00
 1184 	unlk a6
 1185 	rts
 1186 	.even
 1187 .globl _hashpjw__FPCc
 1188 _hashpjw__FPCc:
 1189 	link a6,#0
 1190 	moveml #0x3000,sp@-
 1191 	movel a6@(8),a0
 1192 	clrl d2
 1193 L567:
 1194 	tstb a0@
 1195 	jeq L566
 1196 	movel d2,d0
 1197 	lsll #4,d0
 1198 	moveb a0@+,d1
 1199 	extbl d1
 1200 	movel d0,d2
 1201 	addl d1,d2
 1202 	movel d2,d1
 1203 	andl #-268435456,d1
 1204 	jeq L567
 1205 	movel d1,d0
 1206 	moveq #24,d3
 1207 	lsrl d3,d0
 1208 	eorl d2,d0
 1209 	movel d0,d2
 1210 	eorl d1,d2
============ Listing of builtin.s ============	PAGE 23

 1211 	jra L567
 1212 L566:
 1213 	movel d2,d0
 1214 	moveml a6@(-8),#0xc
 1215 	unlk a6
 1216 	rts
 1217 	.even
 1218 .globl _multiplicativehash__Fi
 1219 _multiplicativehash__Fi:
 1220 	link a6,#0
 1221 	movel a6@(8),d0
 1222 	mulsl #-1640531529,d0
 1223 	unlk a6
 1224 	rts
 1225 	.even
 1226 .globl _foldhash__Fd
 1227 _foldhash__Fd:
 1228 	link a6,#0
 1229 	movel a6@(8),d0
 1230 	movel a6@(12),d1
 1231 	eorl d1,d0
 1232 	unlk a6
 1233 	rts
 1234 LC0:
 1235 	.ascii "Error: \0"
 1236 LC1:
 1237 	.ascii "\12\0"
 1238 	.even
 1239 .globl _default_one_arg_error_handler__FPCc
 1240 _default_one_arg_error_handler__FPCc:
 1241 	link a6,#0
 1242 	moveml #0x2020,sp@-
 1243 	movel #__iob+40,d2
 1244 	movel d2,sp@-
 1245 	pea LC0
 1246 	lea _fputs,a2
 1247 	jbsr a2@
 1248 	movel d2,sp@-
 1249 	movel a6@(8),sp@-
 1250 	jbsr a2@
 1251 	movel d2,sp@-
 1252 	pea LC1
 1253 	jbsr a2@
 1254 	jbsr _abort
 1255 	moveml a6@(-8),#0x404
 1256 	unlk a6
 1257 	rts
 1258 LC2:
 1259 	.ascii " Error: \0"
 1260 	.even
 1261 .globl _default_two_arg_error_handler__FPCcT0
 1262 _default_two_arg_error_handler__FPCcT0:
 1263 	link a6,#0
 1264 	moveml #0x2020,sp@-
 1265 	movel #__iob+40,d2
============ Listing of builtin.s ============	PAGE 24

 1266 	movel d2,sp@-
 1267 	movel a6@(8),sp@-
 1268 	lea _fputs,a2
 1269 	jbsr a2@
 1270 	movel d2,sp@-
 1271 	pea LC2
 1272 	jbsr a2@
 1273 	movel d2,sp@-
 1274 	movel a6@(12),sp@-
 1275 	jbsr a2@
 1276 	movel d2,sp@-
 1277 	pea LC1
 1278 	jbsr a2@
 1279 	addw #32,sp
 1280 	jbsr _abort
 1281 	moveml a6@(-8),#0x404
 1282 	unlk a6
 1283 	rts
 1284 .globl _lib_error_handler
 1285 .data
 1286 	.even
 1287 _lib_error_handler:
 1288 	.long _default_two_arg_error_handler__FPCcT0
 1289 .text
 1290 	.even
 1291 .globl _set_lib_error_handler__FPFPCcPCc_v
 1292 _set_lib_error_handler__FPFPCcPCc_v:
 1293 	link a6,#0
 1294 	movel _lib_error_handler,d0
 1295 	movel a6@(8),_lib_error_handler
 1296 	unlk a6
 1297 	rts
 1298 .data
 1299 	.even
 1300 _Timer_Set:
 1301 	.long 0
 1302 .text
 1303 	.even
 1304 .globl _start_timer__Fv
 1305 _start_timer__Fv:
 1306 	link a6,#0
 1307 	movel d2,sp@-
 1308 	moveq #1,d2
 1309 	movel d2,_Timer_Set
 1310 	pea _Old_Time
 1311 	clrl sp@-
 1312 	jbsr _getrusage
 1313 	lea _Old_Time,a0
 1314 	fmovel a0@+,fp0
 1315 	fmovel a0@,fp1
 1316 	fdivd #0r1000000,fp1
 1317 	faddx fp1,fp0
 1318 	fmoved fp0,sp@-
 1319 	movel sp@+,d0
 1320 	movel sp@+,d1
============ Listing of builtin.s ============	PAGE 25

 1321 	movel a6@(-4),d2
 1322 	unlk a6
 1323 	rts
 1324 	.even
 1325 .globl _return_elapsed_time__Fd
 1326 _return_elapsed_time__Fd:
 1327 	link a6,#0
 1328 	fmovem #0x4,sp@-
 1329 	fmoved a6@(8),fp2
 1330 	tstl _Timer_Set
 1331 	jne L575
 1332 	movel #-1074790400,d0
 1333 	clrl d1
 1334 	jra L574
 1335 L575:
 1336 	pea _New_Time
 1337 	clrl sp@-
 1338 	jbsr _getrusage
 1339 	ftstx fp2
 1340 	fjne L577
 1341 	lea _New_Time,a0
 1342 	lea _Old_Time,a1
 1343 	movel a0@+,d0
 1344 	subl a1@+,d0
 1345 	fmovel d0,fp0
 1346 	movel a0@,d0
 1347 	subl a1@,d0
 1348 	fmovel d0,fp1
 1349 	fdivd #0r1000000,fp1
 1350 	faddx fp1,fp0
 1351 	jra L579
 1352 L577:
 1353 	lea _New_Time,a0
 1354 	fmovel a0@+,fp0
 1355 	fmovel a0@,fp1
 1356 	fdivd #0r1000000,fp1
 1357 	faddx fp1,fp0
 1358 	fsubx fp2,fp0
 1359 L579:
 1360 	fmoved fp0,sp@-
 1361 	movel sp@+,d0
 1362 	movel sp@+,d1
 1363 L574:
 1364 	fmovem a6@(-12),#0x20
 1365 	unlk a6
 1366 	rts
 1367 .globl ___1xyzzy__
 1368 .data
 1369 	.even
 1370 ___1xyzzy__:
 1371 	.skip 1
 1372 #.stabs "_fini",10,0,0,0
 1373 #.stabs "__GLOBAL_$D$builtin_cc",4,0,0,0
 1374 .text
 1375 	.even
============ Listing of builtin.s ============	PAGE 26

 1376 .globl __GLOBAL_$D$builtin_cc
 1377 __GLOBAL_$D$builtin_cc:
 1378 	link a6,#0
 1379 	clrl sp@-
 1380 	pea __libgxx_fmtq
 1381 	jbsr __$_AllocQueue
 1382 	addqw #8,sp
 1383 	clrl sp@-
 1384 	pea __libgxx_io_ob
 1385 	jbsr __free__7ObstackPv
 1386 	unlk a6
 1387 	rts
 1388 #.stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$builtin_cc
 1389 #.stabs "_init",10,0,0,0
 1390 #.stabs "__GLOBAL_$I$builtin_cc",4,0,0,0
 1391 	.even
 1392 .globl __GLOBAL_$I$builtin_cc
 1393 __GLOBAL_$I$builtin_cc:
 1394 	link a6,#0
 1395 	pea 4:w
 1396 	pea 4092:w
 1397 	pea __libgxx_io_ob
 1398 	jbsr ___7Obstackii
 1399 	pea 20:w
 1400 	pea __libgxx_fmtq
 1401 	jbsr ___10AllocQueuei
 1402 	unlk a6
 1403 	rts
 1404 #.stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$builtin_cc
 1405 .lcomm _New_Time,72
 1406 .lcomm _Old_Time,72
 1407 .lcomm _chr_buf,2

============ Listing Complete ============
============ Listing of stream.cc ============ 	PAGE 1


    1 // This may look like C code, but it is really -*- C++ -*-
    2 /* 
    3 Copyright (C) 1989 Free Software Foundation
    4     written by Doug Lea (dl@rocky.oswego.edu)
    5 
    6 This file is part of GNU CC.
    7 
    8 GNU CC is distributed in the hope that it will be useful,
    9 but WITHOUT ANY WARRANTY.  No author or distributor
   10 accepts responsibility to anyone for the consequences of using it
   11 or for whether it serves any particular purpose or works at all,
   12 unless he says so in writing.  Refer to the GNU CC General Public
   13 License for full details.
   14 
   15 Everyone is granted permission to copy, modify and redistribute
   16 GNU CC, but only under the conditions described in the
   17 GNU CC General Public License.   A copy of this license is
   18 supposed to have been given to you along with GNU CC so you
   19 can know your rights and responsibilities.  It should be in a
   20 file named COPYING.  Among other things, the copyright notice
   21 and this notice must be preserved on all copies.  
   22 */
   23 
   24 /* *** Version 1.2 -- nearly 100% AT&T 1.2 compatible *** */
   25 
   26 #include <stream.h>
   27 #include <stdarg.h>
   28 #include <values.h>
   29 #include <ctype.h>
   30 #include <Obstack.h>
   31 
   32 ostream::ostream(streambuf* s)
   33      : bp(s), state(_good), ownbuf(0) {}
   34 
   35 ostream::ostream(int sz, char* buf)
   36      : state(_good), ownbuf(1)
   37 {
   38   if (buf == 0) 
   39   {
   40     buf = new char[sz];
   41     bp = new streambuf(buf, sz);
   42     bp->setbuf(buf, sz);
   43     bp->alloc = 1;
   44   }
   45   else
   46   {
   47     bp = new streambuf(buf, sz);
   48     bp->alloc = 0;
   49   }
   50 }
   51 
   52 
   53 ostream::ostream(const char* filename, io_mode m, access_mode a)
   54      : state(_good), ownbuf(1)
   55 {
============ Listing of stream.cc ============	PAGE 2

   56   bp = new Filebuf(filename, m, a);
   57 }
   58 
   59 ostream::ostream(const char* filename, const char* m)
   60      : state(_good), ownbuf(1)
   61 {
   62   bp = new Filebuf(filename, m);
   63 }
   64 
   65 ostream::ostream(int filedesc, io_mode m)
   66      : state(_good), ownbuf(1)
   67 {
   68   bp = new Filebuf(filedesc, m);
   69 }
   70 
   71 ostream::ostream(FILE* fileptr)
   72      : state(_good), ownbuf(1)
   73 {
   74   bp = new Filebuf(fileptr);
   75 }
   76 
   77 ostream::ostream(int filedesc)
   78      : state(_good), ownbuf(1)
   79 {
   80   bp = new filebuf(filedesc);
   81 }
   82 
   83 ostream::ostream(int filedesc, char* buf, int buflen)
   84      : state(_good), ownbuf(1)
   85 {
   86   bp = new filebuf(filedesc, buf, buflen);
   87 }
   88 
   89 ostream::~ostream()
   90 {
   91   if (ownbuf) delete bp;
   92 }
   93 
   94 ostream&  ostream::open(const char* filename, io_mode m, access_mode a)
   95 {
   96   return failif(bp->open(filename, m, a) == 0);
   97 }
   98 
   99 ostream&  ostream::open(const char* filename, const char* m)
  100 {
  101   return failif(bp->open(filename, m) == 0);
  102 }
  103 
  104 ostream&  ostream::open(int  filedesc, io_mode m)
  105 {
  106   return failif(bp->open(filedesc, m) == 0);
  107 }
  108 
  109 ostream&  ostream::open(FILE* fileptr)
  110 {
============ Listing of stream.cc ============	PAGE 3

  111   return failif(bp->open(fileptr) == 0);
  112 }
  113 
  114 ostream&  ostream::open(const char* filenam, open_mode m)
  115 {
  116   return failif(bp->open(filenam, m) == 0);
  117 }
  118 
  119 ostream& ostream::form(const char* fmt...)
  120 {
  121   va_list args;
  122   va_start(args, fmt);
  123   char buf[BUFSIZ];
  124 #ifndef HAVE_VPRINTF
  125   FILE b;
  126   b._flag = _IOWRT|_IOSTRG;
  127   b._ptr = buf;
  128   b._cnt = BUFSIZ;
  129   _doprnt(fmt, args, &b);
  130   putc('\0', &b);
  131 #else
  132   vsprintf(buf, fmt, args);
  133 #endif
  134   va_end(args);
  135   return put(buf);
  136 }
  137 
  138 ostream& ostream::operator<<(short  n)
  139 { 
  140   return put(itoa(long(n)));
  141 }
  142 
  143 ostream& ostream::operator<<(unsigned short n)
  144 { 
  145   return put(itoa((unsigned long)(n)));
  146 }
  147 
  148 ostream& ostream::operator<<(int    n)
  149 { 
  150   return put(itoa(long(n)));
  151 }
  152 
  153 ostream& ostream::operator<<(unsigned int n)
  154 { 
  155   return put(itoa((unsigned long)(n)));
  156 }
  157 
  158 ostream& ostream::operator<<(long   n)
  159 { 
  160   return put(itoa(n));
  161 }
  162 
  163 ostream& ostream::operator<<(unsigned long n)
  164 { 
  165   return put(itoa(n));
============ Listing of stream.cc ============	PAGE 4

  166 }
  167 
  168 ostream& ostream::operator<<(long long n)
  169 { 
  170   return put(itoa(n));
  171 }
  172 
  173 ostream& ostream::operator<<(unsigned long long n)
  174 { 
  175   return put(itoa(n));
  176 }
  177 
  178 ostream& ostream::operator<<(float  n)
  179 { 
  180   return put(dtoa(double(n)));
  181 }
  182 
  183 ostream& ostream::operator<<(double n)
  184 { 
  185   return put(dtoa(n));
  186 }
  187 
  188 
  189 const char* ostream::name()
  190 {
  191   return bp->name();
  192 }
  193 
  194 void ostream::error()
  195 {
  196   bp->error();
  197 }
  198 
  199 //-------------------------------------------------------------
  200 
  201 istream::istream(streambuf* s, int sk=1, ostream* t=0)
  202      : bp(s), state(_good), skipws(sk), tied_to(t), ownbuf(0) {}
  203 
  204 istream::istream(int sz, char* buf, int sk=1, ostream* t=0)
  205      : state(_good), skipws(sk), tied_to(t), ownbuf(1)
  206 {
  207   bp = new streambuf;
  208   if (buf == 0)
  209   {
  210     bp->alloc = 1;
  211     buf = new char[sz];
  212   }
  213   else
  214     bp->alloc = 0;
  215 
  216   bp->setbuf(buf, sz, sz);
  217 }
  218 
  219 istream::~istream()
  220 {
============ Listing of stream.cc ============	PAGE 5

  221   if (ownbuf) delete bp;
  222 }
  223 
  224 istream::istream(const char* filename, io_mode m, access_mode a, int sk=1, ostream* t=0)
  225      : state(_good), skipws(sk), tied_to(t), ownbuf(1)
  226 {
  227   bp = new Filebuf(filename, m, a);
  228 }
  229 
  230 istream::istream(const char* filename, const char* m, int sk=1, ostream* t=0)
  231      : state(_good), skipws(sk), tied_to(t), ownbuf(1)
  232 {
  233   bp = new Filebuf(filename, m);
  234 }
  235 
  236 istream::istream(int filedesc, io_mode m, int sk=1, ostream* t=0)
  237      : state(_good), skipws(sk), tied_to(t), ownbuf(1)
  238 {
  239   bp = new Filebuf(filedesc, m);
  240 }
  241 
  242 istream::istream(FILE* fileptr, int sk=1, ostream* t=0)
  243      : state(_good), skipws(sk), tied_to(t), ownbuf(1)
  244 {
  245   bp = new Filebuf(fileptr);
  246                   
  247 }
  248 
  249 istream::istream(int filedesc, int sk=1, ostream* t=0)
  250      : state(_good), skipws(sk), tied_to(t), ownbuf(1)
  251 {
  252   bp = new filebuf(filedesc);
  253 }
  254 
  255 istream::istream(int filedesc, char* buf, int buflen, int sk=1, ostream* t=0)
  256      : state(_good), skipws(sk), tied_to(t), ownbuf(1)
  257 {
  258   bp = new filebuf(filedesc, buf, buflen);
  259 }
  260 
  261 istream&  istream::open(const char* filename, io_mode m, access_mode a)
  262 {
  263   return failif(bp->open(filename, m, a) == 0);
  264 }
  265 
  266 istream&  istream::open(const char* filename, const char* m)
  267 {
  268   return failif(bp->open(filename, m) == 0);
  269 }
  270 
  271 istream&  istream::open(int  filedesc, io_mode m)
  272 {
  273   return failif(bp->open(filedesc, m) == 0);
  274 }
  275 
============ Listing of stream.cc ============	PAGE 6

  276 istream&  istream::open(FILE* fileptr)
  277 {
  278   return failif(bp->open(fileptr) == 0);
  279 }
  280 
  281 istream&  istream::open(const char* filenam, open_mode m)
  282 {
  283   return failif(bp->open(filenam, m) == 0);
  284 }
  285 
  286 istream& istream::get(char& c)
  287 {
  288   if (good())
  289   {
  290     _flush();
  291     int ch = bp->sgetc();
  292     if (ch == EOF) 
  293       set(_eof);
  294     else
  295     {
  296       c = ch;
  297       bp->stossc();
  298     }
  299   }
  300   return *this;
  301 }
  302 
  303 
  304 istream& istream::operator >> (whitespace&)
  305 {
  306   if (good())
  307   {
  308     int ch;
  309     _flush();
  310     while (((ch = bp->sgetc()) != EOF) && isspace(ch)) bp->stossc();
  311     if (ch == EOF) set(_eof);
  312   }
  313   return *this;
  314 }
  315 
  316 
  317 istream& istream::operator >> (char& c)
  318 {
  319   if (skipws) (*this >> WS);
  320   return get(c);
  321 }
  322 
  323 istream& istream::get(char* s, int n, char terminator = '\n')
  324 {
  325   if (!readable())
  326   {
  327     set(_fail);
  328     return *this;
  329   }
  330 
============ Listing of stream.cc ============	PAGE 7

  331   char ch = 0;
  332   
  333   if (--n > 0 && get(ch))
  334   {
  335     if (ch == terminator) 
  336       unget(ch);
  337     else
  338     {
  339       *s++ = ch; --n;
  340       while (n-- > 0 && get(ch))
  341       {
  342         if (ch == terminator)
  343         {
  344           unget(ch);
  345           break;
  346         }
  347         else
  348           *s++ = ch;
  349       }
  350     }
  351   }
  352 
  353   *s = 0;
  354   return *this;
  355 }
  356 
  357 
  358 istream& istream::operator >> (char* s)
  359 {
  360   if (!readable() || s == 0)
  361   {
  362     set(_fail);
  363     return *this;
  364   }
  365 
  366   if (skipws && !(*this >> WS)) return *this;
  367 
  368   char ch;
  369 
  370   if (get(ch))
  371   {
  372     *s++ = ch;
  373     while (get(ch))
  374     {
  375       if (isspace(ch))
  376       {
  377         unget(ch);
  378         break;
  379       }
  380       else
  381         *s++ = ch;
  382     }
  383   }
  384 
  385   *s = 0;
============ Listing of stream.cc ============	PAGE 8

  386   return *this;
  387 }
  388 
  389 
  390 istream& istream::getline(char* s, int n, char terminator = '\n')
  391 {
  392   if (!readable())
  393   {
  394     set(_fail);
  395     return *this;
  396   }
  397 
  398   char ch;
  399   while (--n > 0 && get(ch) && ((*s++ = ch) != terminator));
  400 
  401   *s = 0;
  402   return *this;
  403 }
  404 
  405 // from Doug Schmidt
  406 
  407 // This should probably be a page size....
  408 #define CHUNK_SIZE 512
  409 
  410 /* Reads an arbitrarily long input line terminated by a user-specified
  411    TERMINATOR.  Super-nifty trick using recursion avoids unnecessary calls
  412    to NEW! */
  413 
  414 char *istream::readline (int chunk_number, char terminator) 
  415 {
  416   char buf[CHUNK_SIZE];
  417   register char *bufptr = buf;
  418   register char *ptr;
  419   char ch;
  420   int continu;
  421 
  422   while ((continu = !!get(ch)) && ch != terminator) /* fill the current buffer */
  423     {
  424       *bufptr++ = ch;
  425       if (bufptr - buf >= CHUNK_SIZE) /* prepend remainder to ptr buffer */
  426         {
  427           if (ptr = readline (chunk_number + 1, terminator))
  428 
  429             for (; bufptr != buf; *--ptr = *--bufptr);
  430 
  431           return ptr;
  432         }
  433     }
  434   if (!continu && bufptr == buf)
  435     return NULL;
  436 
  437   int size = (chunk_number * CHUNK_SIZE + bufptr - buf) + 1;
  438 
  439   if (ptr = new char[size])
  440     {
============ Listing of stream.cc ============	PAGE 9

  441 
  442       for (*(ptr += (size - 1)) = '\0'; bufptr != buf; *--ptr = *--bufptr)
  443         ;
  444 
  445       return ptr;
  446     } 
  447   else 
  448     return NULL;
  449 }
  450 
  451 /* Reads an arbitrarily long input line terminated by TERMINATOR.
  452    This routine allocates its own memory, so the user should
  453    only supply the address of a (char *). */
  454 
  455 istream& istream::gets(char **s, char terminator)
  456 {
  457   return failif(!readable() || !(*s = readline (0, terminator)));
  458 }
  459   
  460 istream& istream::operator >> (long& y)
  461 {
  462   if (!readable())
  463   {
  464     set(_bad);
  465     return *this;
  466   }
  467 
  468   int got_one = 0;
  469   char sgn = 0;
  470   char ch;
  471   y = 0;
  472   if (skipws) *this >> WS;
  473   if (!good()) 
  474   {
  475     set(_bad);
  476     return *this;
  477   }
  478   while (get(ch))
  479   {
  480     if (ch == '-')
  481     {
  482       if (sgn == 0)
  483         sgn = '-';
  484       else
  485         break;
  486     }
  487     else if (ch >= '0' && ch <= '9')
  488       y = y * 10 + ((got_one = ch) - '0');
  489     else
  490       break;
  491   }
  492   if (good())
  493     unget(ch);
  494   if (!got_one)
  495     set(_bad);
============ Listing of stream.cc ============	PAGE 10

  496 
  497   if (sgn == '-')
  498     y = -y;
  499 
  500   return *this;
  501 }
  502 
  503 istream& istream::operator >> (unsigned long& y)
  504 {
  505   if (!readable())
  506   {
  507     set(_bad);
  508     return *this;
  509   }
  510 
  511   int got_one = 0;
  512   char ch;
  513   y = 0;
  514   if (skipws) *this >> WS;
  515   if (!good())
  516   while (get(ch))
  517   {
  518     if (ch >= '0' && ch <= '9')
  519       y = y * 10 + ((got_one = ch) - '0');
  520     else
  521       break;
  522   }
  523   if (good())
  524     unget(ch);
  525   if (!got_one)
  526     set(_bad);
  527 
  528   return *this;
  529 }
  530 
  531 
  532 /* for input to a double, we must trust atof (cannot even use
  533 the better strtod since it is not universally supported). So
  534 guaranteed legal chars are gathered up into an obstack. The
  535 only possible, undiagnosable error is that the input number
  536 might give a floating overflow or underflow inside atof. 
  537 I know of no way to avoid this */
  538 
  539 extern Obstack _libgxx_io_ob;
  540 extern char* _libgxx_io_oblast;
  541 
  542 istream& istream::operator >> (double & y)
  543 {
  544   if (!readable())
  545   {
  546     set(_bad);
  547     return *this;
  548   }
  549 
  550   if (_libgxx_io_oblast) _libgxx_io_ob.free(_libgxx_io_oblast);
============ Listing of stream.cc ============	PAGE 11

  551 
  552   char seenint = 0;
  553   char seendec = 0;
  554   char seenexp = 0;
  555   char seensgn = 0;
  556   char seene = 0;
  557   char seenexpsgn = 0;
  558   char seendot = 0;
  559   char ch;
  560 
  561   if (skipws) *this >> WS;
  562   if (!good()) 
  563   {
  564     set(_bad);
  565     return *this;
  566   }
  567   while (get(ch))
  568   {
  569     if (ch == '-' || ch == '+')
  570     {
  571       if (seene && !seenexpsgn)
  572         _libgxx_io_ob.grow(seenexpsgn = ch);
  573       else if (!seensgn && !seenint)
  574         _libgxx_io_ob.grow(seensgn = ch);
  575       else
  576         break;
  577     }
  578     else if (ch == '.' && !seendot)
  579     {
  580       _libgxx_io_ob.grow(seendot = ch);
  581     }
  582     else if ((ch == 'e' || ch == 'E') && !seene)
  583     {
  584       _libgxx_io_ob.grow(seene = ch);
  585     }
  586     else if (ch >= '0' && ch <= '9')
  587     {
  588       _libgxx_io_ob.grow(ch);
  589       if (seene) seenexp = ch;
  590       else if (seendot) seendec = ch;
  591       else seenint = ch;
  592     }
  593     else
  594       break;
  595   }
  596   char* str = _libgxx_io_ob.finish(0);
  597   if (good())
  598     unget(ch);
  599   if ((seenint || seendec) && (!seene || seenexp))
  600     y = atof(str);
  601   else
  602     set(_bad);
  603   _libgxx_io_ob.free(str);
  604   return *this;
  605 }
============ Listing of stream.cc ============	PAGE 12

  606 
  607 istream& istream::operator >> (int& y)
  608 {
  609   long l; (*this >> l); y = int(l); return *this;
  610 }
  611 
  612 istream& istream:: operator >> (unsigned int& y)
  613 {
  614   long l; (*this >> l); y = (unsigned int)(l); return *this;
  615 }
  616 
  617 istream& istream:: operator >> (short& y)
  618 {
  619   long l; (*this >> l); y = short(l); return *this;
  620 }
  621 
  622 istream& istream:: operator >> (unsigned short& y)
  623 {
  624   long l; (*this >> l); y = (unsigned short)(l); return *this;
  625 }
  626 
  627 istream& istream:: operator >> (float& y)
  628 {
  629   double d; (*this >> d); y = float(d); return *this;
  630 }
  631 
  632 const char* istream::name()
  633 {
  634   return bp->name();
  635 }
  636 
  637 void istream::error()
  638 {
  639   bp->error();
  640 }
  641 
  642 //--------------------------------------------------------------
  643 
  644 #ifndef DEFAULT_filebuf
  645 
  646 ostream  cerr(stderr);
  647 ostream  cout(stdout);
  648 istream  cin(stdin, 1, &cout);
  649 
  650 #else
  651 
  652 static char cerrbuf[1];
  653 static char coutbuf[BUFSIZE];
  654 static char cinbuf[BUFSIZE];
  655 
  656 ostream cerr(2, cerrbuf, 1);
  657 ostream cout(1, coutbuf, BUFSIZE);
  658 istream cin (0, cinbuf,  BUFSIZE, 1, &cout);
  659 
  660 #endif
============ Listing of stream.cc ============	PAGE 13

  661 
  662 whitespace WS;

============ Listing Complete ============
============ Listing of stream.s ============ 	PAGE 1


    1 #NO_APP
    2 gcc_compiled.:
    3 .text
    4 	.even
    5 .globl ___7ostreamP9streambuf
    6 ___7ostreamP9streambuf:
    7 	link a6,#0
    8 	movel a6@(8),a0
    9 	movel a6@(12),a0@
   10 	clrl a0@(4)
   11 	clrb a0@(8)
   12 	movel a0,d0
   13 	unlk a6
   14 	rts
   15 	.even
   16 .globl ___7ostreamiPc
   17 ___7ostreamiPc:
   18 	link a6,#0
   19 	moveml #0x3030,sp@-
   20 	movel a6@(8),a3
   21 	movel a6@(12),d3
   22 	movel a6@(16),d2
   23 	clrl a3@(4)
   24 	moveb #1,a3@(8)
   25 	tstl d2
   26 	jne L943
   27 	movel d3,sp@-
   28 	lea ___builtin_new,a2
   29 	jbsr a2@
   30 	movel d0,d2
   31 	movel d3,sp@-
   32 	movel d2,sp@-
   33 	pea 22:w
   34 	jbsr a2@
   35 	addqw #4,sp
   36 	movel d0,a2
   37 	movel a2,sp@-
   38 	jbsr ___9streambufPci
   39 	movel a2,a3@
   40 	movel a2@(18),a0
   41 	clrl sp@-
   42 	movel d3,sp@-
   43 	movel d2,sp@-
   44 	movew a0@(32),a1
   45 	addl a3@,a1
   46 	movel a1,sp@-
   47 	movel a0@(36),a0
   48 	jbsr a0@
   49 	movel a3@,a0
   50 	moveb #1,a0@(16)
   51 	jra L944
   52 L943:
   53 	movel d3,sp@-
   54 	movel d2,sp@-
   55 	pea 22:w
============ Listing of stream.s ============	PAGE 2

   56 	jbsr ___builtin_new
   57 	addqw #4,sp
   58 	movel d0,a2
   59 	movel a2,sp@-
   60 	jbsr ___9streambufPci
   61 	movel a2,a3@
   62 	clrb a2@(16)
   63 L944:
   64 	movel a3,d0
   65 	moveml a6@(-16),#0xc0c
   66 	unlk a6
   67 	rts
   68 	.even
   69 .globl ___7ostreamPCc7io_mode11access_mode
   70 ___7ostreamPCc7io_mode11access_mode:
   71 	link a6,#0
   72 	moveml #0x2020,sp@-
   73 	movel a6@(8),a2
   74 	clrl a2@(4)
   75 	moveb #1,a2@(8)
   76 	movel a6@(20),sp@-
   77 	movel a6@(16),sp@-
   78 	movel a6@(12),sp@-
   79 	pea 26:w
   80 	jbsr ___builtin_new
   81 	addqw #4,sp
   82 	movel d0,d2
   83 	movel d2,sp@-
   84 	jbsr ___7FilebufPCc7io_mode11access_mode
   85 	movel d2,a2@
   86 	movel a2,d0
   87 	moveml a6@(-8),#0x404
   88 	unlk a6
   89 	rts
   90 	.even
   91 .globl ___7ostreamPCcT0
   92 ___7ostreamPCcT0:
   93 	link a6,#0
   94 	moveml #0x2020,sp@-
   95 	movel a6@(8),a2
   96 	clrl a2@(4)
   97 	moveb #1,a2@(8)
   98 	movel a6@(16),sp@-
   99 	movel a6@(12),sp@-
  100 	pea 26:w
  101 	jbsr ___builtin_new
  102 	addqw #4,sp
  103 	movel d0,d2
  104 	movel d2,sp@-
  105 	jbsr ___7FilebufPCcT0
  106 	movel d2,a2@
  107 	movel a2,d0
  108 	moveml a6@(-8),#0x404
  109 	unlk a6
  110 	rts
============ Listing of stream.s ============	PAGE 3

  111 	.even
  112 .globl ___7ostreami7io_mode
  113 ___7ostreami7io_mode:
  114 	link a6,#0
  115 	moveml #0x2020,sp@-
  116 	movel a6@(8),a2
  117 	clrl a2@(4)
  118 	moveb #1,a2@(8)
  119 	movel a6@(16),sp@-
  120 	movel a6@(12),sp@-
  121 	pea 26:w
  122 	jbsr ___builtin_new
  123 	addqw #4,sp
  124 	movel d0,d2
  125 	movel d2,sp@-
  126 	jbsr ___7Filebufi7io_mode
  127 	movel d2,a2@
  128 	movel a2,d0
  129 	moveml a6@(-8),#0x404
  130 	unlk a6
  131 	rts
  132 	.even
  133 .globl ___7ostreamP6_iobuf
  134 ___7ostreamP6_iobuf:
  135 	link a6,#0
  136 	moveml #0x2020,sp@-
  137 	movel a6@(8),a2
  138 	clrl a2@(4)
  139 	moveb #1,a2@(8)
  140 	movel a6@(12),sp@-
  141 	pea 26:w
  142 	jbsr ___builtin_new
  143 	addqw #4,sp
  144 	movel d0,d2
  145 	movel d2,sp@-
  146 	jbsr ___7FilebufP6_iobuf
  147 	movel d2,a2@
  148 	movel a2,d0
  149 	moveml a6@(-8),#0x404
  150 	unlk a6
  151 	rts
  152 	.even
  153 .globl ___7ostreami
  154 ___7ostreami:
  155 	link a6,#0
  156 	moveml #0x2020,sp@-
  157 	movel a6@(8),a2
  158 	clrl a2@(4)
  159 	moveb #1,a2@(8)
  160 	movel a6@(12),sp@-
  161 	pea 28:w
  162 	jbsr ___builtin_new
  163 	addqw #4,sp
  164 	movel d0,d2
  165 	movel d2,sp@-
============ Listing of stream.s ============	PAGE 4

  166 	jbsr ___7filebufi
  167 	movel d2,a2@
  168 	movel a2,d0
  169 	moveml a6@(-8),#0x404
  170 	unlk a6
  171 	rts
  172 	.even
  173 .globl ___7ostreamiPci
  174 ___7ostreamiPci:
  175 	link a6,#0
  176 	moveml #0x2020,sp@-
  177 	movel a6@(8),a2
  178 	clrl a2@(4)
  179 	moveb #1,a2@(8)
  180 	movel a6@(20),sp@-
  181 	movel a6@(16),sp@-
  182 	movel a6@(12),sp@-
  183 	pea 28:w
  184 	jbsr ___builtin_new
  185 	addqw #4,sp
  186 	movel d0,d2
  187 	movel d2,sp@-
  188 	jbsr ___7filebufiPci
  189 	movel d2,a2@
  190 	movel a2,d0
  191 	moveml a6@(-8),#0x404
  192 	unlk a6
  193 	rts
  194 	.even
  195 .globl __$_ostream
  196 __$_ostream:
  197 	link a6,#0
  198 	movel a2,sp@-
  199 	movel a6@(8),a2
  200 	tstb a2@(8)
  201 	jeq L955
  202 	tstl a2@
  203 	jeq L955
  204 	movel a2@,a0
  205 	movel a0@(18),a0
  206 	pea 1:w
  207 	movew a0@(8),a1
  208 	addl a2@,a1
  209 	movel a1,sp@-
  210 	movel a0@(12),a0
  211 	jbsr a0@
  212 	addqw #8,sp
  213 L955:
  214 	tstl a6@(12)
  215 	jeq L957
  216 	movel a2,sp@-
  217 	jbsr ___builtin_delete
  218 L957:
  219 	movel a6@(-4),a2
  220 	unlk a6
============ Listing of stream.s ============	PAGE 5

  221 	rts
  222 	.even
  223 .globl _open__7ostreamPCc7io_mode11access_mode
  224 _open__7ostreamPCc7io_mode11access_mode:
  225 	link a6,#0
  226 	moveml #0x2020,sp@-
  227 	movel a6@(8),a2
  228 	movel a2@,a0
  229 	movel a0@(18),a0
  230 	movel a6@(20),sp@-
  231 	movel a6@(16),sp@-
  232 	movel a6@(12),sp@-
  233 	movew a0@(56),a1
  234 	addl a2@,a1
  235 	movel a1,sp@-
  236 	movel a0@(60),a0
  237 	jbsr a0@
  238 	tstl d0
  239 	seq d1
  240 	btst #0,d1
  241 	jeq L960
  242 	moveq #2,d2
  243 	orl d2,a2@(4)
  244 L960:
  245 	movel a2,d0
  246 	moveml a6@(-8),#0x404
  247 	unlk a6
  248 	rts
  249 	.even
  250 .globl _open__7ostreamPCcT0
  251 _open__7ostreamPCcT0:
  252 	link a6,#0
  253 	moveml #0x2020,sp@-
  254 	movel a6@(8),a2
  255 	movel a2@,a0
  256 	movel a0@(18),a0
  257 	movel a6@(16),sp@-
  258 	movel a6@(12),sp@-
  259 	movew a0@(64),a1
  260 	addl a2@,a1
  261 	movel a1,sp@-
  262 	movel a0@(68),a0
  263 	jbsr a0@
  264 	tstl d0
  265 	seq d1
  266 	btst #0,d1
  267 	jeq L964
  268 	moveq #2,d2
  269 	orl d2,a2@(4)
  270 L964:
  271 	movel a2,d0
  272 	moveml a6@(-8),#0x404
  273 	unlk a6
  274 	rts
  275 	.even
============ Listing of stream.s ============	PAGE 6

  276 .globl _open__7ostreami7io_mode
  277 _open__7ostreami7io_mode:
  278 	link a6,#0
  279 	moveml #0x2020,sp@-
  280 	movel a6@(8),a2
  281 	movel a2@,a0
  282 	movel a0@(18),a0
  283 	movel a6@(16),sp@-
  284 	movel a6@(12),sp@-
  285 	movew a0@(72),a1
  286 	addl a2@,a1
  287 	movel a1,sp@-
  288 	movel a0@(76),a0
  289 	jbsr a0@
  290 	tstl d0
  291 	seq d1
  292 	btst #0,d1
  293 	jeq L968
  294 	moveq #2,d2
  295 	orl d2,a2@(4)
  296 L968:
  297 	movel a2,d0
  298 	moveml a6@(-8),#0x404
  299 	unlk a6
  300 	rts
  301 	.even
  302 .globl _open__7ostreamP6_iobuf
  303 _open__7ostreamP6_iobuf:
  304 	link a6,#0
  305 	moveml #0x2020,sp@-
  306 	movel a6@(8),a2
  307 	movel a2@,a0
  308 	movel a0@(18),a0
  309 	movel a6@(12),sp@-
  310 	movew a0@(80),a1
  311 	addl a2@,a1
  312 	movel a1,sp@-
  313 	movel a0@(84),a0
  314 	jbsr a0@
  315 	tstl d0
  316 	seq d1
  317 	btst #0,d1
  318 	jeq L972
  319 	moveq #2,d2
  320 	orl d2,a2@(4)
  321 L972:
  322 	movel a2,d0
  323 	moveml a6@(-8),#0x404
  324 	unlk a6
  325 	rts
  326 	.even
  327 .globl _open__7ostreamPCc9open_mode
  328 _open__7ostreamPCc9open_mode:
  329 	link a6,#0
  330 	moveml #0x2020,sp@-
============ Listing of stream.s ============	PAGE 7

  331 	movel a6@(8),a2
  332 	movel a2@,a0
  333 	movel a0@(18),a0
  334 	movel a6@(16),sp@-
  335 	movel a6@(12),sp@-
  336 	movew a0@(48),a1
  337 	addl a2@,a1
  338 	movel a1,sp@-
  339 	movel a0@(52),a0
  340 	jbsr a0@
  341 	tstl d0
  342 	seq d1
  343 	btst #0,d1
  344 	jeq L976
  345 	moveq #2,d2
  346 	orl d2,a2@(4)
  347 L976:
  348 	movel a2,d0
  349 	moveml a6@(-8),#0x404
  350 	unlk a6
  351 	rts
  352 	.even
  353 .globl _form__7ostreamPCce
  354 _form__7ostreamPCce:
  355 	link a6,#-1024
  356 	moveml #0x3020,sp@-
  357 	movel a6@(8),a2
  358 	pea a6@(16)
  359 	movel a6@(12),sp@-
  360 	movel a6,d2
  361 	addl #-1024,d2
  362 	movel d2,sp@-
  363 	jbsr _vsprintf
  364 	addw #12,sp
  365 	clrl d3
  366 	tstl a2@(4)
  367 	jne L981
  368 	movel d2,sp@-
  369 	movel a2@,sp@-
  370 	jbsr _sputs__9streambufPCc
  371 	moveq #-1,d1
  372 	cmpl d0,d1
  373 	jne L980
  374 L981:
  375 	moveq #1,d3
  376 L980:
  377 	tstl d3
  378 	jeq L983
  379 	moveq #2,d1
  380 	orl d1,a2@(4)
  381 L983:
  382 	movel a2,d0
  383 	moveml a6@(-1036),#0x40c
  384 	unlk a6
  385 	rts
============ Listing of stream.s ============	PAGE 8

  386 	.even
  387 .globl _op$alshift__7ostreams
  388 _op$alshift__7ostreams:
  389 	link a6,#0
  390 	moveml #0x2020,sp@-
  391 	movel a6@(8),a2
  392 	movew a6@(14),d0
  393 	clrl sp@-
  394 	pea 10:w
  395 	extl d0
  396 	movel d0,sp@-
  397 	jbsr _itoa__Flii
  398 	addw #12,sp
  399 	clrl d2
  400 	tstl a2@(4)
  401 	jne L988
  402 	movel d0,sp@-
  403 	movel a2@,sp@-
  404 	jbsr _sputs__9streambufPCc
  405 	moveq #-1,d1
  406 	cmpl d0,d1
  407 	jne L987
  408 L988:
  409 	moveq #1,d2
  410 L987:
  411 	tstl d2
  412 	jeq L990
  413 	moveq #2,d1
  414 	orl d1,a2@(4)
  415 L990:
  416 	movel a2,d0
  417 	moveml a6@(-8),#0x404
  418 	unlk a6
  419 	rts
  420 	.even
  421 .globl _op$alshift__7ostreamUs
  422 _op$alshift__7ostreamUs:
  423 	link a6,#0
  424 	moveml #0x3020,sp@-
  425 	movel a6@(8),a2
  426 	movew a6@(14),d0
  427 	clrl sp@-
  428 	pea 10:w
  429 	clrl d1
  430 	movew d0,d1
  431 	movel d1,sp@-
  432 	jbsr _itoa__FUlii
  433 	addw #12,sp
  434 	clrl d2
  435 	tstl a2@(4)
  436 	jne L995
  437 	movel d0,sp@-
  438 	movel a2@,sp@-
  439 	jbsr _sputs__9streambufPCc
  440 	moveq #-1,d3
============ Listing of stream.s ============	PAGE 9

  441 	cmpl d0,d3
  442 	jne L994
  443 L995:
  444 	moveq #1,d2
  445 L994:
  446 	tstl d2
  447 	jeq L997
  448 	moveq #2,d3
  449 	orl d3,a2@(4)
  450 L997:
  451 	movel a2,d0
  452 	moveml a6@(-12),#0x40c
  453 	unlk a6
  454 	rts
  455 	.even
  456 .globl _op$alshift__7ostreami
  457 _op$alshift__7ostreami:
  458 	link a6,#0
  459 	moveml #0x2020,sp@-
  460 	movel a6@(8),a2
  461 	clrl sp@-
  462 	pea 10:w
  463 	movel a6@(12),sp@-
  464 	jbsr _itoa__Flii
  465 	addw #12,sp
  466 	clrl d2
  467 	tstl a2@(4)
  468 	jne L1002
  469 	movel d0,sp@-
  470 	movel a2@,sp@-
  471 	jbsr _sputs__9streambufPCc
  472 	moveq #-1,d1
  473 	cmpl d0,d1
  474 	jne L1001
  475 L1002:
  476 	moveq #1,d2
  477 L1001:
  478 	tstl d2
  479 	jeq L1004
  480 	moveq #2,d1
  481 	orl d1,a2@(4)
  482 L1004:
  483 	movel a2,d0
  484 	moveml a6@(-8),#0x404
  485 	unlk a6
  486 	rts
  487 	.even
  488 .globl _op$alshift__7ostreamUi
  489 _op$alshift__7ostreamUi:
  490 	link a6,#0
  491 	moveml #0x2020,sp@-
  492 	movel a6@(8),a2
  493 	clrl sp@-
  494 	pea 10:w
  495 	movel a6@(12),sp@-
============ Listing of stream.s ============	PAGE 10

  496 	jbsr _itoa__FUlii
  497 	addw #12,sp
  498 	clrl d2
  499 	tstl a2@(4)
  500 	jne L1009
  501 	movel d0,sp@-
  502 	movel a2@,sp@-
  503 	jbsr _sputs__9streambufPCc
  504 	moveq #-1,d1
  505 	cmpl d0,d1
  506 	jne L1008
  507 L1009:
  508 	moveq #1,d2
  509 L1008:
  510 	tstl d2
  511 	jeq L1011
  512 	moveq #2,d1
  513 	orl d1,a2@(4)
  514 L1011:
  515 	movel a2,d0
  516 	moveml a6@(-8),#0x404
  517 	unlk a6
  518 	rts
  519 	.even
  520 .globl _op$alshift__7ostreaml
  521 _op$alshift__7ostreaml:
  522 	link a6,#0
  523 	moveml #0x2020,sp@-
  524 	movel a6@(8),a2
  525 	clrl sp@-
  526 	pea 10:w
  527 	movel a6@(12),sp@-
  528 	jbsr _itoa__Flii
  529 	addw #12,sp
  530 	clrl d2
  531 	tstl a2@(4)
  532 	jne L1016
  533 	movel d0,sp@-
  534 	movel a2@,sp@-
  535 	jbsr _sputs__9streambufPCc
  536 	moveq #-1,d1
  537 	cmpl d0,d1
  538 	jne L1015
  539 L1016:
  540 	moveq #1,d2
  541 L1015:
  542 	tstl d2
  543 	jeq L1018
  544 	moveq #2,d1
  545 	orl d1,a2@(4)
  546 L1018:
  547 	movel a2,d0
  548 	moveml a6@(-8),#0x404
  549 	unlk a6
  550 	rts
============ Listing of stream.s ============	PAGE 11

  551 	.even
  552 .globl _op$alshift__7ostreamUl
  553 _op$alshift__7ostreamUl:
  554 	link a6,#0
  555 	moveml #0x2020,sp@-
  556 	movel a6@(8),a2
  557 	clrl sp@-
  558 	pea 10:w
  559 	movel a6@(12),sp@-
  560 	jbsr _itoa__FUlii
  561 	addw #12,sp
  562 	clrl d2
  563 	tstl a2@(4)
  564 	jne L1023
  565 	movel d0,sp@-
  566 	movel a2@,sp@-
  567 	jbsr _sputs__9streambufPCc
  568 	moveq #-1,d1
  569 	cmpl d0,d1
  570 	jne L1022
  571 L1023:
  572 	moveq #1,d2
  573 L1022:
  574 	tstl d2
  575 	jeq L1025
  576 	moveq #2,d1
  577 	orl d1,a2@(4)
  578 L1025:
  579 	movel a2,d0
  580 	moveml a6@(-8),#0x404
  581 	unlk a6
  582 	rts
  583 	.even
  584 .globl _op$alshift__7ostreamx
  585 _op$alshift__7ostreamx:
  586 	link a6,#0
  587 	moveml #0x2020,sp@-
  588 	movel a6@(8),a2
  589 	clrl sp@-
  590 	pea 10:w
  591 	movel a6@(16),sp@-
  592 	movel a6@(12),sp@-
  593 	jbsr _itoa__Fxii
  594 	addw #16,sp
  595 	clrl d2
  596 	tstl a2@(4)
  597 	jne L1030
  598 	movel d0,sp@-
  599 	movel a2@,sp@-
  600 	jbsr _sputs__9streambufPCc
  601 	moveq #-1,d1
  602 	cmpl d0,d1
  603 	jne L1029
  604 L1030:
  605 	moveq #1,d2
============ Listing of stream.s ============	PAGE 12

  606 L1029:
  607 	tstl d2
  608 	jeq L1032
  609 	moveq #2,d1
  610 	orl d1,a2@(4)
  611 L1032:
  612 	movel a2,d0
  613 	moveml a6@(-8),#0x404
  614 	unlk a6
  615 	rts
  616 	.even
  617 .globl _op$alshift__7ostreamUx
  618 _op$alshift__7ostreamUx:
  619 	link a6,#0
  620 	moveml #0x2020,sp@-
  621 	movel a6@(8),a2
  622 	clrl sp@-
  623 	pea 10:w
  624 	movel a6@(16),sp@-
  625 	movel a6@(12),sp@-
  626 	jbsr _itoa__FUxii
  627 	addw #16,sp
  628 	clrl d2
  629 	tstl a2@(4)
  630 	jne L1037
  631 	movel d0,sp@-
  632 	movel a2@,sp@-
  633 	jbsr _sputs__9streambufPCc
  634 	moveq #-1,d1
  635 	cmpl d0,d1
  636 	jne L1036
  637 L1037:
  638 	moveq #1,d2
  639 L1036:
  640 	tstl d2
  641 	jeq L1039
  642 	moveq #2,d1
  643 	orl d1,a2@(4)
  644 L1039:
  645 	movel a2,d0
  646 	moveml a6@(-8),#0x404
  647 	unlk a6
  648 	rts
  649 	.even
  650 .globl _op$alshift__7ostreamf
  651 _op$alshift__7ostreamf:
  652 	link a6,#0
  653 	moveml #0x2020,sp@-
  654 	movel a6@(8),a2
  655 	pea 6:w
  656 	clrl sp@-
  657 	pea 103:w
  658 	fmoves a6@(12),fp0
  659 	fmoved fp0,sp@-
  660 	jbsr _dtoa__Fdcii
============ Listing of stream.s ============	PAGE 13

  661 	addw #20,sp
  662 	clrl d2
  663 	tstl a2@(4)
  664 	jne L1044
  665 	movel d0,sp@-
  666 	movel a2@,sp@-
  667 	jbsr _sputs__9streambufPCc
  668 	moveq #-1,d1
  669 	cmpl d0,d1
  670 	jne L1043
  671 L1044:
  672 	moveq #1,d2
  673 L1043:
  674 	tstl d2
  675 	jeq L1046
  676 	moveq #2,d1
  677 	orl d1,a2@(4)
  678 L1046:
  679 	movel a2,d0
  680 	moveml a6@(-8),#0x404
  681 	unlk a6
  682 	rts
  683 	.even
  684 .globl _op$alshift__7ostreamd
  685 _op$alshift__7ostreamd:
  686 	link a6,#0
  687 	moveml #0x2020,sp@-
  688 	movel a6@(8),a2
  689 	pea 6:w
  690 	clrl sp@-
  691 	pea 103:w
  692 	movel a6@(16),sp@-
  693 	movel a6@(12),sp@-
  694 	jbsr _dtoa__Fdcii
  695 	addw #20,sp
  696 	clrl d2
  697 	tstl a2@(4)
  698 	jne L1051
  699 	movel d0,sp@-
  700 	movel a2@,sp@-
  701 	jbsr _sputs__9streambufPCc
  702 	moveq #-1,d1
  703 	cmpl d0,d1
  704 	jne L1050
  705 L1051:
  706 	moveq #1,d2
  707 L1050:
  708 	tstl d2
  709 	jeq L1053
  710 	moveq #2,d1
  711 	orl d1,a2@(4)
  712 L1053:
  713 	movel a2,d0
  714 	moveml a6@(-8),#0x404
  715 	unlk a6
============ Listing of stream.s ============	PAGE 14

  716 	rts
  717 	.even
  718 .globl _name__7ostream
  719 _name__7ostream:
  720 	link a6,#0
  721 	movel a2,sp@-
  722 	movel a6@(8),a0
  723 	movel a0@,a1
  724 	movel a1@(18),a1
  725 	movew a1@(40),a2
  726 	addl a0@,a2
  727 	movel a2,sp@-
  728 	movel a1@(44),a0
  729 	jbsr a0@
  730 	movel a6@(-4),a2
  731 	unlk a6
  732 	rts
  733 	.even
  734 .globl _error__7ostream
  735 _error__7ostream:
  736 	link a6,#0
  737 	movel a2,sp@-
  738 	movel a6@(8),a0
  739 	movel a0@,a1
  740 	movel a1@(18),a1
  741 	movew a1@(104),a2
  742 	addl a0@,a2
  743 	movel a2,sp@-
  744 	movel a1@(108),a0
  745 	jbsr a0@
  746 	movel a6@(-4),a2
  747 	unlk a6
  748 	rts
  749 	.even
  750 .globl ___7istreamP9streambufiP7ostream
  751 ___7istreamP9streambufiP7ostream:
  752 	link a6,#0
  753 	movel a6@(8),a0
  754 	movel a6@(12),a0@
  755 	clrl a0@(4)
  756 	moveb a6@(19),a0@(12)
  757 	movel a6@(20),a0@(8)
  758 	clrb a0@(13)
  759 	movel a0,d0
  760 	unlk a6
  761 	rts
  762 	.even
  763 .globl ___7istreamiPciP7ostream
  764 ___7istreamiPciP7ostream:
  765 	link a6,#0
  766 	moveml #0x3038,sp@-
  767 	movel a6@(8),a3
  768 	movel a6@(12),d3
  769 	movel a6@(16),d2
  770 	clrl a3@(4)
============ Listing of stream.s ============	PAGE 15

  771 	moveb a6@(23),a3@(12)
  772 	movel a6@(24),a3@(8)
  773 	moveb #1,a3@(13)
  774 	pea 22:w
  775 	lea ___builtin_new,a4
  776 	jbsr a4@
  777 	movel d0,a2
  778 	movel a2,sp@-
  779 	jbsr ___9streambuf
  780 	movel a2,a3@
  781 	addqw #8,sp
  782 	tstl d2
  783 	jne L1059
  784 	moveb #1,a2@(16)
  785 	movel d3,sp@-
  786 	jbsr a4@
  787 	movel d0,d2
  788 	addqw #4,sp
  789 	jra L1060
  790 L1059:
  791 	movel a3@,a0
  792 	clrb a0@(16)
  793 L1060:
  794 	movel a3@,a0
  795 	movel a0@(18),a0
  796 	movel d3,sp@-
  797 	movel d3,sp@-
  798 	movel d2,sp@-
  799 	movew a0@(32),a1
  800 	addl a3@,a1
  801 	movel a1,sp@-
  802 	movel a0@(36),a0
  803 	jbsr a0@
  804 	movel a3,d0
  805 	moveml a6@(-20),#0x1c0c
  806 	unlk a6
  807 	rts
  808 	.even
  809 .globl __$_istream
  810 __$_istream:
  811 	link a6,#0
  812 	movel a2,sp@-
  813 	movel a6@(8),a2
  814 	tstb a2@(13)
  815 	jeq L1065
  816 	tstl a2@
  817 	jeq L1065
  818 	movel a2@,a0
  819 	movel a0@(18),a0
  820 	pea 1:w
  821 	movew a0@(8),a1
  822 	addl a2@,a1
  823 	movel a1,sp@-
  824 	movel a0@(12),a0
  825 	jbsr a0@
============ Listing of stream.s ============	PAGE 16

  826 	addqw #8,sp
  827 L1065:
  828 	tstl a6@(12)
  829 	jeq L1067
  830 	movel a2,sp@-
  831 	jbsr ___builtin_delete
  832 L1067:
  833 	movel a6@(-4),a2
  834 	unlk a6
  835 	rts
  836 	.even
  837 .globl ___7istreamPCc7io_mode11access_modeiP7ostream
  838 ___7istreamPCc7io_mode11access_modeiP7ostream:
  839 	link a6,#0
  840 	moveml #0x2020,sp@-
  841 	movel a6@(8),a2
  842 	clrl a2@(4)
  843 	moveb a6@(27),a2@(12)
  844 	movel a6@(28),a2@(8)
  845 	moveb #1,a2@(13)
  846 	movel a6@(20),sp@-
  847 	movel a6@(16),sp@-
  848 	movel a6@(12),sp@-
  849 	pea 26:w
  850 	jbsr ___builtin_new
  851 	addqw #4,sp
  852 	movel d0,d2
  853 	movel d2,sp@-
  854 	jbsr ___7FilebufPCc7io_mode11access_mode
  855 	movel d2,a2@
  856 	movel a2,d0
  857 	moveml a6@(-8),#0x404
  858 	unlk a6
  859 	rts
  860 	.even
  861 .globl ___7istreamPCcT0iP7ostream
  862 ___7istreamPCcT0iP7ostream:
  863 	link a6,#0
  864 	moveml #0x2020,sp@-
  865 	movel a6@(8),a2
  866 	clrl a2@(4)
  867 	moveb a6@(23),a2@(12)
  868 	movel a6@(24),a2@(8)
  869 	moveb #1,a2@(13)
  870 	movel a6@(16),sp@-
  871 	movel a6@(12),sp@-
  872 	pea 26:w
  873 	jbsr ___builtin_new
  874 	addqw #4,sp
  875 	movel d0,d2
  876 	movel d2,sp@-
  877 	jbsr ___7FilebufPCcT0
  878 	movel d2,a2@
  879 	movel a2,d0
  880 	moveml a6@(-8),#0x404
============ Listing of stream.s ============	PAGE 17

  881 	unlk a6
  882 	rts
  883 	.even
  884 .globl ___7istreami7io_modeiP7ostream
  885 ___7istreami7io_modeiP7ostream:
  886 	link a6,#0
  887 	moveml #0x2020,sp@-
  888 	movel a6@(8),a2
  889 	clrl a2@(4)
  890 	moveb a6@(23),a2@(12)
  891 	movel a6@(24),a2@(8)
  892 	moveb #1,a2@(13)
  893 	movel a6@(16),sp@-
  894 	movel a6@(12),sp@-
  895 	pea 26:w
  896 	jbsr ___builtin_new
  897 	addqw #4,sp
  898 	movel d0,d2
  899 	movel d2,sp@-
  900 	jbsr ___7Filebufi7io_mode
  901 	movel d2,a2@
  902 	movel a2,d0
  903 	moveml a6@(-8),#0x404
  904 	unlk a6
  905 	rts
  906 	.even
  907 .globl ___7istreamP6_iobufiP7ostream
  908 ___7istreamP6_iobufiP7ostream:
  909 	link a6,#0
  910 	moveml #0x2020,sp@-
  911 	movel a6@(8),a2
  912 	clrl a2@(4)
  913 	moveb a6@(19),a2@(12)
  914 	movel a6@(20),a2@(8)
  915 	moveb #1,a2@(13)
  916 	movel a6@(12),sp@-
  917 	pea 26:w
  918 	jbsr ___builtin_new
  919 	addqw #4,sp
  920 	movel d0,d2
  921 	movel d2,sp@-
  922 	jbsr ___7FilebufP6_iobuf
  923 	movel d2,a2@
  924 	movel a2,d0
  925 	moveml a6@(-8),#0x404
  926 	unlk a6
  927 	rts
  928 	.even
  929 .globl ___7istreamiiP7ostream
  930 ___7istreamiiP7ostream:
  931 	link a6,#0
  932 	moveml #0x2020,sp@-
  933 	movel a6@(8),a2
  934 	clrl a2@(4)
  935 	moveb a6@(19),a2@(12)
============ Listing of stream.s ============	PAGE 18

  936 	movel a6@(20),a2@(8)
  937 	moveb #1,a2@(13)
  938 	movel a6@(12),sp@-
  939 	pea 28:w
  940 	jbsr ___builtin_new
  941 	addqw #4,sp
  942 	movel d0,d2
  943 	movel d2,sp@-
  944 	jbsr ___7filebufi
  945 	movel d2,a2@
  946 	movel a2,d0
  947 	moveml a6@(-8),#0x404
  948 	unlk a6
  949 	rts
  950 	.even
  951 .globl ___7istreamiPciiP7ostream
  952 ___7istreamiPciiP7ostream:
  953 	link a6,#0
  954 	moveml #0x2020,sp@-
  955 	movel a6@(8),a2
  956 	clrl a2@(4)
  957 	moveb a6@(27),a2@(12)
  958 	movel a6@(28),a2@(8)
  959 	moveb #1,a2@(13)
  960 	movel a6@(20),sp@-
  961 	movel a6@(16),sp@-
  962 	movel a6@(12),sp@-
  963 	pea 28:w
  964 	jbsr ___builtin_new
  965 	addqw #4,sp
  966 	movel d0,d2
  967 	movel d2,sp@-
  968 	jbsr ___7filebufiPci
  969 	movel d2,a2@
  970 	movel a2,d0
  971 	moveml a6@(-8),#0x404
  972 	unlk a6
  973 	rts
  974 	.even
  975 .globl _open__7istreamPCc7io_mode11access_mode
  976 _open__7istreamPCc7io_mode11access_mode:
  977 	link a6,#0
  978 	moveml #0x2020,sp@-
  979 	movel a6@(8),a2
  980 	movel a2@,a0
  981 	movel a0@(18),a0
  982 	movel a6@(20),sp@-
  983 	movel a6@(16),sp@-
  984 	movel a6@(12),sp@-
  985 	movew a0@(56),a1
  986 	addl a2@,a1
  987 	movel a1,sp@-
  988 	movel a0@(60),a0
  989 	jbsr a0@
  990 	tstl d0
============ Listing of stream.s ============	PAGE 19

  991 	seq d1
  992 	btst #0,d1
  993 	jeq L1076
  994 	moveq #2,d2
  995 	orl d2,a2@(4)
  996 L1076:
  997 	movel a2,d0
  998 	moveml a6@(-8),#0x404
  999 	unlk a6
 1000 	rts
 1001 	.even
 1002 .globl _open__7istreamPCcT0
 1003 _open__7istreamPCcT0:
 1004 	link a6,#0
 1005 	moveml #0x2020,sp@-
 1006 	movel a6@(8),a2
 1007 	movel a2@,a0
 1008 	movel a0@(18),a0
 1009 	movel a6@(16),sp@-
 1010 	movel a6@(12),sp@-
 1011 	movew a0@(64),a1
 1012 	addl a2@,a1
 1013 	movel a1,sp@-
 1014 	movel a0@(68),a0
 1015 	jbsr a0@
 1016 	tstl d0
 1017 	seq d1
 1018 	btst #0,d1
 1019 	jeq L1080
 1020 	moveq #2,d2
 1021 	orl d2,a2@(4)
 1022 L1080:
 1023 	movel a2,d0
 1024 	moveml a6@(-8),#0x404
 1025 	unlk a6
 1026 	rts
 1027 	.even
 1028 .globl _open__7istreami7io_mode
 1029 _open__7istreami7io_mode:
 1030 	link a6,#0
 1031 	moveml #0x2020,sp@-
 1032 	movel a6@(8),a2
 1033 	movel a2@,a0
 1034 	movel a0@(18),a0
 1035 	movel a6@(16),sp@-
 1036 	movel a6@(12),sp@-
 1037 	movew a0@(72),a1
 1038 	addl a2@,a1
 1039 	movel a1,sp@-
 1040 	movel a0@(76),a0
 1041 	jbsr a0@
 1042 	tstl d0
 1043 	seq d1
 1044 	btst #0,d1
 1045 	jeq L1084
============ Listing of stream.s ============	PAGE 20

 1046 	moveq #2,d2
 1047 	orl d2,a2@(4)
 1048 L1084:
 1049 	movel a2,d0
 1050 	moveml a6@(-8),#0x404
 1051 	unlk a6
 1052 	rts
 1053 	.even
 1054 .globl _open__7istreamP6_iobuf
 1055 _open__7istreamP6_iobuf:
 1056 	link a6,#0
 1057 	moveml #0x2020,sp@-
 1058 	movel a6@(8),a2
 1059 	movel a2@,a0
 1060 	movel a0@(18),a0
 1061 	movel a6@(12),sp@-
 1062 	movew a0@(80),a1
 1063 	addl a2@,a1
 1064 	movel a1,sp@-
 1065 	movel a0@(84),a0
 1066 	jbsr a0@
 1067 	tstl d0
 1068 	seq d1
 1069 	btst #0,d1
 1070 	jeq L1088
 1071 	moveq #2,d2
 1072 	orl d2,a2@(4)
 1073 L1088:
 1074 	movel a2,d0
 1075 	moveml a6@(-8),#0x404
 1076 	unlk a6
 1077 	rts
 1078 	.even
 1079 .globl _open__7istreamPCc9open_mode
 1080 _open__7istreamPCc9open_mode:
 1081 	link a6,#0
 1082 	moveml #0x2020,sp@-
 1083 	movel a6@(8),a2
 1084 	movel a2@,a0
 1085 	movel a0@(18),a0
 1086 	movel a6@(16),sp@-
 1087 	movel a6@(12),sp@-
 1088 	movew a0@(48),a1
 1089 	addl a2@,a1
 1090 	movel a1,sp@-
 1091 	movel a0@(52),a0
 1092 	jbsr a0@
 1093 	tstl d0
 1094 	seq d1
 1095 	btst #0,d1
 1096 	jeq L1092
 1097 	moveq #2,d2
 1098 	orl d2,a2@(4)
 1099 L1092:
 1100 	movel a2,d0
============ Listing of stream.s ============	PAGE 21

 1101 	moveml a6@(-8),#0x404
 1102 	unlk a6
 1103 	rts
 1104 	.even
 1105 .globl _get__7istreamRc
 1106 _get__7istreamRc:
 1107 	link a6,#0
 1108 	moveml #0x38,sp@-
 1109 	movel a6@(8),a3
 1110 	tstl a3@(4)
 1111 	seq d0
 1112 	btst #0,d0
 1113 	jeq L1095
 1114 	tstl a3@(8)
 1115 	jeq L1097
 1116 	movel a3@(8),a0
 1117 	movel a0@,a1
 1118 	movel a1@(18),a1
 1119 	pea -1:w
 1120 	movew a1@(16),a2
 1121 	addl a0@,a2
 1122 	movel a2,sp@-
 1123 	movel a1@(20),a0
 1124 	jbsr a0@
 1125 	addqw #8,sp
 1126 L1097:
 1127 	movel a3@,a0
 1128 	movel a0@(18),a1
 1129 	movel a0@(8),d1
 1130 	cmpl a0@(4),d1
 1131 	jcs L1101
 1132 	addw a1@(24),a0
 1133 	movel a0,sp@-
 1134 	movel a1@(28),a0
 1135 	jbsr a0@
 1136 	addqw #4,sp
 1137 	jra L1102
 1138 L1101:
 1139 	movel a0@(8),a0
 1140 	moveb a0@,d0
 1141 	extbl d0
 1142 L1102:
 1143 	moveq #-1,d1
 1144 	cmpl d0,d1
 1145 	jne L1103
 1146 	moveq #1,d1
 1147 	orl d1,a3@(4)
 1148 	jra L1095
 1149 L1103:
 1150 	movel a6@(12),a4
 1151 	moveb d0,a4@
 1152 	movel a3@,a0
 1153 	movel a0@(18),a1
 1154 	movel a0@(8),d1
 1155 	cmpl a0@(4),d1
============ Listing of stream.s ============	PAGE 22

 1156 	jcs L1107
 1157 	addw a1@(24),a0
 1158 	movel a0,sp@-
 1159 	movel a1@(28),a0
 1160 	jbsr a0@
 1161 	jra L1095
 1162 L1107:
 1163 	addql #1,a0@(8)
 1164 L1095:
 1165 	movel a3,d0
 1166 	moveml a6@(-12),#0x1c00
 1167 	unlk a6
 1168 	rts
 1169 	.even
 1170 .globl _op$arshift__7istreamR10whitespace
 1171 _op$arshift__7istreamR10whitespace:
 1172 	link a6,#0
 1173 	moveml #0x2030,sp@-
 1174 	movel a6@(8),a3
 1175 	tstl a3@(4)
 1176 	seq d0
 1177 	btst #0,d0
 1178 	jeq L1110
 1179 	tstl a3@(8)
 1180 	jeq L1115
 1181 	movel a3@(8),a0
 1182 	movel a0@,a1
 1183 	movel a1@(18),a1
 1184 	pea -1:w
 1185 	movew a1@(16),a2
 1186 	addl a0@,a2
 1187 	movel a2,sp@-
 1188 	movel a1@(20),a0
 1189 	jbsr a0@
 1190 	addqw #8,sp
 1191 	jra L1115
 1192 L1124:
 1193 	moveb d1,d0
 1194 	extbl d0
 1195 	lea __ctype_+1,a0
 1196 	btst #3,a0@(d0:l)
 1197 	jeq L1116
 1198 	movel a3@,a0
 1199 	movel a0@(18),a1
 1200 	movel a0@(8),d2
 1201 	cmpl a0@(4),d2
 1202 	jcs L1122
 1203 	addw a1@(24),a0
 1204 	movel a0,sp@-
 1205 	movel a1@(28),a0
 1206 	jbsr a0@
 1207 	addqw #4,sp
 1208 	jra L1115
 1209 L1122:
 1210 	addql #1,a0@(8)
============ Listing of stream.s ============	PAGE 23

 1211 L1115:
 1212 	movel a3@,a0
 1213 	movel a0@(18),a1
 1214 	movel a0@(8),d2
 1215 	cmpl a0@(4),d2
 1216 	jcs L1118
 1217 	addw a1@(24),a0
 1218 	movel a0,sp@-
 1219 	movel a1@(28),a0
 1220 	jbsr a0@
 1221 	addqw #4,sp
 1222 	jra L1119
 1223 L1118:
 1224 	movel a0@(8),a0
 1225 	moveb a0@,d0
 1226 	extbl d0
 1227 L1119:
 1228 	movel d0,d1
 1229 	moveq #-1,d2
 1230 	cmpl d1,d2
 1231 	jne L1124
 1232 L1116:
 1233 	moveq #-1,d2
 1234 	cmpl d1,d2
 1235 	jne L1110
 1236 	moveq #1,d2
 1237 	orl d2,a3@(4)
 1238 L1110:
 1239 	movel a3,d0
 1240 	moveml a6@(-12),#0xc04
 1241 	unlk a6
 1242 	rts
 1243 	.even
 1244 .globl _op$arshift__7istreamRc
 1245 _op$arshift__7istreamRc:
 1246 	link a6,#0
 1247 	movel a2,sp@-
 1248 	movel a6@(8),a2
 1249 	tstb a2@(12)
 1250 	jeq L1128
 1251 	pea _WS
 1252 	movel a2,sp@-
 1253 	jbsr _op$arshift__7istreamR10whitespace
 1254 	addqw #8,sp
 1255 L1128:
 1256 	movel a6@(12),sp@-
 1257 	movel a2,sp@-
 1258 	jbsr _get__7istreamRc
 1259 	movel a6@(-4),a2
 1260 	unlk a6
 1261 	rts
 1262 	.even
 1263 .globl _get__7istreamPcic
 1264 _get__7istreamPcic:
 1265 	link a6,#-4
============ Listing of stream.s ============	PAGE 24

 1266 	moveml #0x3830,sp@-
 1267 	movel a6@(8),a3
 1268 	movel a6@(12),a2
 1269 	movel a6@(16),d2
 1270 	moveb a6@(23),d4
 1271 	clrl d3
 1272 	tstl a3@
 1273 	jeq L1132
 1274 	movel a3@,a0
 1275 	movel a0@(18),a0
 1276 	movew a0@(88),a1
 1277 	addl a3@,a1
 1278 	movel a1,sp@-
 1279 	movel a0@(92),a0
 1280 	jbsr a0@
 1281 	addqw #4,sp
 1282 	tstl d0
 1283 	jeq L1132
 1284 	tstl a3@(4)
 1285 	jne L1132
 1286 	moveq #1,d3
 1287 L1132:
 1288 	tstl d3
 1289 	jne L1130
 1290 	moveq #2,d1
 1291 	orl d1,a3@(4)
 1292 	jra L1160
 1293 L1130:
 1294 	clrb a6@(-1)
 1295 	subql #1,d2
 1296 	tstl d2
 1297 	jle L1134
 1298 	pea a6@(-1)
 1299 	movel a3,sp@-
 1300 	jbsr _get__7istreamRc
 1301 	movel d0,a0
 1302 	addqw #8,sp
 1303 	tstl a0@(4)
 1304 	jeq L1137
 1305 	clrl d0
 1306 L1137:
 1307 	tstl d0
 1308 	jeq L1134
 1309 	cmpb a6@(-1),d4
 1310 	jne L1138
 1311 	movel a3@,a0
 1312 	moveb a6@(-1),d0
 1313 	extbl d0
 1314 	movel a0@(8),d1
 1315 	cmpl a0@,d1
 1316 	jhi L1162
 1317 	jra L1155
 1318 L1138:
 1319 	moveb a6@(-1),a2@+
 1320 	subql #1,d2
============ Listing of stream.s ============	PAGE 25

 1321 	jra L1146
 1322 L1159:
 1323 	pea a6@(-1)
 1324 	movel a3,sp@-
 1325 	jbsr _get__7istreamRc
 1326 	movel d0,a0
 1327 	addqw #8,sp
 1328 	tstl a0@(4)
 1329 	jeq L1150
 1330 	clrl d0
 1331 L1150:
 1332 	tstl d0
 1333 	jeq L1134
 1334 	cmpb a6@(-1),d4
 1335 	jne L1151
 1336 	movel a3@,a0
 1337 	moveb a6@(-1),d0
 1338 	extbl d0
 1339 	movel a0@(8),d1
 1340 	cmpl a0@,d1
 1341 	jls L1155
 1342 L1162:
 1343 	subql #1,a0@(8)
 1344 	movel a0@(8),a0
 1345 	moveb d0,a0@
 1346 	extbl d0
 1347 	jra L1156
 1348 L1155:
 1349 	moveq #-1,d0
 1350 L1156:
 1351 	moveq #-1,d1
 1352 	cmpl d0,d1
 1353 	jne L1134
 1354 	moveq #2,d1
 1355 	orl d1,a3@(4)
 1356 	jra L1134
 1357 L1151:
 1358 	moveb a6@(-1),a2@+
 1359 L1146:
 1360 	subql #1,d2
 1361 	moveq #-1,d1
 1362 	cmpl d2,d1
 1363 	jlt L1159
 1364 L1134:
 1365 	clrb a2@
 1366 L1160:
 1367 	movel a3,d0
 1368 	moveml a6@(-24),#0xc1c
 1369 	unlk a6
 1370 	rts
 1371 	.even
 1372 .globl _op$arshift__7istreamPc
 1373 _op$arshift__7istreamPc:
 1374 	link a6,#-4
 1375 	moveml #0x2030,sp@-
============ Listing of stream.s ============	PAGE 26

 1376 	movel a6@(8),a3
 1377 	movel a6@(12),a2
 1378 	clrl d2
 1379 	tstl a3@
 1380 	jeq L1167
 1381 	movel a3@,a0
 1382 	movel a0@(18),a0
 1383 	movew a0@(88),a1
 1384 	addl a3@,a1
 1385 	movel a1,sp@-
 1386 	movel a0@(92),a0
 1387 	jbsr a0@
 1388 	addqw #4,sp
 1389 	tstl d0
 1390 	jeq L1167
 1391 	tstl a3@(4)
 1392 	jne L1167
 1393 	moveq #1,d2
 1394 L1167:
 1395 	tstl d2
 1396 	jeq L1165
 1397 	tstl a2
 1398 	jne L1164
 1399 L1165:
 1400 	moveq #2,d1
 1401 	orl d1,a3@(4)
 1402 	jra L1190
 1403 L1164:
 1404 	tstb a3@(12)
 1405 	jeq L1169
 1406 	pea _WS
 1407 	movel a3,sp@-
 1408 	jbsr _op$arshift__7istreamR10whitespace
 1409 	movel d0,a0
 1410 	addqw #8,sp
 1411 	tstl a0@(4)
 1412 	sne d0
 1413 	btst #0,d0
 1414 	jne L1190
 1415 L1169:
 1416 	pea a6@(-1)
 1417 	movel a3,sp@-
 1418 	jbsr _get__7istreamRc
 1419 	movel d0,a0
 1420 	addqw #8,sp
 1421 	tstl a0@(4)
 1422 	jeq L1174
 1423 	clrl d0
 1424 L1174:
 1425 	tstl d0
 1426 	jeq L1171
 1427 	jra L1180
 1428 L1189:
 1429 	moveb a6@(-1),d0
 1430 	extbl d0
============ Listing of stream.s ============	PAGE 27

 1431 	lea __ctype_+1,a0
 1432 	btst #3,a0@(d0:l)
 1433 	jeq L1180
 1434 	movel a3@,a0
 1435 	movel a0@(8),d1
 1436 	cmpl a0@,d1
 1437 	jls L1185
 1438 	subql #1,a0@(8)
 1439 	movel a0@(8),a0
 1440 	moveb d0,a0@
 1441 	extbl d0
 1442 	jra L1186
 1443 L1185:
 1444 	moveq #-1,d0
 1445 L1186:
 1446 	moveq #-1,d1
 1447 	cmpl d0,d1
 1448 	jne L1171
 1449 	moveq #2,d1
 1450 	orl d1,a3@(4)
 1451 	jra L1171
 1452 L1180:
 1453 	moveb a6@(-1),a2@+
 1454 	pea a6@(-1)
 1455 	movel a3,sp@-
 1456 	jbsr _get__7istreamRc
 1457 	movel d0,a0
 1458 	addqw #8,sp
 1459 	tstl a0@(4)
 1460 	jeq L1179
 1461 	clrl d0
 1462 L1179:
 1463 	tstl d0
 1464 	jne L1189
 1465 L1171:
 1466 	clrb a2@
 1467 L1190:
 1468 	movel a3,d0
 1469 	moveml a6@(-16),#0xc04
 1470 	unlk a6
 1471 	rts
 1472 	.even
 1473 .globl _getline__7istreamPcic
 1474 _getline__7istreamPcic:
 1475 	link a6,#-4
 1476 	moveml #0x3830,sp@-
 1477 	movel a6@(8),a3
 1478 	movel a6@(12),a2
 1479 	movel a6@(16),d2
 1480 	moveb a6@(23),d4
 1481 	clrl d3
 1482 	tstl a3@
 1483 	jeq L1194
 1484 	movel a3@,a0
 1485 	movel a0@(18),a0
============ Listing of stream.s ============	PAGE 28

 1486 	movew a0@(88),a1
 1487 	addl a3@,a1
 1488 	movel a1,sp@-
 1489 	movel a0@(92),a0
 1490 	jbsr a0@
 1491 	addqw #4,sp
 1492 	tstl d0
 1493 	jeq L1194
 1494 	tstl a3@(4)
 1495 	jne L1194
 1496 	moveq #1,d3
 1497 L1194:
 1498 	tstl d3
 1499 	jne L1192
 1500 	moveq #2,d1
 1501 	orl d1,a3@(4)
 1502 	jra L1201
 1503 L1192:
 1504 L1196:
 1505 	subql #1,d2
 1506 	tstl d2
 1507 	jle L1197
 1508 	pea a6@(-1)
 1509 	movel a3,sp@-
 1510 	jbsr _get__7istreamRc
 1511 	movel d0,a0
 1512 	addqw #8,sp
 1513 	tstl a0@(4)
 1514 	jeq L1200
 1515 	clrl d0
 1516 L1200:
 1517 	tstl d0
 1518 	jeq L1197
 1519 	moveb a6@(-1),d0
 1520 	moveb d0,a2@+
 1521 	cmpb d0,d4
 1522 	jne L1196
 1523 L1197:
 1524 	clrb a2@
 1525 L1201:
 1526 	movel a3,d0
 1527 	moveml a6@(-24),#0xc1c
 1528 	unlk a6
 1529 	rts
 1530 	.even
 1531 .globl _readline__7istreamic
 1532 _readline__7istreamic:
 1533 	link a6,#-516
 1534 	moveml #0x3e20,sp@-
 1535 	movel a6@(8),d4
 1536 	movel a6@(12),d5
 1537 	moveb a6@(19),d2
 1538 	lea a6@(-512),a2
 1539 	movel a6,d3
 1540 	addl #-512,d3
============ Listing of stream.s ============	PAGE 29

 1541 	jra L1203
 1542 L1212:
 1543 	cmpb a6@(-513),d2
 1544 	jeq L1204
 1545 	moveb a6@(-513),a2@+
 1546 	movel a2,d0
 1547 	subl d3,d0
 1548 	cmpl #511,d0
 1549 	jle L1203
 1550 	extbl d2
 1551 	movel d2,sp@-
 1552 	movel d5,a1
 1553 	pea a1@(1)
 1554 	movel d4,sp@-
 1555 	jbsr _readline__7istreamic
 1556 	movel d0,a0
 1557 	tstl a0
 1558 	jeq L1220
 1559 	jra L1208
 1560 L1210:
 1561 	moveb a2@-,a0@-
 1562 L1208:
 1563 	cmpl a2,d3
 1564 	jne L1210
 1565 	jra L1220
 1566 L1203:
 1567 	pea a6@(-513)
 1568 	movel d4,sp@-
 1569 	jbsr _get__7istreamRc
 1570 	movel d0,a0
 1571 	addqw #8,sp
 1572 	tstl a0@(4)
 1573 	sne d0
 1574 	btst #0,d0
 1575 	seq d1
 1576 	moveq #1,d0
 1577 	andl d1,d0
 1578 	jne L1212
 1579 L1204:
 1580 	tstl d0
 1581 	jne L1213
 1582 	movel a6,d0
 1583 	addl #-512,d0
 1584 	cmpl a2,d0
 1585 	jeq L1214
 1586 L1213:
 1587 	movel d5,d1
 1588 	moveq #9,d6
 1589 	asll d6,d1
 1590 	addl a2,d1
 1591 	movel a6,d0
 1592 	addl #-512,d0
 1593 	movel d1,d2
 1594 	subl d0,d2
 1595 	addql #1,d2
============ Listing of stream.s ============	PAGE 30

 1596 	movel d2,sp@-
 1597 	jbsr ___builtin_new
 1598 	movel d0,a0
 1599 	tstl a0
 1600 	jeq L1214
 1601 	lea a0@(-1,d2:l),a0
 1602 	clrb a0@
 1603 	movel a6,d0
 1604 	addl #-512,d0
 1605 	jra L1215
 1606 L1217:
 1607 	moveb a2@-,a0@-
 1608 L1215:
 1609 	cmpl a2,d0
 1610 	jne L1217
 1611 L1220:
 1612 	movel a0,d0
 1613 	jra L1202
 1614 L1214:
 1615 	clrl d0
 1616 L1202:
 1617 	moveml a6@(-540),#0x47c
 1618 	unlk a6
 1619 	rts
 1620 	.even
 1621 .globl _gets__7istreamPPcc
 1622 _gets__7istreamPPcc:
 1623 	link a6,#0
 1624 	moveml #0x3830,sp@-
 1625 	movel a6@(8),a2
 1626 	moveb a6@(19),d4
 1627 	clrl d3
 1628 	clrl d2
 1629 	tstl a2@
 1630 	jeq L1225
 1631 	movel a2@,a0
 1632 	movel a0@(18),a0
 1633 	movew a0@(88),a1
 1634 	addl a2@,a1
 1635 	movel a1,sp@-
 1636 	movel a0@(92),a0
 1637 	jbsr a0@
 1638 	addqw #4,sp
 1639 	tstl d0
 1640 	jeq L1225
 1641 	tstl a2@(4)
 1642 	jne L1225
 1643 	moveq #1,d2
 1644 L1225:
 1645 	tstl d2
 1646 	jeq L1223
 1647 	extbl d4
 1648 	movel d4,sp@-
 1649 	clrl sp@-
 1650 	movel a2,sp@-
============ Listing of stream.s ============	PAGE 31

 1651 	jbsr _readline__7istreamic
 1652 	movel a6@(12),a3
 1653 	movel d0,a3@
 1654 	jne L1222
 1655 L1223:
 1656 	moveq #1,d3
 1657 L1222:
 1658 	tstl d3
 1659 	jeq L1227
 1660 	moveq #2,d1
 1661 	orl d1,a2@(4)
 1662 L1227:
 1663 	movel a2,d0
 1664 	moveml a6@(-20),#0xc1c
 1665 	unlk a6
 1666 	rts
 1667 	.even
 1668 .globl _op$arshift__7istreamRl
 1669 _op$arshift__7istreamRl:
 1670 	link a6,#-4
 1671 	moveml #0x3038,sp@-
 1672 	movel a6@(8),a2
 1673 	movel a6@(12),a3
 1674 	clrl d2
 1675 	tstl a2@
 1676 	jeq L1232
 1677 	movel a2@,a0
 1678 	movel a0@(18),a0
 1679 	movew a0@(88),a1
 1680 	addl a2@,a1
 1681 	movel a1,sp@-
 1682 	movel a0@(92),a0
 1683 	jbsr a0@
 1684 	addqw #4,sp
 1685 	tstl d0
 1686 	jeq L1232
 1687 	tstl a2@(4)
 1688 	jne L1232
 1689 	moveq #1,d2
 1690 L1232:
 1691 	tstl d2
 1692 	jne L1230
 1693 	moveq #4,d1
 1694 	orl d1,a2@(4)
 1695 	jra L1260
 1696 L1230:
 1697 	clrl d2
 1698 	clrb d3
 1699 	clrl a3@
 1700 	tstb a2@(12)
 1701 	jeq L1234
 1702 	pea _WS
 1703 	movel a2,sp@-
 1704 	jbsr _op$arshift__7istreamR10whitespace
 1705 	addqw #8,sp
============ Listing of stream.s ============	PAGE 32

 1706 L1234:
 1707 	tstl a2@(4)
 1708 	seq d0
 1709 	btst #0,d0
 1710 	jne L1238
 1711 	moveq #4,d1
 1712 	orl d1,a2@(4)
 1713 	jra L1260
 1714 L1249:
 1715 	cmpb #45,a6@(-1)
 1716 	jne L1243
 1717 	tstb d3
 1718 	jne L1239
 1719 	moveb #45,d3
 1720 	jra L1238
 1721 L1243:
 1722 	cmpb #47,a6@(-1)
 1723 	jle L1239
 1724 	cmpb #57,a6@(-1)
 1725 	jgt L1239
 1726 	movel a3@,d0
 1727 	asll #2,d0
 1728 	addl a3@,d0
 1729 	moveb a6@(-1),d2
 1730 	extbl d2
 1731 	movel d2,a4
 1732 	lea a4@(-48,d0:l:2),a4
 1733 	movel a4,a3@
 1734 L1238:
 1735 	pea a6@(-1)
 1736 	movel a2,sp@-
 1737 	jbsr _get__7istreamRc
 1738 	movel d0,a0
 1739 	addqw #8,sp
 1740 	tstl a0@(4)
 1741 	jeq L1242
 1742 	clrl d0
 1743 L1242:
 1744 	tstl d0
 1745 	jne L1249
 1746 L1239:
 1747 	tstl a2@(4)
 1748 	seq d0
 1749 	btst #0,d0
 1750 	jeq L1250
 1751 	movel a2@,a0
 1752 	moveb a6@(-1),d0
 1753 	extbl d0
 1754 	movel a0@(8),d1
 1755 	cmpl a0@,d1
 1756 	jls L1255
 1757 	subql #1,a0@(8)
 1758 	movel a0@(8),a0
 1759 	moveb d0,a0@
 1760 	extbl d0
============ Listing of stream.s ============	PAGE 33

 1761 	jra L1256
 1762 L1255:
 1763 	moveq #-1,d0
 1764 L1256:
 1765 	moveq #-1,d1
 1766 	cmpl d0,d1
 1767 	jne L1250
 1768 	moveq #2,d1
 1769 	orl d1,a2@(4)
 1770 L1250:
 1771 	tstl d2
 1772 	jne L1258
 1773 	moveq #4,d1
 1774 	orl d1,a2@(4)
 1775 L1258:
 1776 	cmpb #45,d3
 1777 	jne L1260
 1778 	negl a3@
 1779 L1260:
 1780 	movel a2,d0
 1781 	moveml a6@(-24),#0x1c0c
 1782 	unlk a6
 1783 	rts
 1784 	.even
 1785 .globl _op$arshift__7istreamRUl
 1786 _op$arshift__7istreamRUl:
 1787 	link a6,#-4
 1788 	moveml #0x2038,sp@-
 1789 	movel a6@(8),a2
 1790 	movel a6@(12),a3
 1791 	clrl d2
 1792 	tstl a2@
 1793 	jeq L1264
 1794 	movel a2@,a0
 1795 	movel a0@(18),a0
 1796 	movew a0@(88),a1
 1797 	addl a2@,a1
 1798 	movel a1,sp@-
 1799 	movel a0@(92),a0
 1800 	jbsr a0@
 1801 	addqw #4,sp
 1802 	tstl d0
 1803 	jeq L1264
 1804 	tstl a2@(4)
 1805 	jne L1264
 1806 	moveq #1,d2
 1807 L1264:
 1808 	tstl d2
 1809 	jeq L1287
 1810 	clrl d2
 1811 	clrl a3@
 1812 	tstb a2@(12)
 1813 	jeq L1266
 1814 	pea _WS
 1815 	movel a2,sp@-
============ Listing of stream.s ============	PAGE 34

 1816 	jbsr _op$arshift__7istreamR10whitespace
 1817 	addqw #8,sp
 1818 L1266:
 1819 	tstl a2@(4)
 1820 	seq d0
 1821 	btst #0,d0
 1822 	jne L1267
 1823 	jra L1269
 1824 L1276:
 1825 	cmpb #47,a6@(-1)
 1826 	jle L1267
 1827 	cmpb #57,a6@(-1)
 1828 	jgt L1267
 1829 	movel a3@,d0
 1830 	asll #2,d0
 1831 	addl a3@,d0
 1832 	moveb a6@(-1),d2
 1833 	extbl d2
 1834 	movel d2,a4
 1835 	lea a4@(-48,d0:l:2),a4
 1836 	movel a4,a3@
 1837 L1269:
 1838 	pea a6@(-1)
 1839 	movel a2,sp@-
 1840 	jbsr _get__7istreamRc
 1841 	movel d0,a0
 1842 	addqw #8,sp
 1843 	tstl a0@(4)
 1844 	jeq L1273
 1845 	clrl d0
 1846 L1273:
 1847 	tstl d0
 1848 	jne L1276
 1849 L1267:
 1850 	tstl a2@(4)
 1851 	seq d0
 1852 	btst #0,d0
 1853 	jeq L1277
 1854 	movel a2@,a0
 1855 	moveb a6@(-1),d0
 1856 	extbl d0
 1857 	movel a0@(8),d1
 1858 	cmpl a0@,d1
 1859 	jls L1282
 1860 	subql #1,a0@(8)
 1861 	movel a0@(8),a0
 1862 	moveb d0,a0@
 1863 	extbl d0
 1864 	jra L1283
 1865 L1282:
 1866 	moveq #-1,d0
 1867 L1283:
 1868 	moveq #-1,d1
 1869 	cmpl d0,d1
 1870 	jne L1277
============ Listing of stream.s ============	PAGE 35

 1871 	moveq #2,d1
 1872 	orl d1,a2@(4)
 1873 L1277:
 1874 	tstl d2
 1875 	jne L1285
 1876 L1287:
 1877 	moveq #4,d1
 1878 	orl d1,a2@(4)
 1879 L1285:
 1880 	movel a2,d0
 1881 	moveml a6@(-20),#0x1c04
 1882 	unlk a6
 1883 	rts
 1884 	.even
 1885 .globl _op$arshift__7istreamRd
 1886 _op$arshift__7istreamRd:
 1887 	link a6,#-8
 1888 	moveml #0x3f38,sp@-
 1889 	movel a6@(8),a3
 1890 	clrl d2
 1891 	tstl a3@
 1892 	jeq L1291
 1893 	movel a3@,a0
 1894 	movel a0@(18),a0
 1895 	movew a0@(88),a1
 1896 	addl a3@,a1
 1897 	movel a1,sp@-
 1898 	movel a0@(92),a0
 1899 	jbsr a0@
 1900 	addqw #4,sp
 1901 	tstl d0
 1902 	jeq L1291
 1903 	tstl a3@(4)
 1904 	jne L1291
 1905 	moveq #1,d2
 1906 L1291:
 1907 	tstl d2
 1908 	jne L1289
 1909 	moveq #4,d7
 1910 	orl d7,a3@(4)
 1911 	jra L1351
 1912 L1289:
 1913 	tstl __libgxx_io_oblast
 1914 	jeq L1293
 1915 	movel #__libgxx_io_ob,d1
 1916 	movel __libgxx_io_oblast,d0
 1917 	cmpl __libgxx_io_ob+4,d0
 1918 	jcs L1295
 1919 	cmpl __libgxx_io_ob+16,d0
 1920 	jcc L1295
 1921 	movel d0,__libgxx_io_ob+8
 1922 	movel d0,__libgxx_io_ob+12
 1923 	jra L1293
 1924 L1295:
 1925 	movel d0,sp@-
============ Listing of stream.s ============	PAGE 36

 1926 	movel d1,sp@-
 1927 	jbsr __free__7ObstackPv
 1928 	addqw #8,sp
 1929 L1293:
 1930 	clrb a6@(-7)
 1931 	clrb a6@(-3)
 1932 	clrb a6@(-5)
 1933 	clrb d5
 1934 	clrb d4
 1935 	clrb d6
 1936 	clrb d3
 1937 	tstb a3@(12)
 1938 	jeq L1297
 1939 	pea _WS
 1940 	movel a3,sp@-
 1941 	jbsr _op$arshift__7istreamR10whitespace
 1942 	addqw #8,sp
 1943 L1297:
 1944 	tstl a3@(4)
 1945 	seq d0
 1946 	btst #0,d0
 1947 	jne L1298
 1948 	moveq #4,d7
 1949 	orl d7,a3@(4)
 1950 	jra L1351
 1951 L1298:
 1952 	lea __libgxx_io_ob,a2
 1953 	jra L1301
 1954 L1334:
 1955 	cmpb #45,a6@(-1)
 1956 	jeq L1307
 1957 	cmpb #43,a6@(-1)
 1958 	jne L1306
 1959 L1307:
 1960 	tstb d4
 1961 	jeq L1308
 1962 	tstb d6
 1963 	jne L1308
 1964 	moveb a6@(-1),d6
 1965 	moveb d6,d2
 1966 	jra L1354
 1967 L1308:
 1968 	tstb d5
 1969 	jne L1302
 1970 	tstb a6@(-7)
 1971 	jne L1302
 1972 	moveb a6@(-1),d5
 1973 	moveb d5,d2
 1974 	jra L1354
 1975 L1306:
 1976 	cmpb #46,a6@(-1)
 1977 	jne L1317
 1978 	tstb d3
 1979 	jne L1317
 1980 	moveb a6@(-1),d3
============ Listing of stream.s ============	PAGE 37

 1981 	moveb d3,d2
 1982 	jra L1354
 1983 L1317:
 1984 	cmpb #101,a6@(-1)
 1985 	jeq L1322
 1986 	cmpb #69,a6@(-1)
 1987 	jne L1321
 1988 L1322:
 1989 	tstb d4
 1990 	jne L1321
 1991 	moveb a6@(-1),d4
 1992 	moveb d4,d2
 1993 L1354:
 1994 	extbl d2
 1995 	movel __libgxx_io_ob+12,d0
 1996 	addql #1,d0
 1997 	cmpl __libgxx_io_ob+16,d0
 1998 	jls L1324
 1999 	pea 1:w
 2000 	movel a2,sp@-
 2001 	jbsr _newchunk__7Obstacki
 2002 	addqw #8,sp
 2003 L1324:
 2004 	movel a2@(12),a0
 2005 	moveb d2,a0@
 2006 	addql #1,a2@(12)
 2007 	jra L1301
 2008 L1321:
 2009 	cmpb #47,a6@(-1)
 2010 	jle L1302
 2011 	cmpb #57,a6@(-1)
 2012 	jgt L1302
 2013 	moveb a6@(-1),d2
 2014 	extbl d2
 2015 	movel __libgxx_io_ob+12,d0
 2016 	addql #1,d0
 2017 	cmpl __libgxx_io_ob+16,d0
 2018 	jls L1328
 2019 	pea 1:w
 2020 	movel a2,sp@-
 2021 	jbsr _newchunk__7Obstacki
 2022 	addqw #8,sp
 2023 L1328:
 2024 	movel a2@(12),a0
 2025 	moveb d2,a0@
 2026 	addql #1,a2@(12)
 2027 	tstb d4
 2028 	jeq L1329
 2029 	moveb a6@(-1),a6@(-5)
 2030 	jra L1301
 2031 L1329:
 2032 	tstb d3
 2033 	jeq L1331
 2034 	moveb a6@(-1),a6@(-3)
 2035 	jra L1301
============ Listing of stream.s ============	PAGE 38

 2036 L1331:
 2037 	moveb a6@(-1),a6@(-7)
 2038 L1301:
 2039 	pea a6@(-1)
 2040 	movel a3,sp@-
 2041 	jbsr _get__7istreamRc
 2042 	movel d0,a0
 2043 	addqw #8,sp
 2044 	tstl a0@(4)
 2045 	jeq L1305
 2046 	clrl d0
 2047 L1305:
 2048 	tstl d0
 2049 	jne L1334
 2050 L1302:
 2051 	lea __libgxx_io_ob,a2
 2052 	clrl d2
 2053 	movel __libgxx_io_ob+12,d0
 2054 	addql #1,d0
 2055 	cmpl __libgxx_io_ob+16,d0
 2056 	jls L1337
 2057 	pea 1:w
 2058 	movel a2,sp@-
 2059 	jbsr _newchunk__7Obstacki
 2060 	addqw #8,sp
 2061 L1337:
 2062 	movel a2@(12),a0
 2063 	moveb d2,a0@
 2064 	addql #1,a2@(12)
 2065 	movel a2,sp@-
 2066 	jbsr _finish__7Obstack
 2067 	movel d0,d2
 2068 	addqw #4,sp
 2069 	tstl a3@(4)
 2070 	seq d0
 2071 	btst #0,d0
 2072 	jeq L1338
 2073 	movel a3@,a0
 2074 	moveb a6@(-1),d0
 2075 	extbl d0
 2076 	movel a0@(8),d7
 2077 	cmpl a0@,d7
 2078 	jls L1343
 2079 	subql #1,a0@(8)
 2080 	movel a0@(8),a0
 2081 	moveb d0,a0@
 2082 	extbl d0
 2083 	jra L1344
 2084 L1343:
 2085 	moveq #-1,d0
 2086 L1344:
 2087 	moveq #-1,d7
 2088 	cmpl d0,d7
 2089 	jne L1338
 2090 	moveq #2,d7
============ Listing of stream.s ============	PAGE 39

 2091 	orl d7,a3@(4)
 2092 L1338:
 2093 	tstb a6@(-7)
 2094 	jne L1347
 2095 	tstb a6@(-3)
 2096 	jeq L1346
 2097 L1347:
 2098 	tstb d4
 2099 	jeq L1348
 2100 	tstb a6@(-5)
 2101 	jeq L1346
 2102 L1348:
 2103 	movel d2,sp@-
 2104 	jbsr _atof
 2105 	movel a6@(12),a4
 2106 	movel d0,a4@
 2107 	movel d1,a4@(4)
 2108 	addqw #4,sp
 2109 	jra L1349
 2110 L1346:
 2111 	moveq #4,d7
 2112 	orl d7,a3@(4)
 2113 L1349:
 2114 	movel #__libgxx_io_ob,d0
 2115 	cmpl __libgxx_io_ob+4,d2
 2116 	jcs L1352
 2117 	cmpl __libgxx_io_ob+16,d2
 2118 	jcc L1352
 2119 	movel d2,__libgxx_io_ob+8
 2120 	movel d2,__libgxx_io_ob+12
 2121 	jra L1351
 2122 L1352:
 2123 	movel d2,sp@-
 2124 	movel d0,sp@-
 2125 	jbsr __free__7ObstackPv
 2126 L1351:
 2127 	movel a3,d0
 2128 	moveml a6@(-44),#0x1cfc
 2129 	unlk a6
 2130 	rts
 2131 	.even
 2132 .globl _op$arshift__7istreamRi
 2133 _op$arshift__7istreamRi:
 2134 	link a6,#-4
 2135 	movel d2,sp@-
 2136 	movel a6@(8),d2
 2137 	pea a6@(-4)
 2138 	movel d2,sp@-
 2139 	jbsr _op$arshift__7istreamRl
 2140 	movel a6@(12),a0
 2141 	movel a6@(-4),a0@
 2142 	movel d2,d0
 2143 	movel a6@(-8),d2
 2144 	unlk a6
 2145 	rts
============ Listing of stream.s ============	PAGE 40

 2146 	.even
 2147 .globl _op$arshift__7istreamRUi
 2148 _op$arshift__7istreamRUi:
 2149 	link a6,#-4
 2150 	movel d2,sp@-
 2151 	movel a6@(8),d2
 2152 	pea a6@(-4)
 2153 	movel d2,sp@-
 2154 	jbsr _op$arshift__7istreamRl
 2155 	movel a6@(12),a0
 2156 	movel a6@(-4),a0@
 2157 	movel d2,d0
 2158 	movel a6@(-8),d2
 2159 	unlk a6
 2160 	rts
 2161 	.even
 2162 .globl _op$arshift__7istreamRs
 2163 _op$arshift__7istreamRs:
 2164 	link a6,#-4
 2165 	movel d2,sp@-
 2166 	movel a6@(8),d2
 2167 	pea a6@(-4)
 2168 	movel d2,sp@-
 2169 	jbsr _op$arshift__7istreamRl
 2170 	movel a6@(12),a0
 2171 	movew a6@(-2),a0@
 2172 	movel d2,d0
 2173 	movel a6@(-8),d2
 2174 	unlk a6
 2175 	rts
 2176 	.even
 2177 .globl _op$arshift__7istreamRUs
 2178 _op$arshift__7istreamRUs:
 2179 	link a6,#-4
 2180 	movel d2,sp@-
 2181 	movel a6@(8),d2
 2182 	pea a6@(-4)
 2183 	movel d2,sp@-
 2184 	jbsr _op$arshift__7istreamRl
 2185 	movel a6@(12),a0
 2186 	movew a6@(-2),a0@
 2187 	movel d2,d0
 2188 	movel a6@(-8),d2
 2189 	unlk a6
 2190 	rts
 2191 	.even
 2192 .globl _op$arshift__7istreamRf
 2193 _op$arshift__7istreamRf:
 2194 	link a6,#-8
 2195 	movel d2,sp@-
 2196 	movel a6@(8),d2
 2197 	pea a6@(-8)
 2198 	movel d2,sp@-
 2199 	jbsr _op$arshift__7istreamRd
 2200 	fmoved a6@(-8),fp0
============ Listing of stream.s ============	PAGE 41

 2201 	movel a6@(12),a0
 2202 	fmoves fp0,a0@
 2203 	movel d2,d0
 2204 	movel a6@(-12),d2
 2205 	unlk a6
 2206 	rts
 2207 	.even
 2208 .globl _name__7istream
 2209 _name__7istream:
 2210 	link a6,#0
 2211 	movel a2,sp@-
 2212 	movel a6@(8),a0
 2213 	movel a0@,a1
 2214 	movel a1@(18),a1
 2215 	movew a1@(40),a2
 2216 	addl a0@,a2
 2217 	movel a2,sp@-
 2218 	movel a1@(44),a0
 2219 	jbsr a0@
 2220 	movel a6@(-4),a2
 2221 	unlk a6
 2222 	rts
 2223 	.even
 2224 .globl _error__7istream
 2225 _error__7istream:
 2226 	link a6,#0
 2227 	movel a2,sp@-
 2228 	movel a6@(8),a0
 2229 	movel a0@,a1
 2230 	movel a1@(18),a1
 2231 	movew a1@(104),a2
 2232 	addl a0@,a2
 2233 	movel a2,sp@-
 2234 	movel a1@(108),a0
 2235 	jbsr a0@
 2236 	movel a6@(-4),a2
 2237 	unlk a6
 2238 	rts
 2239 .globl _cerr
 2240 .data
 2241 	.even
 2242 _cerr:
 2243 	.skip 10
 2244 .globl _cout
 2245 	.even
 2246 _cout:
 2247 	.skip 10
 2248 .globl _cin
 2249 	.even
 2250 _cin:
 2251 	.skip 14
 2252 .stabs "_fini",10,0,0,0
 2253 .stabs "__GLOBAL_$D$stream_cc",4,0,0,0
 2254 .text
 2255 	.even
============ Listing of stream.s ============	PAGE 42

 2256 .globl __GLOBAL_$D$stream_cc
 2257 __GLOBAL_$D$stream_cc:
 2258 	link a6,#0
 2259 	movel a2,sp@-
 2260 	clrl sp@-
 2261 	pea _cin
 2262 	jbsr __$_istream
 2263 	addqw #8,sp
 2264 	clrl sp@-
 2265 	pea _cout
 2266 	lea __$_ostream,a2
 2267 	jbsr a2@
 2268 	addqw #8,sp
 2269 	clrl sp@-
 2270 	pea _cerr
 2271 	jbsr a2@
 2272 	movel a6@(-4),a2
 2273 	unlk a6
 2274 	rts
 2275 .stabs "___DTOR_LIST__",22,0,0,__GLOBAL_$D$stream_cc
 2276 .stabs "_init",10,0,0,0
 2277 .stabs "__GLOBAL_$I$stream_cc",4,0,0,0
 2278 	.even
 2279 .globl __GLOBAL_$I$stream_cc
 2280 __GLOBAL_$I$stream_cc:
 2281 	link a6,#0
 2282 	moveml #0x30,sp@-
 2283 	lea __iob+40,a2
 2284 	movel a2,sp@-
 2285 	pea _cerr
 2286 	lea ___7ostreamP6_iobuf,a3
 2287 	jbsr a3@
 2288 	pea a2@(-20)
 2289 	pea _cout
 2290 	jbsr a3@
 2291 	pea _cout
 2292 	pea 1:w
 2293 	pea __iob
 2294 	pea _cin
 2295 	jbsr ___7istreamP6_iobufiP7ostream
 2296 	moveml a6@(-8),#0xc00
 2297 	unlk a6
 2298 	rts
 2299 .stabs "___CTOR_LIST__",22,0,0,__GLOBAL_$I$stream_cc
 2300 .comm _WS,2

============ Listing Complete ============

Here's a script of compilation of spl.cc which just contains a simple
program to print a message to standard output using the 'defective'
libg++.a.

Script started on Tue Dec 19 16:43:48 1989
cisa(41)% g++ spl.cc
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::~File() referenced from text segment
streambuf.o: Undefined symbol File::setbuf(int, char *) referenced from text segment
streambuf.o: Undefined symbol File::error() referenced from text segment
gnulib3.o: Undefined symbol ___DTOR_LIST__ referenced from text segment
gnulib3.o: Undefined symbol ___CTOR_LIST__ referenced from text segment
gnulib3.o: Undefined symbol ___CTOR_LIST__ referenced from text segment
File.o: Undefined symbol File::setname(const char *) referenced from text segment
File.o: Undefined symbol File::error() referenced from text segment
cisa(42)% exit
cisa(43)%
script done on Tue Dec 19 16:44:09 198