         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				.option nopic
		.Ltext0:
				.align	1
				.globl	main
		main:
		.LFB185:
		.LVL0:
				add	sp,sp,-1312
				sd	ra,1304(sp)
				sd	s0,1296(sp)
				lui	a5,%hi(__stack_chk_guard)
				ld	a5,%lo(__stack_chk_guard)(a5)
				sd	a5,1288(sp)
    2 !***********************************************************************
				call	_imp_initialise
		.LVL1:
		.LDL1:
		.LDL2:
		.LDL3:
		.LDL4:
		.LDL5:
		.LDL6:
		.LDL7:
		.LDL8:
		.LDL9:
		.LDL10:
		.LDL11:
		.LDL12:
		.LDL13:
		.LDL14:
		.LDL15:
		.LDL16:
		.LDL17:
		.LDL18:
		.LDL19:
		.LDL20:
				lui	a4,%hi(.LANCHOR0)
				addi	a4,a4,%lo(.LANCHOR0)
				add	a1,a4,17
				li	s0,4096
				add	s0,s0,-93
		.LBB12:
    3 !*    SHOULD RUN WITHOUT OPUT. LOOPS ON SOME COMPILERS DUE TO          *
    4 !*    MISSING LABELS GIVING JUMPS WITH ZERO OFFSET                     *
    5 !***********************************************************************
    6 %OWNBYTEINTEGERARRAY CH(0:16)='0','1','2','3','4','5','6','7','8',
    7       '9','A','B','C','D','E','F','G'
    8 %INTEGER I,K,L
    9 %CONSTINTEGER J=0
   10       I=4000; L=10
   11       %IF I>4095 %AND J#0 %THEN I=I+1
   12       %IF I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
   13       %IF I>4095 %AND J#0 %THEN %START; %FINISH
   14       %IF I>4095 %AND J#0 %THEN %START
   15          I=I+1
   16       %FINISH %ELSE I=I-1
   17       %IF (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
   18       %IF (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
   19       %UNLESS I>4095 %AND J#0 %THEN I=I+1
   20       %UNLESS I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
   21       %UNLESS I>4095 %AND J#0 %THEN %START; %FINISH
   22       %UNLESS I>4095 %AND J#0 %THEN %START
   23          I=I+1
   24       %FINISH %ELSE I=I-1
   25       %UNLESS (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
   26       %UNLESS (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
   27        %FOR K=0,1,16 %CYCLE
   28          %UNLESS '0'<=CH(K)<='9' %OR 'A'<=CH(K)<='F' %THEN I=I+1
   29       %REPEAT
   30       %IF I=4004 %THEN PRINTSTRING("TEST OK") %ELSE %C
				beq	a4,a1,.L3
		.LVL5:
		.L2:
		.LBB14:
				li	a5,4096
				add	a5,a5,-92
				beq	s0,a5,.L12
		.L7:
		.LBB16:
				li	a2,256
				lui	a1,%hi(.LANCHOR0+280)
				addi	a1,a1,%lo(.LANCHOR0+280)
				add	a0,sp,1032
				call	memcpy
		.LVL10:
				li	a2,256
				add	a1,sp,1032
				add	a0,sp,520
				call	memcpy
		.LVL11:
				li	a2,256
				add	a1,sp,520
				add	a0,sp,1032
				call	memcpy
		.LVL12:
		.LBE16:
		.LBB17:
		.LBB18:
				li	a2,256
				add	a1,sp,1032
				mv	a0,sp
				call	memcpy
		.LVL13:
				mv	a0,sp
				call	_imp_printstring
		.LVL14:
		.LBE18:
		.LBE17:
				li	a1,5
				mv	a0,s0
				call	_imp_writeint
		.LVL15:
		.L8:
		.LBB19:
		.LBB20:
				li	a0,0
				call	exit
		.LVL16:
		.L12:
		.LBE20:
		.LBE19:
		.LBB21:
   31          PRINTSTRING("WRONG ANSWERS") %AND WRITE(I,5)
				li	a2,9
		.LBE12:
		.LBB13:
				lbu	a5,0(a4)
		.LVL6:
				addw	a3,a5,-48
				and	a3,a3,0xff
				bleu	a3,a2,.L4
		.L5:
		.LVL7:
		.LBE14:
		.LBB15:
				addw	a5,a5,-65
		.LVL8:
				and	a5,a5,0xff
				bleu	a5,a0,.L4
		.LBE15:
				j	.L11
		.LVL9:
		.L3:
				li	a2,256
				lui	a1,%hi(.LANCHOR0+24)
				addi	a1,a1,%lo(.LANCHOR0+24)
				add	a0,sp,1032
				call	memcpy
		.LVL17:
				li	a2,256
				add	a1,sp,1032
				add	a0,sp,264
				call	memcpy
		.LVL18:
				li	a2,256
				add	a1,sp,264
				add	a0,sp,776
				call	memcpy
		.LVL19:
		.LBE21:
		.LBB22:
		.LBB23:
				li	a2,256
				add	a1,sp,776
				mv	a0,sp
				call	memcpy
		.LVL20:
				mv	a0,sp
				call	_imp_printstring
		.LVL21:
				j	.L8
		.LBE23:
		.LBE22:
		.LFE185:
				.section	.rodata
				.align	3
				.set	.LANCHOR0,. + 0
		CH.6001:
				.byte	48
				.byte	49
				.byte	50
				.byte	51
				.byte	52
				.byte	53
				.byte	54
				.byte	55
				.byte	56
				.byte	57
				.byte	65
				.byte	66
				.byte	67
				.byte	68
				.byte	69
				.byte	70
				.byte	71
				.zero	7
		.LC0:
				.byte	7
				.string	"TEST OK"
				.zero	247
		.LC1:
				.byte	13
				.string	"WRONG ANSWERS"
				.zero	241
		.Letext0:
   32 %ENDOFPROGRAM
   29 Statements compiled
				li	a0,5
				j	.L2
		.LVL2:
		.L11:
		.L6:
		.LBE13:
				addw	s0,s0,1
		.LVL3:
		.L4:
				add	a4,a4,1
		.LVL4:
