         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.section	".text"
		.Ltext0:
				.section	".rodata"
		.LC1:
				.byte	9
				.asciz	"expected="
				.skip	245
		.LC2:
				.byte	8
				.asciz	" actual="
				.skip	246
				.section	".text"
				.align 4
				.proc	020
		TEST.6093:
		.LFB186:
		.LVL16:
				save	%sp, -2784, %sp
		.LVL17:
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
				add	%fp, 2047, %g1
				stx	%g1, [%fp-289]
    2 %owninteger swopped =0
				mov	%i1, %o1
				call	_imp_initialise, 0
				 mov	%i0, %o0
		.LVL18:
				mov	768, %o2
				mov	0, %o1
				call	memset, 0
				 add	%fp, 1271, %o0
		.LVL19:
				mov	9, %g1
				stb	%g1, [%fp+1783]
				mov	10, %o2
				sethi	%hi(.LC3), %o1
				or	%o1, %lo(.LC3), %o1
				call	memcpy, 0
				 add	%fp, 1784, %o0
		.LVL20:
				stb	%g0, [%fp+1794]
    3 %recordformat f1(%integer i %or %byte b0,b1,b2,b3 %or %string(3)s)
    4 %recordformat f2(%integer i,%record(f1)f)
    5 %recordformat f3(%integer k,%record(f2)f)
    6 %integer i,fail,j,k
    7 %routine test(%integer exp,swexp,act)
				.register	%g2, #scratch
				.register	%g3, #scratch
				.register	%g7, #ignore
		.LVL0:
				save	%sp, -1472, %sp
		.LVL1:
				mov	%g5, %i5
				ldx	[%g7+40], %g1
				stx	%g1, [%fp+2039]
				mov	0, %g1
    8 %if swopped=0 %start
				sethi	%hi(SWOPPED.6056), %g1
				lduw	[%g1+%lo(SWOPPED.6056)], %g1
				cmp	%g1, 0
				bne,pt	%icc, .L5
				 xor	%i0, %i2, %g2
    9       %if exp=act %then swopped=-1
				cmp	%i0, %i2
				be,pn	%icc, .L10
				 cmp	%i2, %i1
   10       %if swexp=act %then swopped=1
				bne,pt	%icc, .L13
				 mov	256, %o2
				sethi	%hi(SWOPPED.6056), %g1
				mov	-1, %g2
				bne,pn	%icc, .L1
				 st	%g2, [%g1+%lo(SWOPPED.6056)]
				sethi	%hi(SWOPPED.6056), %g1
		.L12:
				mov	1, %g2
				ba,pt	%xcc, .L1
				 st	%g2, [%g1+%lo(SWOPPED.6056)]
		.L2:
		.L5:
   11 %finish
				ba,pt	%xcc, .L12
				 sethi	%hi(SWOPPED.6056), %g1
		.L10:
   12 %if swopped=-1 %and exp=act %then %return
				xnor	%g0, %g1, %g2
				cmp	%g0, %g2
				addx	%g0, 0, %g2
				orcc	%g3, %g2, %g0
				be,pn	%icc, .L1
				 xor	%i2, %i1, %i1
		.L6:
   13 %if swopped=1 %and swexp=act %then %return
				cmp	%g0, %g2
				addx	%g0, 0, %g3
				xor	%g1, 1, %g1
				cmp	%g0, %g1
				addx	%g0, 0, %g1
				orcc	%g2, %g1, %g0
				be,pn	%icc, .L1
				 mov	256, %o2
		.L7:
		.L13:
		.LBB17:
				sethi	%hi(.LC1), %o1
				or	%o1, %lo(.LC1), %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL2:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 1015, %o0
		.LVL3:
				mov	256, %o2
				add	%fp, 1015, %o1
				call	memcpy, 0
				 add	%fp, 1783, %o0
		.LVL4:
		.LBE17:
		.LBB18:
		.LBB19:
				mov	256, %o2
				add	%fp, 1783, %o1
				call	memcpy, 0
				 add	%fp, 751, %o0
		.LVL5:
				call	_imp_printstring, 0
				 add	%fp, 751, %o0
		.LVL6:
		.LBE19:
		.LBE18:
   14       printstring("expected="); write(exp,5)
				cmp	%g0, %i1
				addx	%g0, 0, %g2
   15       printstring(" actual="); write(act,5); newline
				mov	5, %o1
				call	_imp_writeint, 0
				 mov	%i0, %o0
		.LVL7:
		.LBB20:
				mov	256, %o2
				sethi	%hi(.LC2), %o1
				or	%o1, %lo(.LC2), %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL8:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 1271, %o0
		.LVL9:
				mov	256, %o2
				add	%fp, 1271, %o1
				call	memcpy, 0
				 add	%fp, 1527, %o0
		.LVL10:
		.LBE20:
		.LBB21:
		.LBB22:
				mov	256, %o2
				add	%fp, 1527, %o1
				call	memcpy, 0
				 add	%fp, 751, %o0
		.LVL11:
				call	_imp_printstring, 0
				 add	%fp, 751, %o0
		.LVL12:
		.LBE22:
		.LBE21:
   16       fail=fail+1
				mov	5, %o1
				call	_imp_writeint, 0
				 mov	%i2, %o0
		.LVL13:
		.LBB23:
		.LBB24:
				call	_imp_newline, 0
				 nop
		.LVL14:
		.LBE24:
		.LBE23:
				lduw	[%i5], %g1
				add	%g1, 1, %g1
				st	%g1, [%i5]
		.L1:
   17       %monitor
   18 %end
   19 %conststring(11) %array tx(-1:1)="","","(swopped)";
				ldx	[%fp+2039], %g1
				ldx	[%g7+40], %g2
				xor	%g1, %g2, %g1
				mov	0, %g2
				brnz,pn	%g1, .L11
				 nop
				return	%i7+8
				 nop
		.L11:
				call	__stack_chk_fail, 0
				 nop
		.LVL15:
				nop
		.LFE186:
				.section	".rodata"
				.align 8
		.LC3:
				.asciz	"(swopped)"
				.skip	1
				.section	".text"
				.align 4
				.global main
				.proc	04
		main:
		.LFB185:
   20 %record(f1) r1
   21 %record(f2) r2
   22 %record(f3) r3
   23 fail=0
				st	%g0, [%fp-297]
		.LVL21:
		.LDL1:
   24       j=0
   25 l1:
   26 r1_i=0
				st	%g0, [%fp-277]
		.LVL22:
   27 k=r1_I+j
   28 r1_b3=5
				mov	5, %g1
				stb	%g1, [%fp-274]
   29 test(5,X'05000000',r1_i)
				ldsw	[%fp-277], %i5
				add	%fp, -297, %g5
				mov	%i5, %o2
				sethi	%hi(83886080), %o1
				call	TEST.6093, 0
				 mov	5, %o0
		.LVL23:
   30 test(5,x'05000000',r1_i+j)
				add	%fp, -297, %g5
				mov	%i5, %o2
				sethi	%hi(83886080), %o1
				call	TEST.6093, 0
				 mov	5, %o0
		.LVL24:
   31 r2_f_i=1
				mov	1, %i3
				st	%i3, [%fp+751]
   32 r2_f_b3=6
				mov	6, %i4
				stb	%i4, [%fp+754]
   33 test(6,x'06000001',r2_f_i)
				add	%fp, -297, %g5
				ldsw	[%fp+751], %o2
				sethi	%hi(100663296), %i5
				or	%i5, 1, %o1
				call	TEST.6093, 0
				 mov	6, %o0
		.LVL25:
   34 r3_f_f_i=1
				st	%i3, [%fp+1015]
   35 r3_f_f_b3=6
				stb	%i4, [%fp+1018]
   36 test(6,x'06000001',r3_f_f_i)
				add	%fp, -297, %g5
				ldsw	[%fp+1015], %o2
				or	%i5, 1, %o1
				call	TEST.6093, 0
				 mov	6, %o0
		.LVL26:
   37 %if fail=0 %then printstring("Test ok ".tx(swopped))
				lduw	[%fp-297], %g1
				cmp	%g1, 0
				be,pn	%icc, .L17
				 sethi	%hi(SWOPPED.6056), %g1
		.L15:
		.LVL27:
		.LBB25:
		.LBB26:
				call	exit, 0
				 mov	0, %o0
		.LVL28:
		.L17:
		.LBE26:
		.LBE25:
		.LBB27:
		.LBB28:
   38 %endofprogram
?L1 unused
?I unused
   40 Statements compiled
				lduw	[%g1+%lo(SWOPPED.6056)], %o2
				add	%o2, 1, %o2
				sra	%o2, 0, %o2
				sllx	%o2, 8, %o2
				add	%fp, 1271, %g1
				add	%g1, %o2, %o2
				add	%fp, 235, %o1
				call	_imp_join, 0
				 add	%fp, 491, %o0
		.LVL29:
				mov	256, %o2
				add	%fp, -21, %o1
				call	memcpy, 0
				 add	%fp, 491, %o0
		.LVL30:
		.LBE28:
		.LBE27:
		.LBB29:
		.LBB30:
				mov	256, %o2
				add	%fp, 491, %o1
				call	memcpy, 0
				 add	%fp, -561, %o0
		.LVL31:
				call	_imp_printstring, 0
				 add	%fp, -561, %o0
		.LVL32:
				ba,pt	%xcc, .L15
				 nop
		.LBE30:
		.LBE29:
		.LFE185:
				.common	SWOPPED.6056,4,4
		.Letext0:
