         Edinburgh IMP77 Compiler - Version 8.4
    1 %constinteger Max Bound       =      7
		.Ltext0:
				.globl	next_free_bound_index
				.bss
				.align 4
		next_free_bound_index:
				.zero	4
				.comm	_lb,384,32
				.comm	_ub,384,32
				.globl	ATYPE
				.align 4
		ATYPE:
				.zero	4
				.globl	MEMBERFMTYPE
				.align 4
		MEMBERFMTYPE:
				.zero	4
				.globl	STACKFMTYPE
				.align 4
		STACKFMTYPE:
				.zero	4
		DO.6234:
		.LFB190:
    2 %recordformat Boundfm(%integer Lower, Upper, Mult)
    3 %recordformat Afm(%integer Dimension,
    4                            Total Size,
    5                            Zero Displacement,
    6                            DV,
    7                            Local Frame,
    8                            Base,
    9     %record(Boundfm)%array Bound(1:Max Bound))
   10
   11 %constrecord(Afm)%name A type == 0             {for NEW}
   12
   13 %recordformat Varfm(%integer Flags,
   14                     %byte Base, Prim,
   15                  %byte  Type, Form,
   16                  (%longreal Rvar %or
   17                   %integer Disp, (%integer Extra %or %record(Afm)%name Adata)),
   18                  (%integer Format %or %integer Scale),
   19                  %integer Area)
   20
   21
   22 %recordformatspec Stackfm
   23 %recordformat Olfm(%integer  Oper, %record(Stackfm)%name Link)
   24 %recordformat  Xfm(%integer Xsize, %record(Stackfm)%name Index)
   25
   26 %recordformat Datafm( %c
   27         %record(Varfm)    V,
   28         %integer Varno,
   29         %record(Varfm)%name Fv,
   30         (%integer Bias %or %byte Reg, Label),
   31         %record(Stackfm)%name  Params, Record,
   32         (%integer Oper, %record(Stackfm)%name Link %or %record(Olfm) Oplink),
   33         (%integer Xsize, %record(Stackfm)%name Index %or %record(Xfm) X))
   34
   35 %recordformat Memberfm(%integer Const, Items,
   36                        %record(Stackfm)%name A, B,
   37                        %record(Memberfm)%name Link)
   38
   39 %constrecord(Memberfm)%name Memberfm Type == 0
   40
   41 %recordformat Stackfm( %c
   42    %record(Varfm)     V                   %or
   43    %record(Datafm)    Data                %or
   44    %integer Flags,
   45    %byte Base, Prim,
   46    %byte  Type, Form,
   47    (%longreal Rval %or %integer Rhigh, Rlow %c
   48      %or (%integer Disp, (%integer Extra %or %record(Afm)%name Adata)),
   49    (%integer Format %or %integer Scale),
   50    %integer Area,
   51    %integer Varno,
   52    (%record(Varfm)%name Fv %or %record(Memberfm)%name Members),
   53    (%integer Bias %or %byte Reg, Label),
   54    %record(Stackfm)%name     Params, Record,
   55    (%integer  Oper, %record(Stackfm)%name Link  %or %record(Olfm) Oplink),
   56    (%integer Xsize, %record(Stackfm)%name Index %or %record(Xfm) X)),
   57    %record(Stackfm)%name          Using, Stack)
   58
   59 %constrecord(Stackfm)%name Stackfm Type == 0
   60
   61 %begin
				leal	4(%esp), %ecx
				andl	$-16, %esp
				pushl	-4(%ecx)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%ebx
				pushl	%ecx
				subl	$96, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -92(%ebp)
				movl	%gs:20, %ecx
				movl	%ecx, -12(%ebp)
				xorl	%ecx, %ecx
				leal	8(%ebp), %edx
				movl	%edx, -88(%ebp)
				subl	$8, %esp
				pushl	-92(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
   62   %record (stackfm) V
   63   %routine do(%record (stackfm) %name  V)
				pushl	%ebp
				movl	%esp, %ebp
				pushl	%ebx
				subl	$20, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, -12(%ebp)
   64     write(v_Base, 0)
				movl	8(%ebp), %eax
				movzbl	4(%eax), %eax
				movzbl	%al, %eax
				subl	$8, %esp
				pushl	$0
				pushl	%eax
				call	_imp_writeint@PLT
				addl	$16, %esp
   65     write(v_Disp, 0)
				movl	8(%ebp), %eax
				movl	8(%eax), %eax
				subl	$8, %esp
				pushl	$0
				pushl	%eax
				call	_imp_writeint@PLT
				addl	$16, %esp
   66     write(v_Oper, 0)
				movl	8(%ebp), %eax
				movl	44(%eax), %eax
				subl	$8, %esp
				pushl	$0
				pushl	%eax
				call	_imp_writeint@PLT
				addl	$16, %esp
   67   %end
				nop
				movl	-4(%ebp), %ebx
				leave
				ret
		.LFE190:
				.globl	main
		main:
		.LFB189:
   68
   69   do(V)
				subl	$12, %esp
				leal	-88(%ebp), %eax
				leal	-80(%ebp), %edx
				pushl	%edx
				movl	%eax, %ecx
				call	DO.6234
				addl	$16, %esp
				movl	$0, -84(%ebp)
		.LBB4:
		.LBB5:
				subl	$12, %esp
				pushl	-84(%ebp)
				call	exit@PLT
		.LBE5:
		.LBE4:
		.LFE189:
				.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:
   70
   71 %endofprogram
   22 Statements compiled
