         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.machinemode zarch
				.machine "zEC12"
		.text
		.Ltext0:
				.section	.rodata
				.align	2
		.LC8:
				.byte	11
				.string	"CHECK FAILS"
				.zero	243
		.text
				.align	8
		CHECK.6696:
		.LFB186:
		.LVL8:
				stmg	%r8,%r15,64(%r15)
				lay	%r15,-8112(%r15)
				ear	%r1,%a0
				sllg	%r1,%r1,32
				ear	%r1,%a1
				lay	%r4,8104(%r15)
				mvc	0(8,%r4),40(%r1)
				lay	%r1,8272(%r15)
				stg	%r1,8096(%r15)
    2 %owninteger Fail=0
				brasl	%r14,_imp_initialise@PLT
		.LVL9:
    3 %STRING(30)S,T,U
    4 %ROUTINESPEC CHECK(%STRING(30) P,Q,R)
    5       S=""; T=S
    6       PRINTSTRING("BUG0") %UNLESS T=""
    7       CHECK(S,T,"")
				lghi	%r4,30
				la	%r3,1440(%r15)
				lay	%r2,7840(%r15)
				brasl	%r14,_imp_strncpy@PLT
		.LVL10:
				mvc	672(256,%r15),2464(%r15)
				mvc	416(256,%r15),2720(%r15)
				mvc	160(256,%r15),2976(%r15)
				aghik	%r10,%r15,160
				aghik	%r9,%r15,416
				aghik	%r8,%r15,672
				aghik	%r11,%r15,7840
				lgr	%r0,%r11
				lgr	%r4,%r10
				lgr	%r3,%r9
				lgr	%r2,%r8
				brasl	%r14,CHECK.6696
		.LVL13:
    8       S="ABCD"; T=S
				aghik	%r3,%r15,1952
				lgr	%r2,%r11
				brasl	%r14,_imp_strcmp@PLT
		.LVL12:
				cijlh	%r2,0,.L18
		.L10:
		.LBB48:
    9       CHECK(S,T,"ABCD")
				mvc	160(256,%r15),3744(%r15)
				mvc	416(256,%r15),4000(%r15)
				mvc	672(256,%r15),0(%r1)
				lgr	%r0,%r11
				lgr	%r4,%r8
				lgr	%r3,%r9
				lgr	%r2,%r10
				brasl	%r14,CHECK.6696
		.LVL18:
		.LBB50:
   10       %UNLESS "MAST"<="MEST"<="MOST" %THEN Fail=1 %and PRINTSTRING("BUG1")
				lghi	%r4,30
				la	%r3,3232(%r15)
				lgr	%r2,%r11
				brasl	%r14,_imp_strncpy@PLT
		.LVL14:
   11       S="MAST"; T="MEST"; U="MOST"
				larl	%r1,.LC0
				lay	%r2,7584(%r15)
				mvc	0(256,%r2),0(%r1)
				mvc	2208(256,%r15),0(%r2)
				lay	%r1,6816(%r15)
				mvc	0(256,%r1),2208(%r15)
		.LBE60:
		.LBB61:
		.LBB62:
				mvc	672(256,%r15),0(%r1)
				aghik	%r2,%r15,672
				brasl	%r14,_imp_printstring@PLT
		.LVL29:
				j	.L10
		.LVL30:
		.L19:
		.LBE62:
		.LBE61:
		.LBB63:
				lay	%r3,5024(%r15)
				lay	%r2,4768(%r15)
		.LVL31:
				brasl	%r14,_imp_strcmp@PLT
		.LVL32:
				cijh	%r2,0,.L11
		.LBE63:
				j	.L12
		.LVL33:
		.L20:
		.LBB64:
				la	%r3,1184(%r15)
				la	%r2,928(%r15)
				brasl	%r14,_imp_strcmp@PLT
		.LVL34:
				cijh	%r2,0,.L13
		.LBE64:
				j	.L14
		.L21:
		.LBB65:
   12       %UNLESS S<=T<=U %THEN Fail=1 %and PRINTSTRING("BUG2")
				aghik	%r11,%r15,928
				lghi	%r4,30
				la	%r3,1696(%r15)
				lgr	%r2,%r11
				brasl	%r14,_imp_strncpy@PLT
		.LVL11:
   13       %if Fail=0 %then printstring("TEST OK")
				aghik	%r11,%r15,7840
				lghi	%r4,30
				lay	%r3,5536(%r15)
				lgr	%r2,%r11
				brasl	%r14,_imp_strncpy@PLT
		.LVL22:
				larl	%r1,FAIL.6689
				lt	%r1,0(%r1)
				je	.L21
		.L15:
		.LVL27:
		.LBB58:
		.LBB59:
				lghi	%r2,0
				brasl	%r14,exit@PLT
		.LVL28:
		.L18:
		.LBE59:
		.LBE58:
		.LBB60:
   14       %ROUTINE CHECK(%STRING(30) P,Q,R)
				stmg	%r9,%r15,72(%r15)
				lay	%r15,-936(%r15)
				lgr	%r9,%r2
				lgr	%r11,%r3
				lgr	%r10,%r4
				ear	%r1,%a0
				sllg	%r1,%r1,32
				ear	%r1,%a1
				mvc	928(8,%r15),40(%r1)
				larl	%r1,.LC7
				lay	%r2,7584(%r15)
				mvc	0(256,%r2),0(%r1)
				lay	%r1,6560(%r15)
				mvc	0(256,%r1),0(%r2)
				lgr	%r1,%r2
				lay	%r2,6560(%r15)
				mvc	0(256,%r1),0(%r2)
		.LBE65:
		.LBB66:
		.LBB67:
				mvc	160(256,%r15),0(%r1)
				aghik	%r2,%r15,160
				brasl	%r14,_imp_printstring@PLT
		.LVL35:
				j	.L15
		.LBE67:
		.LBE66:
		.LFE185:
				.comm	FAIL.6689,4,4
		.Letext0:
   15       Fail=1 %and PRINTSTRING("CHECK FAILS") %UNLESS %C
				xc	2976(256,%r15),2976(%r15)
		.LBE48:
				lghi	%r4,30
				la	%r3,3488(%r15)
				la	%r2,928(%r15)
				brasl	%r14,_imp_strncpy@PLT
		.LVL15:
		.LBB49:
				lay	%r3,4768(%r15)
		.LVL19:
				lay	%r2,4512(%r15)
				brasl	%r14,_imp_strcmp@PLT
		.LVL20:
				cijle	%r2,0,.L19
		.L11:
		.LBE50:
				larl	%r1,FAIL.6689
				mvhi	0(%r1),1
		.LBB51:
				larl	%r1,.LC5
				lay	%r2,7584(%r15)
				mvc	0(256,%r2),0(%r1)
				lay	%r1,5280(%r15)
				mvc	0(256,%r1),0(%r2)
				lay	%r1,7072(%r15)
				lay	%r2,5280(%r15)
				mvc	0(256,%r1),0(%r2)
		.LBE51:
		.LBB52:
		.LBB53:
				mvc	160(256,%r15),0(%r1)
				aghik	%r2,%r15,160
				brasl	%r14,_imp_printstring@PLT
		.LVL21:
		.L12:
		.LBE53:
		.LBE52:
   16          P=S %AND Q=R %AND P=Q=R
   17       %END
				lgr	%r3,%r0
				brasl	%r14,_imp_strcmp@PLT
		.LVL0:
				cijlh	%r2,0,.L2
				lay	%r1,7614(%r15)
				xc	0(226,%r1),0(%r1)
		.LVL16:
				llihf	%r1,1094861636
				stg	%r1,7585(%r15)
				lay	%r1,7593(%r15)
				xc	0(22,%r1),0(%r1)
				mviy	7584(%r15),4
				lay	%r1,4256(%r15)
				lay	%r2,7584(%r15)
				mvc	0(256,%r1),0(%r2)
		.LVL17:
		.LBE49:
				lgr	%r3,%r10
				lgr	%r2,%r11
				brasl	%r14,_imp_strcmp@PLT
		.LVL25:
				cijle	%r2,0,.L20
		.L13:
		.LBE54:
				larl	%r1,FAIL.6689
				mvhi	0(%r1),1
		.LBB55:
				larl	%r1,.LC6
				lay	%r2,7584(%r15)
				mvc	0(256,%r2),0(%r1)
				lay	%r1,6304(%r15)
				mvc	0(256,%r1),0(%r2)
				lay	%r1,7328(%r15)
				lay	%r2,6304(%r15)
				mvc	0(256,%r1),0(%r2)
		.LBE55:
		.LBB56:
		.LBB57:
				mvc	160(256,%r15),0(%r1)
				aghik	%r2,%r15,160
				brasl	%r14,_imp_printstring@PLT
		.LVL26:
		.L14:
		.LBE57:
		.LBE56:
   18 %ENDOFPROGRAM
				ear	%r1,%a0
				sllg	%r1,%r1,32
				ear	%r1,%a1
				clc	928(8,%r15),40(%r1)
				jne	.L7
				lg	%r5,1048(%r15)
				lmg	%r9,%r15,1008(%r15)
				br	%r5
		.L6:
		.LVL3:
		.LBB47:
				lgr	%r3,%r11
				lgr	%r2,%r9
				brasl	%r14,_imp_strcmp@PLT
		.LVL4:
				cijlh	%r2,0,.L2
				lgr	%r3,%r10
				lgr	%r2,%r11
				brasl	%r14,_imp_strcmp@PLT
		.LVL5:
				cijlh	%r2,0,.L2
		.LBE47:
				j	.L1
		.LVL6:
		.L7:
				brasl	%r14,__stack_chk_fail@PLT
		.LVL7:
		.LFE186:
				.section	.rodata
				.align	2
		.LC5:
				.byte	4
				.string	"BUG1"
				.zero	250
				.align	2
		.LC6:
				.byte	4
				.string	"BUG2"
				.zero	250
				.align	2
		.LC0:
				.byte	4
				.string	"BUG0"
				.zero	250
				.align	2
		.LC7:
				.byte	7
				.string	"TEST OK"
				.zero	247
		.text
				.align	8
		.globl main
		main:
		.LFB185:
				aghik	%r10,%r15,928
				lghi	%r4,30
				lay	%r3,5792(%r15)
				lgr	%r2,%r10
				brasl	%r14,_imp_strncpy@PLT
		.LVL23:
				lghi	%r4,30
				lay	%r3,6048(%r15)
				la	%r2,1184(%r15)
				brasl	%r14,_imp_strncpy@PLT
		.LVL24:
		.LBB54:
   21 Statements compiled
				lgr	%r3,%r10
				lgr	%r2,%r11
				brasl	%r14,_imp_strcmp@PLT
		.LVL1:
				cije	%r2,0,.L6
		.L2:
				larl	%r1,FAIL.6689
				mvhi	0(%r1),1
		.LBB44:
				larl	%r1,.LC8
				mvc	672(256,%r15),0(%r1)
				mvc	416(256,%r15),672(%r15)
				mvc	672(256,%r15),416(%r15)
		.LBE44:
		.LBB45:
		.LBB46:
				mvc	160(256,%r15),672(%r15)
				aghik	%r2,%r15,160
				brasl	%r14,_imp_printstring@PLT
		.LVL2:
		.L3:
		.L1:
		.LBE46:
		.LBE45:
