         Edinburgh IMP77 Compiler - Version 8.4
    1
		.Ltext0:
				.section	.rodata
				.align 32
		.LC0:
				.byte	6
				.string	"test 0"
				.zero	248
				.align 32
		.LC1:
				.byte	57
				.string	"If there is output mentioning test 0 above, test 0 passed"
				.zero	197
				.align 32
		.LC2:
				.byte	6
				.string	"test 1"
				.zero	248
				.align 32
		.LC3:
				.byte	57
				.string	"If there is output mentioning test 1 above, test 1 passed"
				.zero	197
				.align 32
		.LC4:
				.byte	59
				.string	"If there is no output mentioning test 2 above, test2 passed"
				.zero	195
				.align 32
		.LC5:
				.byte	6
				.string	"test 3"
				.zero	248
				.align 32
		.LC6:
				.byte	57
				.string	"If there is output mentioning test 3 above, test 3 passed"
				.zero	197
				.align 32
		.LC7:
				.byte	6
				.string	"test 4"
				.zero	248
				.align 32
		.LC8:
				.byte	57
				.string	"If there is output mentioning test 4 above, test 4 passed"
				.zero	197
				.align 32
		.LC9:
				.byte	52
				.string	"Note that %c is not honoured within a '!' comment..."
				.zero	202
				.align 32
		.LC10:
				.byte	13
				.string	"test 5 passed"
				.zero	241
				.align 32
		.LC11:
				.byte	13
				.string	"test 6 passed"
				.zero	241
				.align 32
		.LC12:
				.byte	13
				.string	"test 7 passed"
				.zero	241
				.align 32
		.LC13:
				.byte	13
				.string	"test 8 passed"
				.zero	241
				.globl	main
		main:
		.LFB189:
    2 %begin
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%esi
				pushl	%ebx
				pushl	%ecx
				subl	$7368, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -7372(%ebp)
				movl	%gs:20, %esi
				movl	%esi, -28(%ebp)
				xorl	%esi, %esi
				leal	8(%ebp), %edx
				movl	%edx, -7368(%ebp)
				subl	$8, %esp
				pushl	-7372(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
    3
    4 %constintegerarray fred(0:2) = ;
				movl	$1, -7356(%ebp)
				movl	$2, -7352(%ebp)
				movl	$3, -7348(%ebp)
				leal	-7332(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-7356(%ebp), %eax
				movl	%eax, -7332(%ebp)
				movl	$4, -7328(%ebp)
    5           1,2,
    6
    7           3
    8
    9 %routine jim(%integer p,
   10              %integer q)
   11 %end
?Q unused
?P unused
   12
   13
   14
   15
   16 %constc
   17
   18
   19 %integerarray sheila(0:2) =
				movl	$1, -7344(%ebp)
				movl	$2, -7340(%ebp)
				movl	$3, -7336(%ebp)
				leal	-7264(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-7344(%ebp), %eax
				movl	%eax, -7264(%ebp)
				movl	$4, -7260(%ebp)
   20
   21
   22           1,2,
   23
   24           3
   25
   26
   27 %switch lab(1:4)
   28 %integer i
   29 %constinteger one=1, two=2, three=3
   30
   31 i = sheila(2)
				movl	-7336(%ebp), %eax
				movl	%eax, -7364(%ebp)
		.L2:
		.LBB75:
   32
   33 lab(':'+one+two-':'):
   34                                         ;! %commc
   35
   36 print string("test 0"); newline
				leal	-284(%ebp), %eax
				leal	.LC0@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-7196(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1564(%ebp), %eax
				leal	-7196(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE75:
		.LBB76:
		.LBB77:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1564(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE77:
		.LBE76:
		.LBB78:
		.LBB79:
				call	_imp_newline@PLT
		.LBE79:
		.LBE78:
		.LBB80:
   37 print string("If there is output mentioning test 0 above, test 0 passed"); newline
				leal	-284(%ebp), %eax
				leal	.LC1@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6940(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1820(%ebp), %eax
				leal	-6940(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE80:
		.LBB81:
		.LBB82:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1820(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE82:
		.LBE81:
		.LBB83:
		.LBB84:
				call	_imp_newline@PLT
		.LBE84:
		.LBE83:
		.LBB85:
   38
   39 %comment %c
   40 print string("test 1"); newline   ;
				leal	-284(%ebp), %eax
				leal	.LC2@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6684(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2076(%ebp), %eax
				leal	-6684(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE85:
		.LBB86:
		.LBB87:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2076(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE87:
		.LBE86:
		.LBB88:
		.LBB89:
				call	_imp_newline@PLT
		.LBE89:
		.LBE88:
		.LBB90:
   41 print string("If there is output mentioning test 1 above, test 1 passed"); newline
				leal	-284(%ebp), %eax
				leal	.LC3@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6428(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2332(%ebp), %eax
				leal	-6428(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE90:
		.LBB91:
		.LBB92:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2332(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE92:
		.LBE91:
		.LBB93:
		.LBB94:
				call	_imp_newline@PLT
		.LBE94:
		.LBE93:
		.LBB95:
   42
   43 %comment %c
   44 print string("test 2a failed - this is part of the comment above") %and newline; print string("test 2b failed - semicolons should not be honoured in %comments"); newline
   45 print string("If there is no output mentioning test 2 above, test2 passed"); newline
				leal	-284(%ebp), %eax
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6172(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2588(%ebp), %eax
				leal	-6172(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE95:
		.LBB96:
		.LBB97:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2588(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE97:
		.LBE96:
		.LBB98:
		.LBB99:
				call	_imp_newline@PLT
		.LBE99:
		.LBE98:
		.LBB100:
   46
   47 %comment %c
   48 print string("test 3"); newline
				leal	-284(%ebp), %eax
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5916(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2844(%ebp), %eax
				leal	-5916(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE100:
		.LBB101:
		.LBB102:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-2844(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE102:
		.LBE101:
		.LBB103:
		.LBB104:
				call	_imp_newline@PLT
		.LBE104:
		.LBE103:
		.LBB105:
   49 print string("If there is output mentioning test 3 above, test 3 passed"); newline
				leal	-284(%ebp), %eax
				leal	.LC6@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5660(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3100(%ebp), %eax
				leal	-5660(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE105:
		.LBB106:
		.LBB107:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-3100(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE107:
		.LBE106:
		.LBB108:
		.LBB109:
				call	_imp_newline@PLT
		.LBE109:
		.LBE108:
		.LBB110:
   50
   51
   52 %comment %c
   53 print string("test 4"); newline
				leal	-284(%ebp), %eax
				leal	.LC7@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5404(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3356(%ebp), %eax
				leal	-5404(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE110:
		.LBB111:
		.LBB112:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-3356(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE112:
		.LBE111:
		.LBB113:
		.LBB114:
				call	_imp_newline@PLT
		.LBE114:
		.LBE113:
		.LBB115:
   54 print string("If there is output mentioning test 4 above, test 4 passed"); newline
				leal	-284(%ebp), %eax
				leal	.LC8@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5148(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3612(%ebp), %eax
				leal	-5148(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE115:
		.LBB116:
		.LBB117:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-3612(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE117:
		.LBE116:
		.LBB118:
		.LBB119:
				call	_imp_newline@PLT
		.L3:
		.LBE119:
		.LBE118:
   55
   56
   57 lab(':'+two+two*':'-':'*3):        i=10
				movl	$10, -7364(%ebp)
		.LBB120:
   58
   59                                         %comment ' { again
   60                                         %comment   { 'again
   61                                         %comment             '
   62
   63 %comment %c
   64
   65 This this part of the comment in Imp77!
   66
   67 ! %c
   68 print string("Note that %c is not honoured within a '!' comment..."); newline
				leal	-284(%ebp), %eax
				leal	.LC9@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4892(%ebp), %eax
				leal	-284(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-284(%ebp), %eax
				leal	-4892(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE120:
		.LBB121:
		.LBB122:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-284(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE122:
		.LBE121:
		.LBB123:
		.LBB124:
				call	_imp_newline@PLT
		.LBE124:
		.LBE123:
		.LBB125:
   69
   70 !  a comment with an unbalanced ' is a problem
   71 print string("test 5 passed"); newline
				leal	-540(%ebp), %eax
				leal	.LC10@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4636(%ebp), %eax
				leal	-540(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-540(%ebp), %eax
				leal	-4636(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE125:
		.LBB126:
		.LBB127:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-540(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE127:
		.LBE126:
		.LBB128:
		.LBB129:
				call	_imp_newline@PLT
		.LBE129:
		.LBE128:
		.LBB130:
   72
   73
   74 print string("test 6 passed"); newline
				leal	-796(%ebp), %eax
				leal	.LC11@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4380(%ebp), %eax
				leal	-796(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-796(%ebp), %eax
				leal	-4380(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE130:
		.LBB131:
		.LBB132:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-796(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE132:
		.LBE131:
		.LBB133:
		.LBB134:
				call	_imp_newline@PLT
		.LBE134:
		.LBE133:
		.LBB135:
   75
   76
   77 print string("test 7 passed"); newline
				leal	-1052(%ebp), %eax
				leal	.LC12@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4124(%ebp), %eax
				leal	-1052(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1052(%ebp), %eax
				leal	-4124(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE135:
		.LBB136:
		.LBB137:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1052(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE137:
		.LBE136:
		.LBB138:
		.LBB139:
				call	_imp_newline@PLT
		.LBE139:
		.LBE138:
		.LBB140:
   78
   79 %comment  a comment with an unbalanced ' is a problem
   80 print string("test 8 passed"); newline
				leal	-1308(%ebp), %eax
				leal	.LC13@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3868(%ebp), %eax
				leal	-1308(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %eax
				leal	-3868(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE140:
		.LBB141:
		.LBB142:
				subl	$256, %esp
				movl	%esp, %eax
				movl	%eax, %edi
				leal	-1308(%ebp), %eax
				movl	$64, %edx
				movl	%eax, %esi
				movl	%edx, %ecx
				rep movsl
				call	_imp_printstring@PLT
				addl	$256, %esp
		.LBE142:
		.LBE141:
		.LBB143:
		.LBB144:
				call	_imp_newline@PLT
		.L4:
				movl	$0, -7360(%ebp)
		.LBE144:
		.LBE143:
		.LBB145:
		.LBB146:
				subl	$12, %esp
				pushl	-7360(%ebp)
				call	exit@PLT
		.LBE146:
		.LBE145:
		.LFE189:
				.section	.data.rel.local,"aw",@progbits
				.align 4
		LAB.6032:
				.long	.L4
				.long	.L3
				.long	.L2
				.long	.L4
				.section	.text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
				.globl	__x86.get_pc_thunk.bx
				.hidden	__x86.get_pc_thunk.bx
		__x86.get_pc_thunk.bx:
		.LFB191:
				movl	(%esp), %ebx
				ret
		.LFE191:
		.Letext0:
   81
   82 lab(*):
   83 !}
   84
   85 %end{}%of%pro %gram
?THREE unused
?JIM unused
?FRED unused
   39 Statements compiled
