         Edinburgh IMP77 Compiler - Version 8.4
    1 !%permroutinespec    write(%integer  v,p);
		.Ltext0:
				.globl	next_free_bound_index
				.bss
				.align 4
		next_free_bound_index:
				.zero	4
				.comm	_lb,384,32
				.comm	_ub,384,32
		FANCY9.6025:
		.LFB190:
    2 !%permroutinespec    newline
    3
    4 %begin
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%edi
				pushl	%ebx
				pushl	%ecx
				subl	$396, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -396(%ebp)
				movl	%gs:20, %edi
				movl	%edi, -28(%ebp)
				xorl	%edi, %edi
				leal	8(%ebp), %edx
				movl	%edx, -392(%ebp)
				subl	$8, %esp
				pushl	-396(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
    5   %routine fancy9(%integer %array (2) %name param)
				pushl	%ebp
				movl	%esp, %ebp
				subl	$4, %esp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				movl	%ecx, -4(%ebp)
    6   %end
				nop
				leave
				ret
		.LFE190:
				.globl	main
		main:
		.LFB189:
?PARAM unused
    7
    8   %integer %array       ia0(2:3)
				leal	-328(%ebp), %edx
				movl	$0, %eax
				movl	$15, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-376(%ebp), %eax
				movl	%eax, -328(%ebp)
				movl	$4, -324(%ebp)
				movl	$1, -320(%ebp)
				movl	$2, -316(%ebp)
				movl	$3, -312(%ebp)
    9   %integer %array       ia1(2:3,1:2)
				leal	-268(%ebp), %edx
				movl	$0, %eax
				movl	$15, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-368(%ebp), %eax
				movl	%eax, -268(%ebp)
				movl	$4, -264(%ebp)
				movl	$2, -260(%ebp)
				movl	$2, -256(%ebp)
				movl	$3, -252(%ebp)
				movl	$1, -248(%ebp)
				movl	$2, -244(%ebp)
   10   %integer %array       ia2(1:2,1:3)
				leal	-208(%ebp), %edx
				movl	$0, %eax
				movl	$15, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-352(%ebp), %eax
				movl	%eax, -208(%ebp)
				movl	$4, -204(%ebp)
				movl	$2, -200(%ebp)
				movl	$1, -196(%ebp)
				movl	$2, -192(%ebp)
				movl	$1, -188(%ebp)
				movl	$3, -184(%ebp)
   11
   12   %integer %array     %name ian0
				leal	-148(%ebp), %edx
				movl	$0, %eax
				movl	$15, %ecx
				movl	%edx, %edi
				rep stosl
   13   %integer %array (2) %name ian1
				leal	-88(%ebp), %edx
				movl	$0, %eax
				movl	$15, %ecx
				movl	%edx, %edi
				rep stosl
   14
   15   ia1(2,1) = 221; ia1(3,1) = 331
				movl	$221, -368(%ebp)
				movl	$331, -360(%ebp)
   16   ia1(2,2) = 10;  ia1(3,2) = 20
				movl	$10, -364(%ebp)
				movl	$20, -356(%ebp)
   17
   18   ia2(1,1) = 8221;  ia2(2,1) = 9331
				movl	$8221, -352(%ebp)
				movl	$9331, -340(%ebp)
   19   ia2(1,2) = 8010;  ia2(2,2) = 9020
				movl	$8010, -348(%ebp)
				movl	$9020, -336(%ebp)
   20   ia2(1,3) = 8333;  ia2(2,3) = 9333
				movl	$8333, -344(%ebp)
				movl	$9333, -332(%ebp)
   21
   22   ian1 == ia1
				leal	-368(%ebp), %eax
				movl	%eax, -388(%ebp)
				movl	-268(%ebp), %eax
				movl	%eax, -88(%ebp)
				movl	-264(%ebp), %eax
				movl	%eax, -84(%ebp)
				movl	-260(%ebp), %eax
				movl	%eax, -80(%ebp)
				movl	-256(%ebp), %eax
				movl	%eax, -76(%ebp)
				movl	-252(%ebp), %eax
				movl	%eax, -72(%ebp)
				movl	-248(%ebp), %eax
				movl	%eax, -68(%ebp)
				movl	-244(%ebp), %eax
				movl	%eax, -64(%ebp)
				movl	-240(%ebp), %eax
				movl	%eax, -60(%ebp)
				movl	-236(%ebp), %eax
				movl	%eax, -56(%ebp)
				movl	-232(%ebp), %eax
				movl	%eax, -52(%ebp)
				movl	-228(%ebp), %eax
				movl	%eax, -48(%ebp)
				movl	-224(%ebp), %eax
				movl	%eax, -44(%ebp)
				movl	-220(%ebp), %eax
				movl	%eax, -40(%ebp)
				movl	-216(%ebp), %eax
				movl	%eax, -36(%ebp)
				movl	-212(%ebp), %eax
				movl	%eax, -32(%ebp)
   23   write(ian1(2,1),0)
				movl	-88(%ebp), %eax
				movl	%eax, %edx
				movl	-76(%ebp), %eax
				movl	$1, %ecx
				subl	%eax, %ecx
				movl	%ecx, %eax
				movl	%eax, %ecx
				movl	-84(%ebp), %eax
				imull	%ecx, %eax
				addl	%edx, %eax
				movl	(%eax), %eax
				subl	$8, %esp
				pushl	$0
				pushl	%eax
				call	_imp_writeint@PLT
				addl	$16, %esp
		.LBB8:
		.LBB9:
				call	_imp_newline@PLT
		.LBE9:
		.LBE8:
   24   newline
   25
   26   fancy9(ian1)
				subl	$12, %esp
				leal	-392(%ebp), %eax
				pushl	-388(%ebp)
				movl	%eax, %ecx
				call	FANCY9.6025
				addl	$16, %esp
   27
   28   ian1 == ia2
				leal	-352(%ebp), %eax
				movl	%eax, -388(%ebp)
				movl	-208(%ebp), %eax
				movl	%eax, -88(%ebp)
				movl	-204(%ebp), %eax
				movl	%eax, -84(%ebp)
				movl	-200(%ebp), %eax
				movl	%eax, -80(%ebp)
				movl	-196(%ebp), %eax
				movl	%eax, -76(%ebp)
				movl	-192(%ebp), %eax
				movl	%eax, -72(%ebp)
				movl	-188(%ebp), %eax
				movl	%eax, -68(%ebp)
				movl	-184(%ebp), %eax
				movl	%eax, -64(%ebp)
				movl	-180(%ebp), %eax
				movl	%eax, -60(%ebp)
				movl	-176(%ebp), %eax
				movl	%eax, -56(%ebp)
				movl	-172(%ebp), %eax
				movl	%eax, -52(%ebp)
				movl	-168(%ebp), %eax
				movl	%eax, -48(%ebp)
				movl	-164(%ebp), %eax
				movl	%eax, -44(%ebp)
				movl	-160(%ebp), %eax
				movl	%eax, -40(%ebp)
				movl	-156(%ebp), %eax
				movl	%eax, -36(%ebp)
				movl	-152(%ebp), %eax
				movl	%eax, -32(%ebp)
   29   write(ian1(2,1),0)
				movl	-88(%ebp), %eax
				movl	%eax, %edx
				movl	-76(%ebp), %eax
				movl	$1, %ecx
				subl	%eax, %ecx
				movl	%ecx, %eax
				movl	%eax, %ecx
				movl	-84(%ebp), %eax
				imull	%ecx, %eax
				addl	%edx, %eax
				movl	(%eax), %eax
				subl	$8, %esp
				pushl	$0
				pushl	%eax
				call	_imp_writeint@PLT
				addl	$16, %esp
		.LBB10:
		.LBB11:
				call	_imp_newline@PLT
		.LBE11:
		.LBE10:
   30   newline
   31
   32   ian0 == ia0
				leal	-376(%ebp), %eax
				movl	%eax, -384(%ebp)
				movl	-328(%ebp), %eax
				movl	%eax, -148(%ebp)
				movl	-324(%ebp), %eax
				movl	%eax, -144(%ebp)
				movl	-320(%ebp), %eax
				movl	%eax, -140(%ebp)
				movl	-316(%ebp), %eax
				movl	%eax, -136(%ebp)
				movl	-312(%ebp), %eax
				movl	%eax, -132(%ebp)
				movl	-308(%ebp), %eax
				movl	%eax, -128(%ebp)
				movl	-304(%ebp), %eax
				movl	%eax, -124(%ebp)
				movl	-300(%ebp), %eax
				movl	%eax, -120(%ebp)
				movl	-296(%ebp), %eax
				movl	%eax, -116(%ebp)
				movl	-292(%ebp), %eax
				movl	%eax, -112(%ebp)
				movl	-288(%ebp), %eax
				movl	%eax, -108(%ebp)
				movl	-284(%ebp), %eax
				movl	%eax, -104(%ebp)
				movl	-280(%ebp), %eax
				movl	%eax, -100(%ebp)
				movl	-276(%ebp), %eax
				movl	%eax, -96(%ebp)
				movl	-272(%ebp), %eax
				movl	%eax, -92(%ebp)
   33
   34   !fancy9(ia0) not allowed
   35
   36   fancy9(ia1)
				subl	$12, %esp
				leal	-392(%ebp), %eax
				leal	-368(%ebp), %edx
				pushl	%edx
				movl	%eax, %ecx
				call	FANCY9.6025
				addl	$16, %esp
   37   fancy9(ian1)
				subl	$12, %esp
				leal	-392(%ebp), %eax
				pushl	-388(%ebp)
				movl	%eax, %ecx
				call	FANCY9.6025
				addl	$16, %esp
				movl	$0, -380(%ebp)
		.LBB12:
		.LBB13:
				subl	$12, %esp
				pushl	-380(%ebp)
				call	exit@PLT
		.LBE13:
		.LBE12:
		.LFE189:
				.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:
		.LFB191:
				movl	(%esp), %eax
				ret
		.LFE191:
				.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:
		.LFB192:
				movl	(%esp), %ebx
				ret
		.LFE192:
		.Letext0:
   38
   39 %endofprogram
   29 Statements compiled
