         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
		.Ltext0:
		IFN.6028:
		.LFB190:
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%ebx
				pushl	%ecx
				subl	$460, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -460(%ebp)
				movl	%gs:20, %edi
				movl	%edi, -28(%ebp)
				xorl	%edi, %edi
				leal	8(%ebp), %edx
				movl	%edx, -452(%ebp)
				subl	$8, %esp
				pushl	-460(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
    2   %owninteger      io
    3   %integer         i
    4   %integername     in
    5   %externalinteger ie
    6   %integerarray    ia(0:9)
				leal	-352(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-432(%ebp), %eax
				movl	%eax, -352(%ebp)
				movl	$4, -348(%ebp)
    7   %integerfn       ifn(%integer i)
				pushl	%ebp
				movl	%esp, %ebp
				subl	$4, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, -4(%ebp)
    8     %result = 1
				movl	$1, %eax
    9   %end
				leave
				ret
		.LFE190:
				.globl	main
		main:
		.LFB189:
?I unused
   10   %integerfn       ifn2
				pushl	%ebp
				movl	%esp, %ebp
				subl	$4, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, -4(%ebp)
   11     %result = 1
				movl	$1, %eax
   12   %end
				leave
				ret
		.LFE191:
		IM.6034:
		.LFB192:
   13   %integermap      im(%integer i)
				pushl	%ebp
				movl	%esp, %ebp
				subl	$4, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, -4(%ebp)
   14     %result ==  io
				leal	IO.6021@GOTOFF(%eax), %eax
   15   %end
				leave
				ret
		.LFE192:
		IM2.6037:
		.LFB193:
?I unused
   16   %integermap      im2
				pushl	%ebp
				movl	%esp, %ebp
				subl	$4, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, -4(%ebp)
   17     %result ==  io
				leal	IO.6021@GOTOFF(%eax), %eax
   18   %end
				leave
				ret
		.LFE193:
		IR.6040:
		.LFB194:
   19   %routine         ir(%integer n)
				pushl	%ebp
				movl	%esp, %ebp
				subl	$4, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, -4(%ebp)
   20   %end
				nop
				leave
				ret
		.LFE194:
		RM.6055:
		.LFB195:
?N unused
   21   %recordformat    rf(%integer i)
   22   %recordformat    rfa(%integerarray ia(0:9))
   23   %record(rfa)%map   rm
				pushl	%ebp
				movl	%esp, %ebp
				subl	$4, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, -4(%ebp)
   24     %ownrecord(rfa) orec
   25     %result == orec
				leal	OREC.6057@GOTOFF(%eax), %eax
   26   %end
				leave
				ret
		.LFE195:
				.comm	IO.6021,4,4
				.section	.data.rel.local,"aw",@progbits
				.align 32
		SW.6063:
				.long	.L5
				.long	.L4
				.long	.L5
				.long	.L5
				.long	.L5
				.long	.L5
				.long	.L5
				.long	.L5
				.long	.L5
				.long	.L5
				.comm	OREC.6057,40,32
				.section	.text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat
				.globl	__x86.get_pc_thunk.ax
				.hidden	__x86.get_pc_thunk.ax
		__x86.get_pc_thunk.ax:
		.LFB196:
				movl	(%esp), %eax
				ret
		.LFE196:
				.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:
		.LFB197:
				movl	(%esp), %ebx
				ret
		.LFE197:
		.Letext0:
   27   %record(rf)%array  rec(0:9)
				leal	-284(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-392(%ebp), %eax
				movl	%eax, -284(%ebp)
				movl	$4, -280(%ebp)
		.L4:
		.L5:
   28   %switch          sw(0:9)
   29
   30   sw(1):
   31   %comment sw(1):
   32
   33   io = 1
				movl	$1, IO.6021@GOTOFF(%ebx)
   34   %comment io = 1
   35
   36   ie = 1
				movl	$1, -448(%ebp)
   37   %comment ie = 1
   38
   39   ia(1) = 1
				movl	$1, -428(%ebp)
   40   %comment ia(1) = 1
   41
   42   i = ifn(1)
				subl	$12, %esp
				leal	-452(%ebp), %eax
				pushl	$1
				movl	%eax, %ecx
				call	IFN.6028
				addl	$16, %esp
				movl	%eax, -444(%ebp)
   43   %comment i = ifn(1)
   44
   45   i = ifn2
				leal	-452(%ebp), %eax
				movl	%eax, %ecx
				call	IFN2.6031
				movl	%eax, -444(%ebp)
   46   %comment i = ifn2
   47
   48   i = im(1)
				subl	$12, %esp
				leal	-452(%ebp), %eax
				pushl	$1
				movl	%eax, %ecx
				call	IM.6034
				addl	$16, %esp
				movl	(%eax), %eax
				movl	%eax, -444(%ebp)
   49   %comment i = im(1)
   50
   51   in == im(1)
				subl	$12, %esp
				leal	-452(%ebp), %eax
				pushl	$1
				movl	%eax, %ecx
				call	IM.6034
				addl	$16, %esp
				movl	%eax, -440(%ebp)
   52   %comment in == im(1)
   53
   54   im(1) = 1
				subl	$12, %esp
				leal	-452(%ebp), %eax
				pushl	$1
				movl	%eax, %ecx
				call	IM.6034
				addl	$16, %esp
				movl	$1, (%eax)
   55   %comment im(1) = 1
   56
   57   im2 = 1
				leal	-452(%ebp), %eax
				movl	%eax, %ecx
				call	IM2.6037
				movl	$1, (%eax)
   58   %comment im2 = 1
   59
   60   rec(1)_i = 1
				movl	$1, -388(%ebp)
   61   %comment rec(1)_i = 1
   62
   63   ir(1)
				subl	$12, %esp
				leal	-452(%ebp), %eax
				pushl	$1
				movl	%eax, %ecx
				call	IR.6040
				addl	$16, %esp
   64   %comment ir(1)
   65
   66   in == ia(1)
				leal	-432(%ebp), %eax
				addl	$4, %eax
				movl	%eax, -440(%ebp)
   67   %comment in == ia(1)
   68
   69   i = ia(1)
				movl	-428(%ebp), %eax
				movl	%eax, -444(%ebp)
   70   %comment i = ia(1)
   71
   72   i = rm_ia(1)
				leal	-452(%ebp), %eax
				movl	%eax, %ecx
				call	RM.6055
				movl	4(%eax), %eax
				movl	%eax, -444(%ebp)
   73   %comment i = rm_ia(1)
   74
   75   in == rm_ia(1)
				leal	-452(%ebp), %eax
				movl	%eax, %ecx
				call	RM.6055
				addl	$4, %eax
				movl	%eax, -440(%ebp)
				movl	$0, -436(%ebp)
		.LBB6:
		.LBB7:
				subl	$12, %esp
				pushl	-436(%ebp)
				call	exit@PLT
		.LBE7:
		.LBE6:
		.LFE189:
		IFN2.6031:
		.LFB191:
   76   %comment in = rm_ia(1)
   77
   78 %endofprogram
   44 Statements compiled
