FW: Parameter values wrong on indirect functions using gcc 2.95 on HP PA machines

Dan Coby dan@artifex.com
Fri Jun 30 22:06:00 GMT 2000


Hello,


I have tried to send this email but your email system will not
accept anything over 200k.  I have a 578k attachment.  Do you
have any suggestions?



My name is Dan Coby and I work for Artifex Software.  One of
Artifex's responsibilities is providing for supporting the
Ghostscript software package.  Ghostscript is an Adobe Postscript
and PDF interpreter.

We have what appears to be a GCC problem.  The problem only seems
to appear on HP Precision Architecture machines using GCC 2.95.

I got this email address from the web.  If I am sending this
information to the wrong people, please let me know and I thank
you for your efforts.

The problem is being reported by one of our customers.  As I said,
it only seems to exist on HP PA machines and GCC 2.95.  I do not
have this machine.  Thus I am working with indirect information
from our customer.  However the evidence seems very strong for
a GCC problem.

Note:  We have tested this same software on a Sun Solaris and GCC
2.95 and everything seems fine.  Ghostscript has thousands of users,
it is commonly the prime printer interface on Linux machines, and
we only have this one report of this specific problem.

The basic information:

OS:  HPUX 10.20 Model 712/80i With a cpu 9000
Compiler:  GCC 2.95 19990728 release

In our software there seems to be a parameter passing problem between
a routine called gs_ht_process_screen_memory() in the source module
gsht.c and a routine called spot_dummy() in the source module zht1.c.
Note:  *phsp->spot_function is pointing at spot_dummy().

To find the problem, I modified gs_ht_process_screen_memory from:

    while ((code = gs_screen_currentpoint(penum, &pt)) == 0)
	if ((code = gs_screen_next(penum, (*phsp->spot_function) (pt.x, pt.y))) <
0)
	    return code;

To:

    while ((code = gs_screen_currentpoint(penum, &pt)) == 0)
      {
	  floatp value;
        dprintf1("In gs_ht_process_screen_memory %d\n", 1);
	  value = (*phsp->spot_function) (pt.x, pt.y);
        if ( value < -1.0 ) {
 	   dprintf3("gsht:gx_ht_process_screen - value less than -1 %f at %f,
%f\n", value, pt.x, pt.y);
        }

        if ( value > 1.0 ) {
 	   dprintf3("gsht:gx_ht_process_screen - value greater than 1 %f at %f,
%f\n", value, pt.x, pt.y);
        }

	  if ((code = gs_screen_next(penum, value)) < 0)
	    return code;
      }

Spot_dummy was changed from:

private float
spot_dummy(floatp x, floatp y)
{
    return (x + y) / 2;
}

To:

private float
spot_dummy(floatp x, floatp y)
{
    floatp value = (x + y) / 2;
    dprintf3("zht1:spot_dummy %f, %f, value = %f\n", x, y, value);
    return value;
}


>From some of the various include files, etc:

floatp is defined as double (in stdpre.h)

    src/stdpre.h:typedef double floatp;

The definition of spot_function is consistent with the definition of
spot_dummy.

   float (*spot_function) (P2(floatp, floatp));		(from gsht.h)

   private float
   spot_dummy(floatp x, floatp y)				(from zht1.c)


The types of pt.x and pt.y passed to

	  value = (*phsp->spot_function) (pt.x, pt.y);

are both double:

typedef struct gs_point_s {					(from gstypes.h)
    double x, y;
} gs_point;


Note:  My MSVC 6.0 compiler gives no warning messages about either zht1.c or
gsht.c.


With these changes the following section from the output was obtained:

In gs_ht_process_screen_memory 1
zht1:spot_dummy -2.334333, 0.333333, value = -1.000500
gsht:gx_ht_process_screen - value less than -1 -1.000500 at
0.666333, -0.334333


This shows:

1.  Entry into gs_ht_process_screen_memory (first line)
2.  The values of pt.x and pt.y are 0.666333, -0.334333 (from third line)
3.  spot_dummy thinks x and y are -2.334333, 0.333333 (from second line)
4.  The calculated value from spot_dummy is consistent with its incorrect
    parameter values.  Also this value is being returned properly to
    gs_ht_process_screen_memory().

We had the customer send us a copy of the assembly language produced by
the compiler.  Included as gsht.s and zht1.s.  Looking at it we see:

The spot_dummy procedure in zht1.o expects double-precision arguments in
%fr5 and %fr7, computes the double-precision result in %fr12, and converts
it to a single-precision return value in %fr4L.  This is as expected.

The call in gx_ht_process_screen_memory expects a single-precision return
value in %fr4L, so that is OK.  However, it is not obvious how it passes
the arguments.  Rather than calling the procedure directly, it uses a
runtime support procedure named $$dyncall, whose operation is unknown.
It is not loading %fr5 and %fr7 as we would expect.  For other calls (such
as the printf calls where we are printing the values) we do see the floating
point registers being loaded.

Everything points to a problem in the parameter passing mechanism with the
indirect call to the function spot_dummy.  We tried several variants but
anything that involved the indirect call failed.

The effective command line which is generated by our makefile is:

	  gcc `cat cc.tr` $(CFLAGS) gsht.o -c gsht.c

Where the contents of cc.tr is
	-Wcast-qual -Wwrite-strings

Where the following combinations for CFLAGS were tried
	-O2
	-g -O
	-g -O0

The actually commnd line is a little more complicated since files are
actually
in multiple directories.


I am sending:

gsht.c - the original (unmodified) version of this source file.
cc.tr - command file used on the compiler command line.
headers.zip - All of the headers in a Ghostscript build.  I do not know
    which ones are required for this file and I would forget one if I tried
    to pick them out.

Since I am doing things by proxy via our customer, I cannot generate the
preprocessor
output that you have requested.  Sorry.


If you are interested in a full copy of Ghostscript and its source files,
they can be obtained at
    http://sourceforge.net/projects/ghostscript
The current version is 6.01 (and that is the version being used by our
customer).
A description of the Ghostscript build process is described in doc/make.htm
in the download.  Our customer is using src/unix-gcc.mak as his makefile.

Thank you

Dan Coby
-------------- next part --------------
-Wcast-qual -Wwrite-strings
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gsht.c
Type: text/x-c
Size: 20913 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/gcc-bugs/attachments/20000630/41341623/attachment.bin>
-------------- next part --------------
	.LEVEL 1.1
	.SPACE $PRIVATE$
	.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
	.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
	.SPACE $TEXT$
	.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
	.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
	.IMPORT $global$,DATA
	.IMPORT $$dyncall,MILLICODE
; gcc_compiled.:
	.EXPORT st_ht_order,DATA
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
st_ht_order
	.word 80
	.word L$C0000
	.word 0
	.word 0
	.word P%ht_order_enum_ptrs
	.word P%ht_order_reloc_ptrs
	.word 0
	.blockz 4
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0000
	.STRING "gx_ht_order\x00"
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
ht_order_component_reloc_ptrs
	.half 0
	.half 0
	.word st_ht_order
	.word 0
	.align 4
st_ht_order_component
	.word 84
	.word L$C0001
	.word 0
	.word 0
	.IMPORT basic_enum_ptrs,CODE
	.word P%basic_enum_ptrs
	.IMPORT basic_reloc_ptrs,CODE
	.word P%basic_reloc_ptrs
	.word 0
	.word ht_order_component_reloc_ptrs
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0001
	.STRING "gx_ht_order_component\x00"
	.align 8
L$C0002
	.word 0
	.word 818089009
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
ht_order_element_enum_ptrs
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP
	.ENTRY
	stw %r2,-20(%r30)
	ldo 64(%r30),%r30
	extru %r25,29,30,%r25
	stw %r25,-16(%r30)
	fldws -16(%r30),%fr22L
	ldil LR'L$C0002,%r19
	ldo RR'L$C0002(%r19),%r19
	fldds 0(%r19),%fr23
	xmpyu %fr22L,%fr23R,%fr22
	fstws %fr22L,-16(%r30)
	ldw -16(%r30),%r20
	extru %r20,29,30,%r19
	comib,= 0,%r19,L$0003
	copy %r26,%r22
	ldil LR'st_ht_order_component,%r21
	ldo RR'st_ht_order_component(%r21),%r21
	copy %r24,%r26
	.IMPORT $$remU,MILLICODE
	bl $$remU,%r31
	copy %r19,%r25
	sh2addl %r29,%r29,%r20
	sh2addl %r20,%r29,%r20
	copy %r24,%r26
	.IMPORT $$divU,MILLICODE
	bl $$divU,%r31
	copy %r19,%r25
	stw %r21,-52(%r30)
	ldw -120(%r30),%r19
	stw %r19,-56(%r30)
	sh2addl %r20,%r22,%r26
	ldi 84,%r25
	copy %r29,%r24
	ldw 16(%r21),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	b L$0005
	ldw -84(%r30),%r2
L$0003
	ldi 0,%r28
	ldw -84(%r30),%r2
L$0005
	bv %r0(%r2)
	ldo -64(%r30),%r30
	.EXIT
	.PROCEND
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 8
L$C0003
	.word 0
	.word 818089009
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
ht_order_element_reloc_ptrs
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=6
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r6,64(%r30)
	stw %r5,-60(%r30)
	stw %r4,-56(%r30)
	stw %r3,-52(%r30)
	copy %r26,%r4
	extru %r25,29,30,%r25
	stw %r25,-16(%r30)
	fldws -16(%r30),%fr22L
	ldil LR'L$C0003,%r19
	ldo RR'L$C0003(%r19),%r19
	fldds 0(%r19),%fr23
	xmpyu %fr22L,%fr23R,%fr22
	fstws %fr22L,-16(%r30)
	ldw -16(%r30),%r19
	extru %r19,29,30,%r3
	comib,= 0,%r3,L$0008
	copy %r23,%r6
	ldil LR'st_ht_order_component,%r19
	ldo RR'st_ht_order_component(%r19),%r5
L$0010
	copy %r4,%r26
	ldi 84,%r25
	copy %r5,%r24
	copy %r6,%r23
	ldw 20(%r5),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	ldo -1(%r3),%r3
	comib,<> 0,%r3,L$0010
	ldo 84(%r4),%r4
L$0008
	ldw -84(%r30),%r2
	ldw -60(%r30),%r5
	ldw -56(%r30),%r4
	ldw -52(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r6
	.EXIT
	.PROCEND
	.EXPORT st_ht_order_component_element,DATA
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
st_ht_order_component_element
	.word 84
	.word L$C0004
	.word 0
	.word 0
	.word P%ht_order_element_enum_ptrs
	.word P%ht_order_element_reloc_ptrs
	.word 0
	.blockz 4
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0004
	.STRING "gx_ht_order_component[]\x00"
	.EXPORT st_halftone,DATA
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
st_halftone
	.word 96
	.word L$C0005
	.word 0
	.word 0
	.word P%halftone_enum_ptrs
	.word P%halftone_reloc_ptrs
	.word 0
	.blockz 4
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0005
	.STRING "gs_halftone\x00"
	.align 2
device_halftone_enum_ptrs
	.half 0
	.half 100
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
device_halftone_reloc_ptrs
	.half 1
	.half 0
	.word st_ht_order
	.word device_halftone_enum_ptrs
	.EXPORT st_device_halftone,DATA
	.align 4
st_device_halftone
	.word 132
	.word L$C0006
	.word 0
	.word 0
	.word P%basic_enum_ptrs
	.word P%basic_reloc_ptrs
	.word 0
	.word device_halftone_reloc_ptrs
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0006
	.STRING "gx_device_halftone\x00"
	.IMPORT ptr_struct_procs,DATA
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
ht_order_enum_ptrs
	.PROC
	.CALLINFO FRAME=0,NO_CALLS
	.ENTRY
	comib,<<,n 3,%r24,L$0014
	blr %r24,%r0
	nop
L$0023
L$0026
	b L$0015
	ldw 60(%r26),%r19
L$0027
	b L$0018
	ldw 60(%r26),%r19
L$0028
	b L$0021
	ldw 72(%r26),%r19
L$0029
	b L$0022
	ldw 76(%r26),%r19
L$0014
	bv %r0(%r2)
	ldi 0,%r28
L$0015
	comib,= 0,%r19,L$0016
	ldi 0,%r20
	ldw 64(%r26),%r20
L$0016
	stw %r20,0(%r23)
L$0025
	ldil LR'ptr_struct_procs,%r28
	bv %r0(%r2)
	ldo RR'ptr_struct_procs(%r28),%r28
L$0018
	comib,= 0,%r19,L$0016
	ldi 0,%r20
	b L$0016
	ldw 68(%r26),%r20
L$0021
	b L$0025
	stw %r19,0(%r23)
L$0022
	stw %r19,0(%r23)
	ldil LR'ptr_struct_procs,%r28
	bv %r0(%r2)
	ldo RR'ptr_struct_procs(%r28),%r28
	.EXIT
	.PROCEND
	.align 4
ht_order_reloc_ptrs
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=4
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r4,64(%r30)
	stw %r3,-60(%r30)
	copy %r26,%r3
	ldw 60(%r3),%r19
	comib,= 0,%r19,L$0031
	copy %r23,%r4
	ldw 0(%r4),%r19
	ldw 64(%r3),%r26
	copy %r4,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,64(%r3)
	ldw 0(%r4),%r19
	ldw 68(%r3),%r26
	copy %r4,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,68(%r3)
L$0031
	ldw 0(%r4),%r19
	ldw 72(%r3),%r26
	copy %r4,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,72(%r3)
	ldw 0(%r4),%r19
	ldw 76(%r3),%r26
	copy %r4,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,76(%r3)
	ldw -84(%r30),%r2
	ldw -60(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r4
	.EXIT
	.PROCEND
	.IMPORT ptr_const_string_procs,DATA
	.IMPORT enum_const_bytestring,CODE
	.align 4
halftone_enum_ptrs
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP
	.ENTRY
	stw %r2,-20(%r30)
	ldo 64(%r30),%r30
	movb,= %r24,%r24,L$0035
	copy %r26,%r25
	comib,= 1,%r24,L$0050
	ldi 0,%r28
	b L$0073
	ldw -84(%r30),%r2
L$0035
	ldw 0(%r25),%r19
	comib,<<,n 8,%r19,L$0074
	blr %r19,%r0
	nop
L$0048
L$0064
	b L$0061
	ldi 0,%r28
L$0065
	b L$0061
	ldi 0,%r28
L$0066
	b L$0061
	ldi 0,%r28
L$0067
	b L$0037
	ldw 40(%r25),%r19
L$0068
	b L$0040
	ldw 32(%r26),%r19
L$0069
	b L$0041
	copy %r23,%r26
L$0070
	b L$0063
	ldw 16(%r25),%r19
L$0071
	b L$0044
	ldw 16(%r25),%r19
L$0072
	b L$0042
	ldw 32(%r25),%r19
L$0037
	comib,<> 0,%r19,L$0038
	ldi 0,%r20
	ldw 48(%r25),%r20
L$0038
	b L$0062
	stw %r20,0(%r23)
L$0040
	stw %r19,0(%r23)
	ldw 36(%r26),%r19
	stw %r19,4(%r23)
	ldil LR'ptr_const_string_procs,%r28
	b L$0061
	ldo RR'ptr_const_string_procs(%r28),%r28
L$0041
	.CALL ARGW0=GR,ARGW1=GR
	bl enum_const_bytestring,%r2
	ldo 44(%r25),%r25
	b L$0073
	ldw -84(%r30),%r2
L$0042
	b L$0062
	stw %r19,0(%r23)
L$0044
	b L$0062
	stw %r19,0(%r23)
L$0050
	ldw 0(%r25),%r19
L$0074
	comib,=,n 5,%r19,L$0055
	comib,<<,n 5,%r19,L$0059
	comib,= 4,%r19,L$0052
	ldi 0,%r28
	b L$0073
	ldw -84(%r30),%r2
L$0059
	comib,=,n 8,%r19,L$0056
	ldi 0,%r28
	b L$0073
	ldw -84(%r30),%r2
L$0052
	ldw 40(%r25),%r19
	comib,<> 0,%r19,L$0053
	ldi 0,%r20
	ldw 28(%r25),%r20
L$0053
	b L$0062
	stw %r20,0(%r23)
L$0055
	b L$0063
	ldw 28(%r25),%r19
L$0056
	ldw 40(%r25),%r19
L$0063
	stw %r19,0(%r23)
L$0062
	ldil LR'ptr_struct_procs,%r28
	ldo RR'ptr_struct_procs(%r28),%r28
L$0061
	ldw -84(%r30),%r2
L$0073
	bv %r0(%r2)
	ldo -64(%r30),%r30
	.EXIT
	.PROCEND
	.IMPORT reloc_const_bytestring,CODE
	.align 4
halftone_reloc_ptrs
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=5
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r5,64(%r30)
	stw %r4,-60(%r30)
	stw %r3,-56(%r30)
	copy %r26,%r5
	copy %r23,%r3
	ldw 0(%r5),%r19
	comib,<< 8,%r19,L$0076
	copy %r5,%r4
	blr %r19,%r0
	nop
L$0088
L$0090
	b L$0099
	ldw -84(%r30),%r2
L$0091
	b L$0099
	ldw -84(%r30),%r2
L$0092
	b L$0099
	ldw -84(%r30),%r2
L$0093
	b L$0077
	ldw 40(%r4),%r19
L$0094
	b L$0079
	ldw 0(%r3),%r19
L$0095
	b L$0081
	ldo 44(%r4),%r26
L$0096
	b L$0100
	ldw 0(%r3),%r19
L$0097
	b L$0084
	ldw 0(%r3),%r19
L$0098
	b L$0082
	ldw 0(%r3),%r19
L$0077
	comib,<> 0,%r19,L$0099
	ldw -84(%r30),%r2
	ldw 0(%r3),%r19
	ldw 48(%r5),%r26
	copy %r3,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	b L$0076
	stw %r28,48(%r5)
L$0079
	ldo 32(%r5),%r26
	copy %r3,%r25
	ldw 8(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	ldw 40(%r4),%r19
	comib,<> 0,%r19,L$0099
	ldw -84(%r30),%r2
	ldw 0(%r3),%r19
	ldw 28(%r5),%r26
	copy %r3,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	b L$0076
	stw %r28,28(%r5)
L$0081
	.CALL ARGW0=GR,ARGW1=GR
	bl reloc_const_bytestring,%r2
	copy %r3,%r25
	ldw 0(%r3),%r19
	ldw 28(%r4),%r26
	copy %r3,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	b L$0076
	stw %r28,28(%r4)
L$0082
	ldw 32(%r5),%r26
	copy %r3,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,32(%r5)
	ldw 0(%r3),%r19
	ldw 40(%r5),%r26
	copy %r3,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	b L$0076
	stw %r28,40(%r5)
L$0084
L$0100
	ldw 16(%r5),%r26
	copy %r3,%r25
	ldw 0(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,16(%r5)
L$0076
	ldw -84(%r30),%r2
L$0099
	ldw -60(%r30),%r4
	ldw -56(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r5
	.EXIT
	.PROCEND
	.IMPORT gx_ht_process_screen_memory,CODE
	.IMPORT gs_currentaccuratescreens,CODE
	.IMPORT gs_screen_install,CODE
	.align 4
	.EXPORT gs_setscreen,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR
gs_setscreen
	.PROC
	.CALLINFO FRAME=384,CALLS,SAVE_RP,ENTRY_GR=4
	.ENTRY
	stw %r2,-20(%r30)
	ldo 384(%r30),%r30
	stw %r5,-120(%r30)
	stw %r4,-116(%r30)
	copy %r26,%r4
	.CALL 
	bl gs_currentaccuratescreens,%r2
	copy %r25,%r5
	ldw 0(%r4),%r19
	stw %r19,-52(%r30)
	ldo -376(%r30),%r26
	copy %r4,%r25
	copy %r5,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gx_ht_process_screen_memory,%r2
	copy %r28,%r23
	movb,< %r28,%r28,L$0104
	ldw -404(%r30),%r2
	.CALL ARGW0=GR
	bl gs_screen_install,%r2
	ldo -376(%r30),%r26
	ldw -404(%r30),%r2
L$0104
	ldw -120(%r30),%r5
	ldw -116(%r30),%r4
	bv %r0(%r2)
	ldo -384(%r30),%r30
	.EXIT
	.PROCEND
	.IMPORT gs_log_error,CODE
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0007
	.STRING "./src/gsht.c\x00"
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gs_currentscreen,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR
gs_currentscreen
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP
	.ENTRY
	stw %r2,-20(%r30)
	ldo 64(%r30),%r30
	ldw 176(%r26),%r19
	ldw 0(%r19),%r19
	comib,= 1,%r19,L$0107
	copy %r25,%r20
	comib,=,n 2,%r19,L$0108
	ldi -21,%r26
	b L$0109
	ldil LR'L$C0007,%r25
L$0107
	ldw 176(%r26),%r19
	b L$0112
	ldo 16(%r19),%r19
L$0108
	ldw 176(%r26),%r19
	ldo 76(%r19),%r19
L$0112
	ldi 12,%r23
	ldws,ma 4(%r19),%r22
	ldws,ma 4(%r19),%r21
	stws,ma %r22,4(%r20)
	addib,>= -8,%r23,.-12
	stws,ma %r21,4(%r20)
	ldws,ma 4(%r19),%r22
	stws,ma %r22,4(%r20)
	b L$0111
	ldi 0,%r28
L$0109
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 146,%r24
L$0111
	ldw -84(%r30),%r2
	bv %r0(%r2)
	ldo -64(%r30),%r30
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gs_currentscreenlevels,ENTRY,PRIV_LEV=3,ARGW0=GR,RTNVAL=GR
gs_currentscreenlevels
	.PROC
	.CALLINFO FRAME=0,NO_CALLS
	.ENTRY
	ldw 196(%r26),%r19
	bv %r0(%r2)
	ldw 48(%r19),%r28
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gx_imager_setscreenphase,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gx_imager_setscreenphase
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=6
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r6,64(%r30)
	stw %r5,-60(%r30)
	stw %r4,-56(%r30)
	stw %r3,-52(%r30)
	copy %r26,%r4
	copy %r25,%r5
	comib,<> -1,%r23,L$0115
	copy %r24,%r6
	ldi 0,%r3
	copy %r4,%r26
L$0124
	copy %r5,%r25
	copy %r6,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gx_imager_setscreenphase,%r2
	copy %r3,%r23
	ldo 1(%r3),%r3
	comib,>= 1,%r3,L$0124
	copy %r4,%r26
	b L$0123
	ldi 0,%r28
L$0115
	comib,<< 1,%r23,L$0121
	ldo 180(%r4),%r19
	zdep %r23,28,29,%r20
	sh3addl %r23,%r19,%r19
	stw %r5,0(%r19)
	addl %r4,%r20,%r20
	stw %r6,184(%r20)
	b L$0123
	ldi 0,%r28
L$0121
	ldi -15,%r26
	ldil LR'L$C0007,%r25
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 169,%r24
L$0123
	ldw -84(%r30),%r2
	ldw -60(%r30),%r5
	ldw -56(%r30),%r4
	ldw -52(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r6
	.EXIT
	.PROCEND
	.IMPORT gx_dc_type_data_none,DATA
	.align 4
	.EXPORT gs_setscreenphase,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gs_setscreenphase
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=4
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r4,64(%r30)
	stw %r3,-60(%r30)
	copy %r26,%r4
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gx_imager_setscreenphase,%r2
	copy %r23,%r3
	movb,< %r28,%r28,L$0126
	ldo 1(%r3),%r19
	comib,<<,n 1,%r19,L$0126
	ldw 384(%r4),%r20
	ldil LR'gx_dc_type_data_none,%r19
	ldo RR'gx_dc_type_data_none(%r19),%r19
	stw %r19,0(%r20)
L$0126
	ldw -84(%r30),%r2
	ldw -60(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r4
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gs_currentscreenphase,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR
gs_currentscreenphase
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP
	.ENTRY
	stw %r2,-20(%r30)
	comib,<< 1,%r24,L$0128
	ldo 64(%r30),%r30
	sh3addl %r24,%r26,%r19
	ldw 180(%r19),%r20
	stw %r20,0(%r25)
	ldw 184(%r19),%r19
	stw %r19,4(%r25)
	b L$0129
	ldi 0,%r28
L$0128
	ldi -15,%r26
	ldil LR'L$C0007,%r25
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 198,%r24
L$0129
	ldw -84(%r30),%r2
	bv %r0(%r2)
	ldo -64(%r30),%r30
	.EXIT
	.PROCEND
	.IMPORT memcpy,CODE
	.align 4
	.EXPORT gs_currenthalftone,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,RTNVAL=GR
gs_currenthalftone
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP
	.ENTRY
	stw %r2,-20(%r30)
	ldo 64(%r30),%r30
	ldw 176(%r26),%r19
	copy %r25,%r26
	copy %r19,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	ldi 96,%r24
	ldi 0,%r28
	ldw -84(%r30),%r2
	bv %r0(%r2)
	ldo -64(%r30),%r30
	.EXIT
	.PROCEND
	.IMPORT gs_screen_init_memory,CODE
	.IMPORT gs_screen_currentpoint,CODE
	.IMPORT fprintf,CODE
	.IMPORT gs_debug_out,DATA
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0008
	.STRING "In gs_ht_process_screen_memory %d\x0a\x00"
	.align 4
L$C0010
	.STRING "gsht:gx_ht_process_screen - value less than -1 %f at %f, %f\x0a\x00"
	.align 4
L$C0012
	.STRING "gsht:gx_ht_process_screen - value greater than 1 %f at %f, %f\x0a\x00"
	.IMPORT gs_screen_next,CODE
	.align 8
L$C0009
	.word 0xbff00000
	.word 0x0
	.align 8
L$C0011
	.word 0x3ff00000
	.word 0x0
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_ht_process_screen_memory,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gx_ht_process_screen_memory
	.PROC
	.CALLINFO FRAME=192,CALLS,SAVE_RP,ENTRY_GR=8,ENTRY_FR=14
	.ENTRY
	stw %r2,-20(%r30)
	ldo 192(%r30),%r30
	stw %r8,-120(%r30)
	stw %r7,-116(%r30)
	stw %r6,-112(%r30)
	stw %r5,-108(%r30)
	stw %r4,-104(%r30)
	stw %r3,-100(%r30)
	ldo -96(%r30),%r1
	fstds,ma %fr14,8(%r1)
	fstds,ma %fr13,8(%r1)
	fstds,ma %fr12,8(%r1)
	copy %r26,%r5
	copy %r24,%r6
	ldw -244(%r30),%r19
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gs_screen_init_memory,%r2
	stw %r19,-52(%r30)
	movb,< %r28,%r28,L$0140
	ldil LR'L$C0008,%r8
	ldil LR'L$C0009,%r19
	ldo RR'L$C0009(%r19),%r19
	fldds 0(%r19),%fr14
	ldil LR'L$C0010,%r7
	ldil LR'L$C0011,%r19
	ldo RR'L$C0011(%r19),%r19
	b L$0133
	fldds 0(%r19),%fr13
L$0135
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r4
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0008(%r8),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldi 1,%r24
	ldo -176(%r30),%r3
	fldds 0(%r3),%fr22
	ldo -192(%r30),%r19
	ldw 8(%r19),%r25
	ldw 12(%r19),%r26
	fstds %fr22,-16(%r30)
	ldw -16(%r30),%r20
	ldw -12(%r30),%r21
	copy %r20,%r23
	copy %r21,%r24
	ldw 8(%r6),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	fcpy,sgl %fr4L,%fr12L
	fcnvff,sgl,dbl %fr12L,%fr7
	fcmp,dbl,< %fr7,%fr14
	ftest
	b L$0142
	fcmp,dbl,> %fr7,%fr13
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo -64(%r30),%r19
	ldo -192(%r30),%r21
	fldds 8(%r21),%fr22
	fstds %fr22,8(%r19)
	fldds 0(%r3),%fr22
	fstds %fr22,0(%r19)
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=FR,ARGW3=FU
	bl fprintf,%r2
	ldo RR'L$C0010(%r7),%r25
	fcnvff,sgl,dbl %fr12L,%fr7
	fcmp,dbl,> %fr7,%fr13
L$0142
	ftest
	b L$0143
	copy %r5,%r26
	addil LR'gs_debug_out-$global$,%r27
	ldw RR'gs_debug_out-$global$(%r1),%r26
	ldil LR'L$C0012,%r25
	ldo -64(%r30),%r20
	ldo -192(%r30),%r1
	fldds 8(%r1),%fr22
	fstds %fr22,8(%r20)
	ldo -176(%r30),%r19
	fldds 0(%r19),%fr22
	fstds %fr22,0(%r20)
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=FR,ARGW3=FU
	bl fprintf,%r2
	ldo RR'L$C0012(%r25),%r25
	copy %r5,%r26
L$0143
	.CALL ARGW0=GR,ARGW2=FR,ARGW3=FU
	bl gs_screen_next,%r2
	fcnvff,sgl,dbl %fr12L,%fr7
	movb,< %r28,%r28,L$0144
	ldw -212(%r30),%r2
L$0133
	copy %r5,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl gs_screen_currentpoint,%r2
	ldo -184(%r30),%r25
	comib,= 0,%r28,L$0135
	ldi 0,%r28
L$0140
	ldw -212(%r30),%r2
L$0144
	ldw -120(%r30),%r8
	ldw -116(%r30),%r7
	ldw -112(%r30),%r6
	ldw -108(%r30),%r5
	ldw -104(%r30),%r4
	ldw -100(%r30),%r3
	ldo -96(%r30),%r1
	fldds,ma 8(%r1),%fr14
	fldds,ma 8(%r1),%fr13
	fldds,ma 8(%r1),%fr12
	bv %r0(%r2)
	ldo -192(%r30),%r30
	.EXIT
	.PROCEND
	.IMPORT igcd,CODE
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0013
	.STRING "alloc_ht_order_data(levels)\x00"
	.align 4
L$C0014
	.STRING "alloc_ht_order_data(bit_data)\x00"
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_ht_alloc_ht_order,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gx_ht_alloc_ht_order
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=5
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r5,64(%r30)
	stw %r4,-60(%r30)
	stw %r3,-56(%r30)
	copy %r26,%r3
	copy %r23,%r5
	ldw -120(%r30),%r19
	ldw -128(%r30),%r4
	sth %r25,32(%r3)
	sth %r24,34(%r3)
	ldo 31(%r25),%r25
	extru %r25,26,27,%r25
	zdep %r25,29,30,%r25
	sth %r25,36(%r3)
	sth %r19,38(%r3)
	sth %r24,40(%r3)
	sth %r19,42(%r3)
	extru %r19,31,16,%r19
	comib,<> 0,%r19,L$0146
	copy %r24,%r20
	b L$0147
	extru %r20,31,16,%r24
L$0146
	ldh 32(%r3),%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl igcd,%r2
	ldh 38(%r3),%r25
	ldh 32(%r3),%r26
	.IMPORT $$divI,MILLICODE
	bl $$divI,%r31
	copy %r28,%r25
	ldh 34(%r3),%r19
	stw %r19,-16(%r30)
	fldws -16(%r30),%fr22L
	stw %r29,-16(%r30)
	fldws -16(%r30),%fr23L
	xmpyu %fr23L,%fr22L,%fr22
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r19
	copy %r19,%r24
L$0147
	stw %r24,44(%r3)
	stw %r5,48(%r3)
	ldw -116(%r30),%r19
	stw %r19,52(%r3)
	ldw -124(%r30),%r19
	stw %r19,56(%r3)
	stw %r4,60(%r3)
	copy %r4,%r26
	copy %r5,%r25
	ldi 4,%r24
	ldil LR'L$C0013,%r23
	ldo RR'L$C0013(%r23),%r23
	ldw 44(%r4),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,64(%r3)
	ldw 56(%r3),%r19
	copy %r4,%r26
	ldw 52(%r3),%r25
	ldw 0(%r19),%r24
	ldil LR'L$C0014,%r23
	ldo RR'L$C0014(%r23),%r23
	ldw 44(%r4),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r28,68(%r3)
	ldw 64(%r3),%r19
	comib,= 0,%r19,L$0152
	copy %r4,%r26
	comib,<> 0,%r28,L$0148
	ldi 0,%r28
	copy %r4,%r26
L$0152
	ldw 68(%r3),%r25
	ldil LR'L$C0014,%r24
	ldo RR'L$C0014(%r24),%r24
	ldw 12(%r4),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r0,68(%r3)
	copy %r4,%r26
	ldw 64(%r3),%r25
	ldil LR'L$C0013,%r24
	ldo RR'L$C0013(%r24),%r24
	ldw 12(%r4),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r0,64(%r3)
	ldi -25,%r26
	ldil LR'L$C0007,%r25
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 275,%r24
	b L$0151
	ldw -84(%r30),%r2
L$0148
	stw %r0,72(%r3)
	stw %r0,76(%r3)
	ldw -84(%r30),%r2
L$0151
	ldw -60(%r30),%r4
	ldw -56(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r5
	.EXIT
	.PROCEND
	.IMPORT gx_compute_cell_values,CODE
	.IMPORT ht_order_procs_table,DATA
	.align 4
	.EXPORT gx_ht_alloc_order,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gx_ht_alloc_order
	.PROC
	.CALLINFO FRAME=256,CALLS,SAVE_RP,ENTRY_GR=10
	.ENTRY
	stw %r2,-20(%r30)
	ldo 256(%r30),%r30
	stw %r10,-120(%r30)
	stw %r9,-116(%r30)
	stw %r8,-112(%r30)
	stw %r7,-108(%r30)
	stw %r6,-104(%r30)
	stw %r5,-100(%r30)
	stw %r4,-96(%r30)
	stw %r3,-92(%r30)
	copy %r26,%r10
	copy %r25,%r5
	copy %r24,%r6
	copy %r23,%r4
	ldw -308(%r30),%r8
	ldw -312(%r30),%r7
	ldo -248(%r30),%r3
	ldi 80,%r9
	copy %r3,%r26
	copy %r10,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	copy %r9,%r24
	.CALL ARGW0=GR
	bl gx_compute_cell_values,%r2
	copy %r3,%r26
	stw %r5,-16(%r30)
	fldws -16(%r30),%fr23L
	stw %r6,-16(%r30)
	fldws -16(%r30),%fr24L
	xmpyu %fr23L,%fr24L,%fr22
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r19
	stw %r19,-52(%r30)
	stw %r4,-56(%r30)
	ldil LR'ht_order_procs_table,%r19
	ldo RR'ht_order_procs_table(%r19),%r19
	stw %r19,-60(%r30)
	stw %r7,-64(%r30)
	copy %r3,%r26
	copy %r5,%r25
	copy %r6,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gx_ht_alloc_ht_order,%r2
	copy %r8,%r23
	movb,< %r28,%r28,L$0155
	copy %r10,%r26
	copy %r3,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	copy %r9,%r24
	ldi 0,%r28
L$0155
	ldw -276(%r30),%r2
	ldw -120(%r30),%r10
	ldw -116(%r30),%r9
	ldw -112(%r30),%r8
	ldw -108(%r30),%r7
	ldw -104(%r30),%r6
	ldw -100(%r30),%r5
	ldw -96(%r30),%r4
	ldw -92(%r30),%r3
	bv %r0(%r2)
	ldo -256(%r30),%r30
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gx_ht_alloc_threshold_order,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gx_ht_alloc_threshold_order
	.PROC
	.CALLINFO FRAME=256,CALLS,SAVE_RP,ENTRY_GR=12
	.ENTRY
	stw %r2,-20(%r30)
	ldo 256(%r30),%r30
	stw %r12,-120(%r30)
	stw %r11,-116(%r30)
	stw %r10,-112(%r30)
	stw %r9,-108(%r30)
	stw %r8,-104(%r30)
	stw %r7,-100(%r30)
	stw %r6,-96(%r30)
	stw %r5,-92(%r30)
	stw %r4,-88(%r30)
	stw %r3,-84(%r30)
	copy %r26,%r12
	copy %r25,%r5
	copy %r24,%r8
	copy %r23,%r10
	ldw -308(%r30),%r9
	stw %r5,-16(%r30)
	fldws -16(%r30),%fr22R
	stw %r8,-16(%r30)
	fldws -16(%r30),%fr22L
	xmpyu %fr22R,%fr22L,%fr22
	fstds %fr22,-16(%r30)
	ldw -16(%r30),%r6
	ldw -12(%r30),%r7
	ldil LR'ht_order_procs_table,%r4
	ldo RR'ht_order_procs_table(%r4),%r4
	ldo -2001(%r7),%r21
	ldil L'63534,%r19
	ldo R'63534(%r19),%r19
	ldo 12(%r4),%r20
	comclr,<< %r19,%r21,%r0
	copy %r20,%r4
	ldo -248(%r30),%r3
	ldi 80,%r11
	copy %r3,%r26
	copy %r12,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	copy %r11,%r24
	.CALL ARGW0=GR
	bl gx_compute_cell_values,%r2
	copy %r3,%r26
	stw %r7,-52(%r30)
	stw %r0,-56(%r30)
	stw %r4,-60(%r30)
	stw %r9,-64(%r30)
	copy %r3,%r26
	copy %r5,%r25
	copy %r8,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gx_ht_alloc_ht_order,%r2
	copy %r10,%r23
	movb,< %r28,%r28,L$0159
	copy %r12,%r26
	copy %r3,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	copy %r11,%r24
	ldi 0,%r28
L$0159
	ldw -276(%r30),%r2
	ldw -120(%r30),%r12
	ldw -116(%r30),%r11
	ldw -112(%r30),%r10
	ldw -108(%r30),%r9
	ldw -104(%r30),%r8
	ldw -100(%r30),%r7
	ldw -96(%r30),%r6
	ldw -92(%r30),%r5
	ldw -88(%r30),%r4
	ldw -84(%r30),%r3
	bv %r0(%r2)
	ldo -256(%r30),%r30
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gx_ht_alloc_client_order,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gx_ht_alloc_client_order
	.PROC
	.CALLINFO FRAME=256,CALLS,SAVE_RP,ENTRY_GR=10
	.ENTRY
	stw %r2,-20(%r30)
	ldo 256(%r30),%r30
	stw %r10,-120(%r30)
	stw %r9,-116(%r30)
	stw %r8,-112(%r30)
	stw %r7,-108(%r30)
	stw %r6,-104(%r30)
	stw %r5,-100(%r30)
	stw %r4,-96(%r30)
	stw %r3,-92(%r30)
	copy %r26,%r10
	copy %r25,%r5
	copy %r24,%r6
	copy %r23,%r8
	ldw -308(%r30),%r4
	ldw -312(%r30),%r7
	ldo -248(%r30),%r3
	ldi 80,%r9
	copy %r3,%r26
	copy %r10,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	copy %r9,%r24
	sth %r5,-248(%r30)
	sth %r0,-246(%r30)
	ldi 1,%r19
	sth %r19,-244(%r30)
	sth %r6,-242(%r30)
	sth %r0,-240(%r30)
	sth %r19,-238(%r30)
	.CALL ARGW0=GR
	bl gx_compute_cell_values,%r2
	copy %r3,%r26
	stw %r4,-52(%r30)
	stw %r0,-56(%r30)
	ldil LR'ht_order_procs_table,%r19
	ldo RR'ht_order_procs_table(%r19),%r19
	stw %r19,-60(%r30)
	stw %r7,-64(%r30)
	copy %r3,%r26
	copy %r5,%r25
	copy %r6,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gx_ht_alloc_ht_order,%r2
	copy %r8,%r23
	movb,< %r28,%r28,L$0162
	copy %r10,%r26
	copy %r3,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	copy %r9,%r24
	ldi 0,%r28
L$0162
	ldw -276(%r30),%r2
	ldw -120(%r30),%r10
	ldw -116(%r30),%r9
	ldw -112(%r30),%r8
	ldw -108(%r30),%r7
	ldw -104(%r30),%r6
	ldw -100(%r30),%r5
	ldw -96(%r30),%r4
	ldw -92(%r30),%r3
	bv %r0(%r2)
	ldo -256(%r30),%r30
	.EXIT
	.PROCEND
	.align 4
compare_samples
	.PROC
	.CALLINFO FRAME=0,NO_CALLS
	.ENTRY
	ldw 4(%r26),%r20
	ldw 4(%r25),%r19
	comclr,>>= %r19,%r20,%r28
	ldi 1,%r28
	comclr,<<= %r19,%r20,%r0
	ldi -1,%r28
	bv,n %r0(%r2)
	.EXIT
	.PROCEND
	.IMPORT qsort,CODE
	.IMPORT gs_debug_c,CODE
	.IMPORT dprintf_file_and_line,CODE
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0016
	.STRING "%s\x00"
	.align 4
L$C0017
	.STRING "[H]Sorted samples:\x0a\x00"
	.align 4
L$C0018
	.STRING "%5u: %5u: %u\x0a\x00"
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
L$C0015
	.word P%compare_samples
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_sort_ht_order,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR
gx_sort_ht_order
	.PROC
	.CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=8
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r8,128(%r30)
	stw %r7,-124(%r30)
	stw %r6,-120(%r30)
	stw %r5,-116(%r30)
	stw %r4,-112(%r30)
	stw %r3,-108(%r30)
	copy %r26,%r6
	movb,= %r25,%r4,L$0168
	ldi 0,%r20
	sh3addl %r20,%r6,%r19
L$0178
	stw %r20,0(%r19)
	ldo 1(%r20),%r20
	comb,>> %r4,%r20,L$0178
	sh3addl %r20,%r6,%r19
L$0168
	copy %r6,%r26
	copy %r4,%r25
	ldi 8,%r24
	ldil LR'L$C0015,%r19
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl qsort,%r2
	ldw RR'L$C0015(%r19),%r23
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 72,%r26
	comib,= 0,%r28,L$0172
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldil LR'L$C0007,%r25
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 372,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldil LR'L$C0016,%r25
	ldo RR'L$C0016(%r25),%r25
	ldil LR'L$C0017,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0017(%r24),%r24
	comb,<<= %r4,%r0,L$0172
	ldi 0,%r3
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r5
	ldil LR'L$C0007,%r8
	ldil LR'L$C0018,%r7
	ldw RR'gs_debug_out-$global$(%r5),%r26
L$0179
	ldo RR'L$C0007(%r8),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 375,%r24
	ldw RR'gs_debug_out-$global$(%r5),%r26
	sh3addl %r3,%r6,%r19
	ldw 0(%r19),%r23
	ldw 4(%r19),%r19
	stw %r19,-52(%r30)
	ldo RR'L$C0018(%r7),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	copy %r3,%r24
	ldo 1(%r3),%r3
	comb,>> %r4,%r3,L$0179
	ldw RR'gs_debug_out-$global$(%r5),%r26
L$0172
	ldw -148(%r30),%r2
	ldw -124(%r30),%r7
	ldw -120(%r30),%r6
	ldw -116(%r30),%r5
	ldw -112(%r30),%r4
	ldw -108(%r30),%r3
	bv %r0(%r2)
	ldwm -128(%r30),%r8
	.EXIT
	.PROCEND
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0024
	.STRING "[h]spot order: num_levels=%u w=%u h=%u strip=%u shift=%u\x0a\x00"
	.IMPORT gx_ht_construct_bits,CODE
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_ht_construct_spot_order,ENTRY,PRIV_LEV=3,ARGW0=GR
gx_ht_construct_spot_order
	.PROC
	.CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=14
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r14,128(%r30)
	stw %r13,-124(%r30)
	stw %r12,-120(%r30)
	stw %r11,-116(%r30)
	stw %r10,-112(%r30)
	stw %r9,-108(%r30)
	stw %r8,-104(%r30)
	stw %r7,-100(%r30)
	stw %r6,-96(%r30)
	stw %r5,-92(%r30)
	stw %r4,-88(%r30)
	stw %r3,-84(%r30)
	copy %r26,%r8
	ldh 32(%r8),%r5
	ldw 48(%r8),%r6
	copy %r6,%r26
	bl $$divU,%r31
	copy %r5,%r25
	copy %r29,%r9
	ldw 68(%r8),%r11
	ldw 64(%r8),%r13
	ldh 42(%r8),%r10
	ldw 44(%r8),%r14
	ldw 52(%r8),%r12
	stw %r5,-16(%r30)
	fldws -16(%r30),%fr23L
	stw %r9,-16(%r30)
	fldws -16(%r30),%fr24L
	xmpyu %fr23L,%fr24L,%fr22
	copy %r12,%r26
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r1
	bl $$divU,%r31
	copy %r1,%r25
	copy %r29,%r7
	sh3addl %r12,%r11,%r4
	ldo -8(%r4),%r4
	copy %r11,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl gx_sort_ht_order,%r2
	copy %r6,%r25
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 104,%r26
	comib,= 0,%r28,L$0182
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 404,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldil LR'L$C0024,%r25
	ldh 40(%r8),%r19
	stw %r19,-52(%r30)
	stw %r9,-56(%r30)
	stw %r10,-60(%r30)
	ldo RR'L$C0024(%r25),%r25
	copy %r6,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	copy %r5,%r23
L$0182
	movb,= %r6,%r21,L$0187
	ldo -1(%r21),%r21
L$0198
	sh3addl %r21,%r11,%r19
	ldw 0(%r19),%r19
	copy %r19,%r26
	bl $$remU,%r31
	copy %r5,%r25
	sub %r19,%r29,%r20
	sh2addl %r21,%r13,%r19
	stw %r21,-16(%r30)
	fldws -16(%r30),%fr23L
	stw %r7,-16(%r30)
	fldws -16(%r30),%fr24L
	xmpyu %fr23L,%fr24L,%fr22
	fstws %fr22R,0(%r19)
	comb,<<= %r7,%r0,L$0186
	ldi 0,%r22
	addl %r20,%r29,%r19
L$0197
	stw %r19,0(%r4)
	ldo 1(%r22),%r22
	ldo -8(%r4),%r4
	addl %r20,%r6,%r20
	addl %r29,%r5,%r26
	sub %r26,%r10,%r26
	bl $$remU,%r31
	copy %r5,%r25
	comb,>> %r7,%r22,L$0197
	addl %r20,%r29,%r19
L$0186
	comib,<> 0,%r21,L$0198
	ldo -1(%r21),%r21
L$0187
	stw %r5,-16(%r30)
	fldws -16(%r30),%fr23L
	stw %r14,-16(%r30)
	fldws -16(%r30),%fr24L
	xmpyu %fr23L,%fr24L,%fr22
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r1
	comb,<>,n %r1,%r12,L$0196
	sth %r14,34(%r8)
	sth %r0,38(%r8)
L$0196
	.CALL ARGW0=GR
	bl gx_ht_construct_bits,%r2
	copy %r8,%r26
	ldw -148(%r30),%r2
	ldw -124(%r30),%r13
	ldw -120(%r30),%r12
	ldw -116(%r30),%r11
	ldw -112(%r30),%r10
	ldw -108(%r30),%r9
	ldw -104(%r30),%r8
	ldw -100(%r30),%r7
	ldw -96(%r30),%r6
	ldw -92(%r30),%r5
	ldw -88(%r30),%r4
	ldw -84(%r30),%r3
	bv %r0(%r2)
	ldwm -128(%r30),%r14
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gx_ht_construct_bit,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR
gx_ht_construct_bit
	.PROC
	.CALLINFO FRAME=0,NO_CALLS
	.ENTRY
	copy %r26,%r22
	copy %r25,%r21
	ldo 31(%r21),%r19
	depi 0,31,5,%r19
	sub %r19,%r21,%r19
	copy %r24,%r20
	bl $$divI,%r31
	copy %r20,%r26
	stw %r29,-16(%r30)
	fldws -16(%r30),%fr23L
	stw %r19,-16(%r30)
	fldws -16(%r30),%fr24L
	xmpyu %fr23L,%fr24L,%fr22
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r19
	addl %r19,%r20,%r20
	extrs %r20,28,29,%r19
	depi 0,31,2,%r19
	stw %r19,0(%r22)
	extru %r20,31,5,%r19
	mtsar %r19
	subi 32,%r21,%r20
	sub %r20,%r21,%r20
	comib,> 0,%r20,L$0201
	zvdepi 1,32,%r24
	mtsar %r21
L$0210
	vshd %r0,%r24,%r19
	sub %r20,%r21,%r20
	comib,<= 0,%r20,L$0210
	or %r24,%r19,%r24
L$0201
	stw %r0,4(%r22)
	comib,= 0,%r24,L$0211
	ldo 7(%r22),%r26
	stbs,ma %r24,-1(%r26)
L$0209
	extru %r24,23,24,%r24
	comib,<>,n 0,%r24,L$0209
	stbs,ma %r24,-1(%r26)
L$0211
	bv,n %r0(%r2)
	.EXIT
	.PROCEND
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0025
	.STRING "[H]Halftone order bits 0x%lx:\x0a\x00"
	.align 4
L$C0026
	.STRING "%4d: %u:0x%lx\x0a\x00"
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_ht_construct_bits,ENTRY,PRIV_LEV=3,ARGW0=GR
gx_ht_construct_bits
	.PROC
	.CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_GR=8
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r8,128(%r30)
	stw %r7,-124(%r30)
	stw %r6,-120(%r30)
	stw %r5,-116(%r30)
	stw %r4,-112(%r30)
	stw %r3,-108(%r30)
	copy %r26,%r5
	ldi 0,%r4
	ldw 52(%r5),%r19
	comb,<<= %r19,%r0,L$0214
	ldw 68(%r5),%r3
L$0216
	copy %r3,%r26
	ldh 32(%r5),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gx_ht_construct_bit,%r2
	ldw 0(%r3),%r24
	ldo 1(%r4),%r4
	ldw 52(%r5),%r19
	comb,>> %r19,%r4,L$0216
	ldo 8(%r3),%r3
L$0214
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 72,%r26
	comib,= 0,%r28,L$0218
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldil LR'L$C0007,%r25
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 467,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldil LR'L$C0025,%r25
	ldo RR'L$C0025(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldw 68(%r5),%r24
	ldi 0,%r4
	ldw 52(%r5),%r19
	comb,<<= %r19,%r0,L$0218
	ldw 68(%r5),%r3
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r6
	ldil LR'L$C0007,%r8
	ldil LR'L$C0026,%r7
L$0222
	ldw RR'gs_debug_out-$global$(%r6),%r26
	ldo RR'L$C0007(%r8),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 472,%r24
	ldw RR'gs_debug_out-$global$(%r6),%r26
	ldw 0(%r3),%r23
	ldw 4(%r3),%r19
	stw %r19,-52(%r30)
	ldo RR'L$C0026(%r7),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	copy %r4,%r24
	ldo 1(%r4),%r4
	ldw 52(%r5),%r19
	comb,>> %r19,%r4,L$0222
	ldo 8(%r3),%r3
L$0218
	ldw -148(%r30),%r2
	ldw -124(%r30),%r7
	ldw -120(%r30),%r6
	ldw -116(%r30),%r5
	ldw -112(%r30),%r4
	ldw -108(%r30),%r3
	bv %r0(%r2)
	ldwm -128(%r30),%r8
	.EXIT
	.PROCEND
	.IMPORT gx_ht_free_cache,CODE
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0027
	.STRING "gx_ht_order_release(transfer)\x00"
	.align 4
L$C0028
	.STRING "gx_ht_order_release(bit_data)\x00"
	.align 4
L$C0029
	.STRING "gx_ht_order_release(levels)\x00"
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_ht_order_release,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR
gx_ht_order_release
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=4
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r4,64(%r30)
	stw %r3,-60(%r30)
	copy %r26,%r4
	comib,= 0,%r24,L$0225
	copy %r25,%r3
	ldw 72(%r4),%r25
	comib,= 0,%r25,L$0227
	copy %r3,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl gx_ht_free_cache,%r2
	copy %r3,%r26
L$0225
	copy %r3,%r26
L$0227
	ldw 76(%r4),%r25
	ldil LR'L$C0027,%r24
	ldo RR'L$C0027(%r24),%r24
	ldw 12(%r3),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	ldw 60(%r4),%r19
	comib,= 0,%r19,L$0226
	copy %r19,%r26
	ldw 68(%r4),%r25
	ldil LR'L$C0028,%r24
	ldo RR'L$C0028(%r24),%r24
	ldw 12(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	ldw 60(%r4),%r19
	copy %r19,%r26
	ldw 64(%r4),%r25
	ldil LR'L$C0029,%r24
	ldo RR'L$C0029(%r24),%r24
	ldw 12(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
L$0226
	ldw -84(%r30),%r2
	ldw -60(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r4
	.EXIT
	.PROCEND
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0030
	.STRING "gx_dev_ht_release(components)\x00"
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_device_halftone_release,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR
gx_device_halftone_release
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=5
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r5,64(%r30)
	stw %r4,-60(%r30)
	stw %r3,-56(%r30)
	copy %r26,%r4
	ldw 100(%r4),%r19
	comib,= 0,%r19,L$0229
	copy %r25,%r5
	ldw 104(%r4),%r19
	comb,<<= %r19,%r0,L$0231
	ldi 0,%r3
	ldw 100(%r4),%r20
L$0236
	sh2addl %r3,%r3,%r19
	sh2addl %r19,%r3,%r19
	sh2addl %r19,%r20,%r26
	ldw 68(%r26),%r20
	ldw 68(%r4),%r19
	comb,= %r19,%r20,L$0232
	copy %r5,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gx_ht_order_release,%r2
	ldi 1,%r24
L$0232
	ldo 1(%r3),%r3
	ldw 104(%r4),%r19
	comb,>>,n %r19,%r3,L$0236
	ldw 100(%r4),%r20
L$0231
	copy %r5,%r26
	ldw 100(%r4),%r25
	ldil LR'L$C0030,%r24
	ldo RR'L$C0030(%r24),%r24
	ldw 12(%r5),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	stw %r0,100(%r4)
	stw %r0,104(%r4)
L$0229
	copy %r4,%r26
	copy %r5,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gx_ht_order_release,%r2
	ldi 0,%r24
	ldw -84(%r30),%r2
	ldw -60(%r30),%r4
	ldw -56(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r5
	.EXIT
	.PROCEND
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0031
	.STRING "gx_imager_dev_ht_install\x00"
	.IMPORT rc_free_struct_only,CODE
	.IMPORT rc_trace_init_free,CODE
	.align 4
L$C0033
	.STRING "\x00"
	.IMPORT rc_trace_adjust,CODE
	.IMPORT gs_next_ids,CODE
	.align 4
dcnames___78
	.word 0
	.blockz 12
	.word 0
	.word 0
	.word 0
	.word 1
	.word 0
	.blockz 12
	.word 2
	.word 3
	.word 4
	.word 0
	.word 5
	.word 6
	.word 7
	.word 8
	.align 4
cscnames___79
	.word 2
	.word 3
	.word 4
	.word 0
	.align 4
L$C0034
	.STRING "[h]dcnames=%lu,%lu,%lu,%lu\x0a\x00"
	.IMPORT memset,CODE
	.align 4
L$C0035
	.STRING "[h]cname[%d]=%lu\x0a\x00"
	.align 4
L$C0036
	.STRING "[h]color_indices[%d]=%d\x0a\x00"
	.align 4
L$C0037
	.STRING "[h]LCM=(%d,%d)\x0a\x00"
	.IMPORT gx_imager_set_effective_xfer,CODE
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
L$C0032
	.word P%rc_free_struct_only
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_imager_dev_ht_install,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR,RTNVAL=GR
gx_imager_dev_ht_install
	.PROC
	.CALLINFO FRAME=192,CALLS,SAVE_RP,ENTRY_GR=18
	.ENTRY
	stw %r2,-20(%r30)
	ldo 192(%r30),%r30
	stw %r18,-120(%r30)
	stw %r17,-116(%r30)
	stw %r16,-112(%r30)
	stw %r15,-108(%r30)
	stw %r14,-104(%r30)
	stw %r13,-100(%r30)
	stw %r12,-96(%r30)
	stw %r11,-92(%r30)
	stw %r10,-88(%r30)
	stw %r9,-84(%r30)
	stw %r8,-80(%r30)
	stw %r7,-76(%r30)
	stw %r6,-72(%r30)
	stw %r5,-68(%r30)
	stw %r4,-64(%r30)
	stw %r3,-60(%r30)
	copy %r26,%r13
	copy %r25,%r12
	copy %r24,%r5
	copy %r23,%r6
	ldw 196(%r13),%r7
	ldh 36(%r12),%r1
	stw %r1,-16(%r30)
	fldws -16(%r30),%fr22L
	ldw 52(%r12),%r26
	bl $$divU,%r31
	ldh 32(%r12),%r25
	stw %r29,-16(%r30)
	fldws -16(%r30),%fr23L
	xmpyu %fr22L,%fr23L,%fr22
	ldw 200(%r13),%r19
	ldw 4(%r19),%r19
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r1
	comb,>>= %r19,%r1,L$0238
	ldi -13,%r26
	ldil LR'L$C0007,%r25
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 530,%r24
	b L$0316
	ldw -212(%r30),%r2
L$0238
	comb,=,n %r7,%r12,L$0244
	comib,=,n 0,%r7,L$0245
	ldw 80(%r7),%r19
	comib,<>,n 1,%r19,L$0245
	ldw 84(%r7),%r25
	ldw 84(%r12),%r19
	comb,<>,n %r19,%r25,L$0245
	.CALL ARGW0=GR,ARGW1=GR
	bl gx_device_halftone_release,%r2
	copy %r7,%r26
	b,n L$0244
L$0245
	ldw 196(%r13),%r20
	comib,=,n 0,%r20,L$0251
	ldw 80(%r20),%r19
	comib,<,n 1,%r19,L$0251
	ldw 84(%r20),%r20
	ldw 84(%r12),%r19
	comb,=,n %r19,%r20,L$0248
L$0251
	ldw 84(%r12),%r19
	ldil LR'st_device_halftone,%r25
	ldil LR'L$C0031,%r24
	copy %r19,%r26
	ldo RR'st_device_halftone(%r25),%r25
	ldo RR'L$C0031(%r24),%r24
	ldw 36(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	movb,= %r28,%r4,L$0315
	ldi 1,%r19
	stw %r19,80(%r4)
	ldw 84(%r12),%r19
	stw %r19,84(%r4)
	ldil LR'L$C0032,%r19
	ldw RR'L$C0032(%r19),%r19
	stw %r19,88(%r4)
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 94,%r26
	comib,= 0,%r28,L$0253
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 543,%r24
	ldil LR'L$C0016,%r25
	ldil LR'L$C0033,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0016(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0033(%r24),%r24
	copy %r4,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl rc_trace_init_free,%r2
	ldo 80(%r4),%r25
L$0253
	ldw 196(%r13),%r19
	comib,=,n 0,%r19,L$0263
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 94,%r26
	comib,= 0,%r28,L$0267
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 543,%r24
	ldil LR'L$C0016,%r25
	ldil LR'L$C0033,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0016(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0033(%r24),%r24
	ldw 196(%r13),%r25
	copy %r25,%r26
	ldo 80(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl rc_trace_adjust,%r2
	ldi -1,%r24
L$0267
	ldw 196(%r13),%r20
	ldw 80(%r20),%r19
	ldo -1(%r19),%r19
	stw %r19,80(%r20)
L$0263
	stw %r4,196(%r13)
L$0248
	ldw 196(%r13),%r7
L$0244
	ldw 80(%r7),%r19
	stw %r19,-184(%r30)
	ldw 84(%r7),%r19
	stw %r19,-180(%r30)
	ldw 88(%r7),%r19
	stw %r19,-176(%r30)
	copy %r7,%r26
	copy %r12,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	ldi 132,%r24
	ldw -184(%r30),%r19
	stw %r19,80(%r7)
	ldw -180(%r30),%r19
	stw %r19,84(%r7)
	ldw -176(%r30),%r19
	stw %r19,88(%r7)
	.CALL ARGW0=GR
	bl gs_next_ids,%r2
	ldi 1,%r26
	stw %r28,92(%r7)
	stw %r5,96(%r7)
	ldw 200(%r13),%r19
	stw %r0,80(%r19)
	ldw 200(%r13),%r19
	stw %r0,84(%r19)
	ldw 200(%r13),%r19
	ldw 8(%r19),%r19
	stw %r0,0(%r19)
	ldw 100(%r12),%r19
	comib,=,n 0,%r19,L$0270
	ldw 52(%r6),%r21
	zdep %r21,27,28,%r20
	ldil LR'dcnames___78,%r19
	ldo RR'dcnames___78(%r19),%r19
	addl %r20,%r19,%r9
	ldi 1,%r14
	comib,<> 4,%r21,L$0271
	copy %r14,%r16
	comib,= 2,%r5,L$0317
	ldil LR'cscnames___79,%r19
	comiclr,<> 7,%r5,%r0
L$0317
	ldo RR'cscnames___79(%r19),%r9
L$0271
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 104,%r26
	comib,= 0,%r28,L$0274
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 596,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldil LR'L$C0034,%r25
	ldw 0(%r9),%r24
	ldw 4(%r9),%r23
	ldw 8(%r9),%r19
	stw %r19,-52(%r30)
	ldw 12(%r9),%r19
	stw %r19,-56(%r30)
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	ldo RR'L$C0034(%r25),%r25
L$0274
	ldo 108(%r7),%r26
	ldi 0,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memset,%r2
	ldi 16,%r24
	ldw 104(%r12),%r19
	comb,<<= %r19,%r0,L$0279
	ldi 0,%r6
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r15
	ldil LR'L$C0007,%r18
	ldil LR'L$C0035,%r17
	sh2addl %r6,%r6,%r19
L$0319
	sh2addl %r19,%r6,%r19
	ldw 100(%r12),%r20
	sh2addl %r19,%r20,%r5
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 104,%r26
	comib,= 0,%r28,L$0283
	ldw RR'gs_debug_out-$global$(%r15),%r26
	ldo RR'L$C0007(%r18),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 604,%r24
	ldw RR'gs_debug_out-$global$(%r15),%r26
	ldo RR'L$C0035(%r17),%r25
	copy %r6,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	ldw 80(%r5),%r23
L$0283
	ldi 0,%r3
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r4
	ldil LR'L$C0007,%r11
	ldil LR'L$C0036,%r10
	ldo 108(%r7),%r8
	ldw 80(%r5),%r20
L$0318
	ldwx,s %r3(%r9),%r19
	comb,<>,n %r19,%r20,L$0289
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 104,%r26
	comib,= 0,%r28,L$0293
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0007(%r11),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 608,%r24
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0036(%r10),%r25
	copy %r3,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	copy %r6,%r23
L$0293
	sh2addl %r3,%r8,%r19
	stw %r6,0(%r19)
L$0289
	ldo 1(%r3),%r3
	comib,>=,n 3,%r3,L$0318
	ldw 80(%r5),%r20
	ldo 1(%r6),%r6
	ldw 104(%r12),%r19
	comb,>> %r19,%r6,L$0319
	sh2addl %r6,%r6,%r19
L$0279
	ldi 0,%r6
	ldo 108(%r7),%r8
	ldwx,s %r6(%r8),%r19
L$0320
	sh2addl %r19,%r19,%r20
	sh2addl %r20,%r19,%r19
	ldw 100(%r12),%r20
	sh2addl %r19,%r20,%r20
	ldh 32(%r20),%r3
	ldw 44(%r20),%r5
	copy %r16,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl igcd,%r2
	copy %r3,%r25
	copy %r16,%r26
	bl $$divI,%r31
	copy %r28,%r25
	copy %r29,%r4
	copy %r14,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl igcd,%r2
	copy %r5,%r25
	copy %r14,%r26
	bl $$divI,%r31
	copy %r28,%r25
	copy %r29,%r19
	zdepi -1,31,31,%r26
	bl $$divI,%r31
	copy %r4,%r25
	comb,<<,n %r29,%r3,L$0303
	stw %r3,-16(%r30)
	fldws -16(%r30),%fr23L
	stw %r4,-16(%r30)
	fldws -16(%r30),%fr24L
	xmpyu %fr23L,%fr24L,%fr22
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r1
	b L$0304
	copy %r1,%r16
L$0303
	zdepi -1,31,31,%r16
L$0304
	zdepi -1,31,31,%r26
	bl $$divI,%r31
	copy %r19,%r25
	comb,<<,n %r29,%r5,L$0305
	stw %r5,-16(%r30)
	fldws -16(%r30),%fr23L
	stw %r19,-16(%r30)
	fldws -16(%r30),%fr24L
	xmpyu %fr23L,%fr24L,%fr22
	fstws %fr22R,-16(%r30)
	ldw -16(%r30),%r1
	b L$0301
	copy %r1,%r14
L$0305
	zdepi -1,31,31,%r14
L$0301
	ldo 1(%r6),%r6
	comib,>>=,n 3,%r6,L$0320
	ldwx,s %r6(%r8),%r19
	stw %r16,124(%r7)
	b L$0308
	stw %r14,128(%r7)
L$0315
	ldil LR'L$C0007,%r25
	ldi -25,%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 543,%r24
	b L$0316
	ldw -212(%r30),%r2
L$0270
	ldh 32(%r7),%r19
	stw %r19,124(%r7)
	ldw 44(%r7),%r19
	stw %r19,128(%r7)
L$0308
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 104,%r26
	comib,= 0,%r28,L$0310
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 634,%r24
	ldil LR'L$C0037,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0037(%r25),%r25
	ldw 124(%r7),%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	ldw 128(%r7),%r23
L$0310
	.CALL ARGW0=GR
	bl gx_imager_set_effective_xfer,%r2
	copy %r13,%r26
	ldi 0,%r28
	ldw -212(%r30),%r2
L$0316
	ldw -120(%r30),%r18
	ldw -116(%r30),%r17
	ldw -112(%r30),%r16
	ldw -108(%r30),%r15
	ldw -104(%r30),%r14
	ldw -100(%r30),%r13
	ldw -96(%r30),%r12
	ldw -92(%r30),%r11
	ldw -88(%r30),%r10
	ldw -84(%r30),%r9
	ldw -80(%r30),%r8
	ldw -76(%r30),%r7
	ldw -72(%r30),%r6
	ldw -68(%r30),%r5
	ldw -64(%r30),%r4
	ldw -60(%r30),%r3
	bv %r0(%r2)
	ldo -192(%r30),%r30
	.EXIT
	.PROCEND
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0048
	.STRING "gx_ht_install(new halftone)\x00"
	.IMPORT rc_trace_free_struct,CODE
	.align 4
L$C0050
	.STRING "gx_ht_install(old halftone)\x00"
	.IMPORT eprintf_program_ident,CODE
	.IMPORT gs_program_name,CODE
	.IMPORT gs_revision_number,CODE
	.IMPORT lprintf_file_and_line,CODE
	.align 4
L$C0051
	.STRING "0x%lx has ref_count of %ld!\x0a\x00"
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
L$C0049
	.word P%rc_free_struct_only
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
	.EXPORT gx_ht_install,ENTRY,PRIV_LEV=3,ARGW0=GR,ARGW1=GR,ARGW2=GR,RTNVAL=GR
gx_ht_install
	.PROC
	.CALLINFO FRAME=192,CALLS,SAVE_RP,ENTRY_GR=9
	.ENTRY
	stw %r2,-20(%r30)
	ldo 192(%r30),%r30
	stw %r9,-120(%r30)
	stw %r8,-116(%r30)
	stw %r7,-112(%r30)
	stw %r6,-108(%r30)
	stw %r5,-104(%r30)
	stw %r4,-100(%r30)
	stw %r3,-96(%r30)
	copy %r26,%r7
	copy %r25,%r8
	copy %r24,%r9
	ldw 176(%r7),%r3
	comib,= 0,%r3,L$0322
	ldw 8(%r8),%r5
	ldw 8(%r3),%r19
	comb,<> %r5,%r19,L$0364
	ldil LR'st_halftone,%r25
	ldw 4(%r3),%r19
	comib,<> 1,%r19,L$0365
	ldil LR'L$C0048,%r24
	b L$0323
	copy %r3,%r6
L$0322
	ldil LR'st_halftone,%r25
L$0364
	ldil LR'L$C0048,%r24
L$0365
	copy %r5,%r26
	ldo RR'st_halftone(%r25),%r25
	ldo RR'L$C0048(%r24),%r24
	ldw 36(%r5),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	movb,= %r28,%r6,L$0361
	ldi 1,%r19
	stw %r19,4(%r6)
	stw %r5,8(%r6)
	ldil LR'L$C0049,%r19
	ldw RR'L$C0049(%r19),%r19
	stw %r19,12(%r6)
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 94,%r26
	comib,= 0,%r28,L$0323
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r4
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 660,%r24
	ldil LR'L$C0016,%r25
	ldil LR'L$C0033,%r24
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0016(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0033(%r24),%r24
	copy %r6,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl rc_trace_init_free,%r2
	ldo 4(%r6),%r25
L$0323
	copy %r7,%r26
	copy %r9,%r25
	ldw 0(%r8),%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl gx_imager_dev_ht_install,%r2
	ldw 452(%r7),%r23
	movb,>=,n %r28,%r4,L$0335
	comb,= %r3,%r6,L$0336
	copy %r5,%r26
	copy %r6,%r25
	ldil LR'L$C0048,%r24
	ldo RR'L$C0048(%r24),%r24
	ldw 12(%r5),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
L$0336
	b L$0360
	copy %r4,%r28
L$0361
	ldil LR'L$C0007,%r25
	ldi -25,%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 660,%r24
	b L$0362
	ldw -212(%r30),%r2
L$0335
	comb,=,n %r3,%r6,L$0337
	comib,=,n 0,%r3,L$0337
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 94,%r26
	comib,= 0,%r28,L$0345
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r4
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 669,%r24
	ldil LR'L$C0016,%r25
	ldil LR'L$C0033,%r24
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0016(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0033(%r24),%r24
	copy %r3,%r26
	ldo 4(%r3),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl rc_trace_adjust,%r2
	ldi -1,%r24
L$0345
	ldw 4(%r3),%r19
	ldo -1(%r19),%r19
	comib,<> 0,%r19,L$0347
	stw %r19,4(%r3)
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 94,%r26
	comib,= 0,%r28,L$0351
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r4
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 669,%r24
	ldil LR'L$C0016,%r25
	ldil LR'L$C0033,%r24
	ldw RR'gs_debug_out-$global$(%r4),%r26
	ldo RR'L$C0016(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0033(%r24),%r24
	ldil LR'L$C0050,%r24
	copy %r3,%r26
	ldo 4(%r3),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl rc_trace_free_struct,%r2
	ldo RR'L$C0050(%r24),%r24
L$0351
	ldil LR'L$C0050,%r24
	ldw 8(%r3),%r26
	copy %r3,%r25
	ldo RR'L$C0050(%r24),%r24
	ldw 12(%r3),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	b L$0363
	ldw 4(%r6),%r19
L$0347
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 63,%r26
	comib,=,n 0,%r28,L$0337
	ldw 4(%r3),%r19
	comib,<=,n 0,%r19,L$0337
	.CALL 
	bl gs_program_name,%r2
	nop
	.CALL 
	bl gs_revision_number,%r2
	copy %r28,%r4
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r5
	ldw RR'gs_debug_out-$global$(%r5),%r26
	copy %r4,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl eprintf_program_ident,%r2
	copy %r28,%r24
	ldil LR'L$C0007,%r25
	ldw RR'gs_debug_out-$global$(%r5),%r26
	ldo RR'L$C0007(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl lprintf_file_and_line,%r2
	ldi 669,%r24
	ldil LR'L$C0051,%r25
	ldw RR'gs_debug_out-$global$(%r5),%r26
	ldo RR'L$C0051(%r25),%r25
	copy %r3,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl fprintf,%r2
	ldw 4(%r3),%r23
L$0337
	ldw 4(%r6),%r19
L$0363
	stw %r19,-184(%r30)
	ldo 8(%r6),%r20
	ldws,ma 4(%r20),%r19
	stw %r19,-180(%r30)
	ldw 0(%r20),%r19
	stw %r19,-176(%r30)
	copy %r6,%r26
	copy %r8,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	ldi 96,%r24
	ldw -184(%r30),%r19
	stw %r19,4(%r6)
	ldo 8(%r6),%r20
	ldw -180(%r30),%r19
	stws,ma %r19,4(%r20)
	ldw -176(%r30),%r19
	stw %r19,0(%r20)
	stw %r6,176(%r7)
	ldw 384(%r7),%r20
	ldil LR'gx_dc_type_data_none,%r19
	ldo RR'gx_dc_type_data_none(%r19),%r19
	stw %r19,0(%r20)
	ldi 0,%r28
L$0360
	ldw -212(%r30),%r2
L$0362
	ldw -120(%r30),%r9
	ldw -116(%r30),%r8
	ldw -112(%r30),%r7
	ldw -108(%r30),%r6
	ldw -104(%r30),%r5
	ldw -100(%r30),%r4
	ldw -96(%r30),%r3
	bv %r0(%r2)
	ldo -192(%r30),%r30
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gx_imager_set_effective_xfer,ENTRY,PRIV_LEV=3,ARGW0=GR
gx_imager_set_effective_xfer
	.PROC
	.CALLINFO FRAME=0,NO_CALLS
	.ENTRY
	ldw 196(%r26),%r24
	ldo 232(%r26),%r20
	ldo 216(%r26),%r19
	ldi 8,%r23
	ldws,ma 4(%r19),%r22
	ldws,ma 4(%r19),%r21
	stws,ma %r22,4(%r20)
	addib,>= -8,%r23,.-12
	stws,ma %r21,4(%r20)
	comib,=,n 0,%r24,L$0366
	ldw 100(%r24),%r19
	comib,<> 0,%r19,L$0368
	ldi 0,%r22
	ldw 76(%r24),%r19
	comib,=,n 0,%r19,L$0366
	stw %r19,244(%r26)
	stw %r19,240(%r26)
	stw %r19,236(%r26)
	bv %r0(%r2)
	stw %r19,232(%r26)
L$0368
	ldo 108(%r24),%r25
	ldo 232(%r26),%r26
	zdep %r22,29,30,%r23
L$0377
	sh2addl %r22,%r25,%r19
	ldw 0(%r19),%r19
	ldw 100(%r24),%r21
	sh2addl %r19,%r19,%r20
	sh2addl %r20,%r19,%r19
	sh2addl %r19,%r21,%r21
	ldw 76(%r21),%r20
	comib,= 0,%r20,L$0373
	addl %r26,%r23,%r19
	stw %r20,0(%r19)
L$0373
	ldo 1(%r22),%r22
	comib,>= 3,%r22,L$0377
	zdep %r22,29,30,%r23
L$0366
	bv,n %r0(%r2)
	.EXIT
	.PROCEND
	.align 4
	.EXPORT gx_set_effective_transfer,ENTRY,PRIV_LEV=3,ARGW0=GR
gx_set_effective_transfer
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP
	.ENTRY
	stw %r2,-20(%r30)
	.CALL ARGW0=GR
	bl gx_imager_set_effective_xfer,%r2
	ldo 64(%r30),%r30
	ldw -84(%r30),%r2
	bv %r0(%r2)
	ldo -64(%r30),%r30
	.EXIT
	.PROCEND
-------------- next part --------------
	.LEVEL 1.1
	.SPACE $PRIVATE$
	.SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
	.SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
	.SPACE $TEXT$
	.SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
	.SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
	.IMPORT $global$,DATA
	.IMPORT $$dyncall,MILLICODE
; gcc_compiled.:
	.IMPORT fprintf,CODE
	.IMPORT gs_debug_out,DATA
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0001
	.STRING "zht1:spot_dummy %f, %f, value = %f\x0a\x00"
	.align 8
L$C0000
	.word 0x3fe00000
	.word 0x0
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
spot_dummy
	.PROC
	.CALLINFO FRAME=128,CALLS,SAVE_RP,ENTRY_FR=12
	.ENTRY
	stw %r2,-20(%r30)
	ldo 128(%r30),%r30
	ldo -128(%r30),%r1
	fstds,ma %fr12,8(%r1)
	fadd,dbl %fr5,%fr7,%fr12
	ldil LR'L$C0000,%r19
	ldo RR'L$C0000(%r19),%r19
	fldds 0(%r19),%fr22
	fmpy,dbl %fr12,%fr22,%fr12
	addil LR'gs_debug_out-$global$,%r27
	ldo -64(%r30),%r19
	fstds %fr7,8(%r19)
	fstds %fr12,0(%r19)
	ldw RR'gs_debug_out-$global$(%r1),%r26
	ldil LR'L$C0001,%r25
	ldo RR'L$C0001(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=FR,ARGW3=FU
	bl fprintf,%r2
	fcpy,dbl %fr5,%fr7
	fcnvff,dbl,sgl %fr12,%fr4L
	ldw -148(%r30),%r2
	ldo -128(%r30),%r1
	fldds,ma 8(%r1),%fr12
	bv %r0(%r2)
	ldo -128(%r30),%r30
	.EXIT
	.PROCEND
	.IMPORT zscreen_params,CODE
	.IMPORT ref_stack_extend,CODE
	.IMPORT st_halftone,DATA
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0003
	.STRING "setcolorscreen(halftone)\x00"
	.IMPORT rc_free_struct_only,CODE
	.IMPORT gs_debug_c,CODE
	.IMPORT dprintf_file_and_line,CODE
	.IMPORT rc_trace_init_free,CODE
	.align 4
L$C0005
	.STRING "./src/zht1.c\x00"
	.align 4
L$C0006
	.STRING "%s\x00"
	.align 4
L$C0007
	.STRING "\x00"
	.IMPORT st_device_halftone,DATA
	.align 4
L$C0008
	.STRING "setcolorscreen(device halftone)\x00"
	.IMPORT gs_log_error,CODE
	.IMPORT memcpy,CODE
	.IMPORT gs_sethalftone_prepare,CODE
	.IMPORT memcpy,CODE
	.IMPORT gs_debug,DATA
	.IMPORT zscreen_enum_init,CODE
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
L$C0002
	.word P%spot_dummy
	.align 4
L$C0004
	.word P%rc_free_struct_only
	.align 4
L$C0009
	.word P%setcolorscreen_cleanup
	.align 4
L$C0010
	.word P%setcolorscreen_finish
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
zsetcolorscreen
	.PROC
	.CALLINFO FRAME=320,CALLS,SAVE_RP,ENTRY_GR=12
	.ENTRY
	stw %r2,-20(%r30)
	ldo 320(%r30),%r30
	stw %r12,-120(%r30)
	stw %r11,-116(%r30)
	stw %r10,-112(%r30)
	stw %r9,-108(%r30)
	stw %r8,-104(%r30)
	stw %r7,-100(%r30)
	stw %r6,-96(%r30)
	stw %r5,-92(%r30)
	stw %r4,-88(%r30)
	stw %r3,-84(%r30)
	copy %r26,%r8
	ldw 256(%r8),%r10
	ldi 0,%r5
	ldi 0,%r4
	ldo -312(%r30),%r9
	ldo -304(%r30),%r7
	ldil LR'L$C0002,%r19
	ldw RR'L$C0002(%r19),%r12
	ldo -184(%r30),%r6
	ldi 12,%r11
	sh1addl %r4,%r4,%r19
L$0053
	zdep %r19,28,29,%r19
	ldo -72(%r19),%r19
	addl %r10,%r19,%r3
	sh2addl %r4,%r4,%r25
	copy %r3,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl zscreen_params,%r2
	sh2addl %r25,%r9,%r25
	movb,< %r28,%r28,L$0049
	sh2addl %r4,%r4,%r19
	sh2addl %r19,%r7,%r19
	stw %r12,0(%r19)
	sh3addl %r4,%r6,%r20
	ldw 0(%r3),%r19
	stw %r19,0(%r20)
	ldw 4(%r3),%r19
	stw %r19,4(%r20)
	ldh 0(%r3),%r19
	and %r19,%r11,%r19
	extru %r19,29,30,%r19
	comclr,< %r19,%r5,%r0
	copy %r19,%r5
	ldo 1(%r4),%r4
	comib,>= 3,%r4,L$0053
	sh1addl %r4,%r4,%r19
	ldo 12(%r8),%r19
	ldwx,s %r5(%r19),%r7
	ldw 204(%r8),%r19
	ldo -64(%r19),%r19
	ldw 196(%r8),%r20
	comb,>>= %r19,%r20,L$0010
	ldo 196(%r8),%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl ref_stack_extend,%r2
	ldi 8,%r25
	movb,< %r28,%r28,L$0054
	ldw -340(%r30),%r2
L$0010
	ldil LR'st_halftone,%r25
	ldil LR'L$C0003,%r24
	copy %r7,%r26
	ldo RR'st_halftone(%r25),%r25
	ldo RR'L$C0003(%r24),%r24
	ldw 36(%r7),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	movb,=,n %r28,%r6,L$0013
	stw %r0,4(%r6)
	stw %r7,8(%r6)
	ldil LR'L$C0004,%r19
	ldw RR'L$C0004(%r19),%r19
	stw %r19,12(%r6)
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 94,%r26
	comib,= 0,%r28,L$0013
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldil LR'L$C0005,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0005(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 62,%r24
	ldil LR'L$C0006,%r25
	ldil LR'L$C0007,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0006(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0007(%r24),%r24
	copy %r6,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl rc_trace_init_free,%r2
	ldo 4(%r6),%r25
L$0013
	ldil LR'st_device_halftone,%r25
	ldil LR'L$C0008,%r24
	copy %r7,%r26
	ldo RR'st_device_halftone(%r25),%r25
	ldo RR'L$C0008(%r24),%r24
	ldw 36(%r7),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	movb,=,n %r28,%r5,L$0024
	stw %r0,80(%r5)
	stw %r7,84(%r5)
	ldil LR'L$C0004,%r19
	ldw RR'L$C0004(%r19),%r19
	stw %r19,88(%r5)
	.CALL ARGW0=GR
	bl gs_debug_c,%r2
	ldi 94,%r26
	comib,= 0,%r28,L$0024
	addil LR'gs_debug_out-$global$,%r27
	copy %r1,%r3
	ldil LR'L$C0005,%r25
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0005(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl dprintf_file_and_line,%r2
	ldi 64,%r24
	ldil LR'L$C0006,%r25
	ldil LR'L$C0007,%r24
	ldw RR'gs_debug_out-$global$(%r3),%r26
	ldo RR'L$C0006(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl fprintf,%r2
	ldo RR'L$C0007(%r24),%r24
	copy %r5,%r26
	.CALL ARGW0=GR,ARGW1=GR
	bl rc_trace_init_free,%r2
	ldo 80(%r5),%r25
L$0024
	comib,= 0,%r6,L$0055
	ldi -25,%r26
	comib,<> 0,%r5,L$0034
	ldi 2,%r19
	ldi -25,%r26
L$0055
	ldil LR'L$C0005,%r25
	ldo RR'L$C0005(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_log_error,%r2
	ldi 66,%r24
	b,n L$0052
L$0051
	b L$0037
	stw %r10,196(%r8)
L$0034
	stw %r19,0(%r6)
	ldo 16(%r6),%r26
	ldo -312(%r30),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	ldi 80,%r24
	ldw 0(%r8),%r26
	copy %r6,%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gs_sethalftone_prepare,%r2
	copy %r5,%r24
L$0052
	copy %r28,%r3
	comib,>,n 0,%r3,L$0048
	ldw 196(%r8),%r10
	ldo 64(%r10),%r20
	stw %r20,196(%r8)
	ldil LR'L$C0009,%r19
	ldw RR'L$C0009(%r19),%r19
	stw %r19,-52(%r20)
	ldw 196(%r8),%r20
	ldi 3712,%r19
	sth %r19,-56(%r20)
	ldw 196(%r8),%r19
	sth %r0,-54(%r19)
	ldw 196(%r8),%r26
	ldo -48(%r26),%r26
	ldo -184(%r30),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	ldi 32,%r24
	ldw 196(%r8),%r19
	stw %r6,-12(%r19)
	ldw 196(%r8),%r20
	ldh 30(%r8),%r19
	ldo 2048(%r19),%r19
	sth %r19,-16(%r20)
	addil LR'gs_debug-$global$,%r27
	ldb RR'gs_debug-$global$+36(%r1),%r19
	comib,=,n 0,%r19,L$0039
	ldw 196(%r8),%r20
	ldi -275,%r19
	sth %r19,-14(%r20)
L$0039
	ldw 196(%r8),%r19
	stw %r5,-4(%r19)
	ldw 196(%r8),%r20
	ldh 30(%r8),%r19
	ldo 2048(%r19),%r19
	sth %r19,-8(%r20)
	addil LR'gs_debug-$global$,%r27
	ldb RR'gs_debug-$global$+36(%r1),%r19
	comib,=,n 0,%r19,L$0041
	ldw 196(%r8),%r20
	ldi -275,%r19
	sth %r19,-6(%r20)
L$0041
	ldw 196(%r8),%r20
	ldil LR'L$C0010,%r19
	ldw RR'L$C0010(%r19),%r19
	stw %r19,4(%r20)
	ldw 196(%r8),%r20
	ldi 3968,%r19
	sth %r19,0(%r20)
	ldw 196(%r8),%r19
	sth %r0,2(%r19)
	ldi 0,%r4
	ldo -184(%r30),%r9
	ldo 1(%r4),%r19
L$0056
	extru %r19,31,2,%r19
	zdep %r19,29,30,%r25
	addl %r25,%r19,%r25
	zdep %r25,29,30,%r25
	addl %r25,%r19,%r25
	ldw 100(%r5),%r19
	sh2addl %r4,%r4,%r24
	zdep %r24,29,30,%r24
	ldo 16(%r24),%r24
	stw %r0,-52(%r30)
	stw %r0,-56(%r30)
	stw %r7,-60(%r30)
	copy %r8,%r26
	sh2addl %r25,%r19,%r25
	addl %r6,%r24,%r24
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR,ARGW3=GR
	bl zscreen_enum_init,%r2
	sh3addl %r4,%r9,%r23
	movb,< %r28,%r3,L$0051
	ldo 1(%r4),%r4
	comib,>= 3,%r4,L$0056
	ldo 1(%r4),%r19
L$0037
	comib,>,n 0,%r3,L$0048
	ldw 256(%r8),%r19
	ldo -96(%r19),%r19
	stw %r19,256(%r8)
	b L$0049
	ldi 5,%r28
L$0048
	copy %r7,%r26
	copy %r5,%r25
	ldil LR'L$C0008,%r24
	ldo RR'L$C0008(%r24),%r24
	ldw 12(%r7),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	copy %r7,%r26
	copy %r6,%r25
	ldil LR'L$C0003,%r24
	ldo RR'L$C0003(%r24),%r24
	ldw 12(%r7),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	copy %r3,%r28
L$0049
	ldw -340(%r30),%r2
L$0054
	ldw -120(%r30),%r12
	ldw -116(%r30),%r11
	ldw -112(%r30),%r10
	ldw -108(%r30),%r9
	ldw -104(%r30),%r8
	ldw -100(%r30),%r7
	ldw -96(%r30),%r6
	ldw -92(%r30),%r5
	ldw -88(%r30),%r4
	ldw -84(%r30),%r3
	bv %r0(%r2)
	ldo -320(%r30),%r30
	.EXIT
	.PROCEND
	.IMPORT gx_ht_install,CODE
	.IMPORT gs_state_client_data,CODE
	.align 4
setcolorscreen_finish
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=4
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r4,64(%r30)
	stw %r3,-60(%r30)
	copy %r26,%r3
	ldw 196(%r3),%r19
	ldw 4(%r19),%r4
	copy %r4,%r26
	ldw 100(%r4),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	ldi 80,%r24
	ldw 196(%r3),%r19
	ldw 0(%r3),%r26
	ldw -4(%r19),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl gx_ht_install,%r2
	copy %r4,%r24
	movb,< %r28,%r28,L$0062
	ldw -84(%r30),%r2
	.CALL ARGW0=GR
	bl gs_state_client_data,%r2
	ldw 0(%r3),%r26
	ldw 196(%r3),%r25
	ldo 8(%r28),%r26
	ldo -40(%r25),%r25
	.CALL ARGW0=GR,ARGW1=GR,ARGW2=GR
	bl memcpy,%r2
	ldi 32,%r24
	.CALL ARGW0=GR
	bl gs_state_client_data,%r2
	ldw 0(%r3),%r26
	ldi 3584,%r19
	sth %r19,184(%r28)
	addil LR'gs_debug-$global$,%r27
	ldb RR'gs_debug-$global$+36(%r1),%r19
	comib,=,n 0,%r19,L$0060
	.CALL ARGW0=GR
	bl gs_state_client_data,%r2
	ldw 0(%r3),%r26
	ldi -275,%r19
	sth %r19,186(%r28)
	.CALL ARGW0=GR
	bl gs_state_client_data,%r2
	ldw 0(%r3),%r26
	ldil L'-559038737,%r19
	ldo R'-559038737(%r19),%r19
	stw %r19,188(%r28)
L$0060
	ldw 196(%r3),%r19
	ldo -56(%r19),%r19
	stw %r19,196(%r3)
	.CALL ARGW0=GR
	bl setcolorscreen_cleanup,%r2
	copy %r3,%r26
	ldi 14,%r28
	ldw -84(%r30),%r2
L$0062
	ldw -60(%r30),%r3
	bv %r0(%r2)
	ldwm -64(%r30),%r4
	.EXIT
	.PROCEND
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0024
	.STRING "setcolorscreen_cleanup(device halftone)\x00"
	.align 4
L$C0025
	.STRING "setcolorscreen_cleanup(halftone)\x00"
	.SPACE $TEXT$
	.SUBSPA $CODE$

	.align 4
setcolorscreen_cleanup
	.PROC
	.CALLINFO FRAME=64,CALLS,SAVE_RP,ENTRY_GR=3
	.ENTRY
	stw %r2,-20(%r30)
	stwm %r4,64(%r30)
	ldw 196(%r26),%r19
	ldw 52(%r19),%r4
	ldw 60(%r19),%r25
	ldw 84(%r25),%r19
	copy %r19,%r26
	ldil LR'L$C0024,%r24
	ldo RR'L$C0024(%r24),%r24
	ldw 12(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	ldw 8(%r4),%r19
	copy %r19,%r26
	copy %r4,%r25
	ldil LR'L$C0025,%r24
	ldo RR'L$C0025(%r24),%r24
	ldw 12(%r19),%r22
	.CALL	ARGW0=GR
	bl $$dyncall,%r31
	copy %r31,%r2
	ldi 0,%r28
	ldw -84(%r30),%r2
	bv %r0(%r2)
	ldwm -64(%r30),%r4
	.EXIT
	.PROCEND
	.EXPORT zht1_op_defs,DATA
	.SPACE $PRIVATE$
	.SUBSPA $DATA$

	.align 4
zht1_op_defs
	.word L$C0026
	.word P%zsetcolorscreen
	.word L$C0027
	.word P%setcolorscreen_finish
	.word 0
	.word 0
	.SPACE $TEXT$
	.SUBSPA $LIT$

	.align 4
L$C0027
	.STRING "0%setcolorscreen_finish\x00"
	.align 4
L$C0026
	.STRING "<setcolorscreen\x00"


More information about the Gcc-bugs mailing list