         Edinburgh IMP77 Compiler - Version 8.4
    1 %realslong
		.Ltext0:
		_imp_PI:
		.LFB9:
				pushl	%ebp
				movl	%esp, %ebp
				call	__x86.get_pc_thunk.ax
				addl	$_GLOBAL_OFFSET_TABLE_, %eax
				fldl	.LC12@GOTOFF(%eax)
				popl	%ebp
				ret
		.LFE9:
				.section	.rodata
				.align 32
		.LC0:
				.byte	20
				.string	"* PRINT/PRINTFL TEST"
				.zero	234
				.align 32
		.LC1:
				.byte	11
				.string	"* SQRT TEST"
				.zero	243
				.align 32
		.LC2:
				.byte	26
				.string	"* INT/REAL CONVERSION TEST"
				.zero	228
				.align 32
		.LC3:
				.byte	10
				.string	"Expected: "
				.zero	244
				.align 32
		.LC4:
				.byte	58
				.string	"           'X'    Int(X)   Int Pt(X)   Round(X)   Trunc(X)"
				.zero	196
				.align 32
		.LC5:
				.byte	55
				.string	"          -11.7     -12       -12        -12        -11"
				.zero	199
				.align 32
		.LC6:
				.byte	55
				.string	"           -1.2      -1        -2         -1         -1"
				.zero	199
				.align 32
		.LC7:
				.byte	55
				.string	"           -0.5       0        -1         -1          0"
				.zero	199
				.align 32
		.LC8:
				.byte	55
				.string	"            0.5       1         0          1          0"
				.zero	199
				.align 32
		.LC9:
				.byte	55
				.string	"            1.2       1         1          1          1"
				.zero	199
				.align 32
		.LC10:
				.byte	55
				.string	"           11.7      12        11         12         11"
				.zero	199
				.align 32
		.LC11:
				.byte	8
				.string	"Actual: "
				.zero	246
				.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	$7320, %esp
				call	__x86.get_pc_thunk.bx
				addl	$_GLOBAL_OFFSET_TABLE_, %ebx
				movl	%ecx, %eax
				movl	4(%eax), %edx
				movl	%edx, -7324(%ebp)
				movl	%gs:20, %esi
				movl	%esi, -28(%ebp)
				xorl	%esi, %esi
				subl	$8, %esp
				pushl	-7324(%ebp)
				pushl	(%eax)
				call	_imp_initialise@PLT
				addl	$16, %esp
    3   %ownrealarray x(0:5) = -11.7, -1.2, -0.5, 0.5, 1.2, 11.7
				leal	-7264(%ebp), %edx
				movl	$0, %eax
				movl	$17, %ecx
				movl	%edx, %edi
				rep stosl
				leal	X.6021@GOTOFF(%ebx), %eax
				movl	%eax, -7264(%ebp)
				movl	$8, -7260(%ebp)
		.LBB94:
    4   %integer i
    5   %ownreal r = 64.9
    6
    7   print string("* PRINT/PRINTFL TEST"); 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	-284(%ebp), %eax
				leal	-7196(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE94:
		.LBB95:
		.LBB96:
				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
		.LBE96:
		.LBE95:
		.LBB97:
		.LBB98:
				call	_imp_newline@PLT
		.LBE98:
		.LBE97:
    8   print fl(pi,4); newlines(2)
				call	_imp_PI
				fstpl	-7296(%ebp)
				movl	$4, -7304(%ebp)
		.LBB99:
		.LBB100:
				subl	$4, %esp
				pushl	-7304(%ebp)
				pushl	-7292(%ebp)
				pushl	-7296(%ebp)
				call	_imp_printfl@PLT
				addl	$16, %esp
				movl	$2, -7308(%ebp)
		.LBE100:
		.LBE99:
		.LBB101:
		.LBB102:
				subl	$12, %esp
				pushl	-7308(%ebp)
				call	_imp_newlines@PLT
				addl	$16, %esp
		.LBE102:
		.LBE101:
		.LBB103:
    9
   10   print string("* SQRT TEST"); newline
				leal	-540(%ebp), %eax
				leal	.LC1@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6940(%ebp), %eax
				leal	-540(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-540(%ebp), %eax
				leal	-6940(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE103:
		.LBB104:
		.LBB105:
				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
		.LBE105:
		.LBE104:
		.LBB106:
		.LBB107:
				call	_imp_newline@PLT
		.LBE107:
		.LBE106:
		.LBB108:
   11   ! print string("ISqrt(64) = "); write(isqrt(64), 3); newlines(2)  ;! ISqrt is not a standard perm
   12
   13   print string("* INT/REAL CONVERSION TEST"); newline
				leal	-796(%ebp), %eax
				leal	.LC2@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6684(%ebp), %eax
				leal	-796(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-796(%ebp), %eax
				leal	-6684(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE108:
		.LBB109:
		.LBB110:
				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
		.LBE110:
		.LBE109:
		.LBB111:
		.LBB112:
				call	_imp_newline@PLT
		.LBE112:
		.LBE111:
		.LBB113:
   14   print string("Expected: "); newline
				leal	-1052(%ebp), %eax
				leal	.LC3@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6428(%ebp), %eax
				leal	-1052(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1052(%ebp), %eax
				leal	-6428(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE113:
		.LBB114:
		.LBB115:
				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
		.LBE115:
		.LBE114:
		.LBB116:
		.LBB117:
				call	_imp_newline@PLT
		.LBE117:
		.LBE116:
		.LBB118:
   15   print string("           'X'    Int(X)   Int Pt(X)   Round(X)   Trunc(X)"); newline
				leal	-1308(%ebp), %eax
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-6172(%ebp), %eax
				leal	-1308(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1308(%ebp), %eax
				leal	-6172(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE118:
		.LBB119:
		.LBB120:
				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
		.LBE120:
		.LBE119:
		.LBB121:
		.LBB122:
				call	_imp_newline@PLT
		.LBE122:
		.LBE121:
		.LBB123:
		.LBB124:
				call	_imp_newline@PLT
		.LBE124:
		.LBE123:
		.LBB125:
   16   newline
   17   print string("          -11.7     -12       -12        -12        -11"); newline
				leal	-1564(%ebp), %eax
				leal	.LC5@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5916(%ebp), %eax
				leal	-1564(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1564(%ebp), %eax
				leal	-5916(%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	-1564(%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:
   18   print string("           -1.2      -1        -2         -1         -1"); newline
				leal	-1820(%ebp), %eax
				leal	.LC6@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5660(%ebp), %eax
				leal	-1820(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-1820(%ebp), %eax
				leal	-5660(%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	-1820(%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:
   19   print string("           -0.5       0        -1         -1          0"); newline
				leal	-2076(%ebp), %eax
				leal	.LC7@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5404(%ebp), %eax
				leal	-2076(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2076(%ebp), %eax
				leal	-5404(%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	-2076(%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:
   20   print string("            0.5       1         0          1          0"); newline
				leal	-2332(%ebp), %eax
				leal	.LC8@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-5148(%ebp), %eax
				leal	-2332(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2332(%ebp), %eax
				leal	-5148(%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	-2332(%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
		.LBE144:
		.LBE143:
		.LBB145:
   21   print string("            1.2       1         1          1          1"); newline
				leal	-2588(%ebp), %eax
				leal	.LC9@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4892(%ebp), %eax
				leal	-2588(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2588(%ebp), %eax
				leal	-4892(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE145:
		.LBB146:
		.LBB147:
				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
		.LBE147:
		.LBE146:
		.LBB148:
		.LBB149:
				call	_imp_newline@PLT
		.LBE149:
		.LBE148:
		.LBB150:
   22   print string("           11.7      12        11         12         11"); newline
				leal	-2844(%ebp), %eax
				leal	.LC10@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4636(%ebp), %eax
				leal	-2844(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-2844(%ebp), %eax
				leal	-4636(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE150:
		.LBB151:
		.LBB152:
				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
		.LBE152:
		.LBE151:
		.LBB153:
		.LBB154:
				call	_imp_newline@PLT
		.LBE154:
		.LBE153:
		.LBB155:
		.LBB156:
				call	_imp_newline@PLT
		.LBE156:
		.LBE155:
		.LBB157:
   23   newline
   24   print string("Actual: "); newline
				leal	-3100(%ebp), %eax
				leal	.LC11@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4380(%ebp), %eax
				leal	-3100(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3100(%ebp), %eax
				leal	-4380(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE157:
		.LBB158:
		.LBB159:
				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
		.LBE159:
		.LBE158:
		.LBB160:
		.LBB161:
				call	_imp_newline@PLT
		.LBE161:
		.LBE160:
		.LBB162:
   25   print string("           'X'    Int(X)   Int Pt(X)   Round(X)   Trunc(X)"); newline
				leal	-3356(%ebp), %eax
				leal	.LC4@GOTOFF(%ebx), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-4124(%ebp), %eax
				leal	-3356(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3356(%ebp), %eax
				leal	-4124(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE162:
		.LBB163:
		.LBB164:
				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
		.LBE164:
		.LBE163:
		.LBB165:
		.LBB166:
				call	_imp_newline@PLT
		.LBE166:
		.LBE165:
		.LBB167:
   26   print string(""); newline
				movb	$0, -3612(%ebp)
				movl	$0, -3611(%ebp)
				leal	-3607(%ebp), %edx
				movl	$0, %eax
				movb	%al, (%edx)
				addl	$1, %edx
				movw	%ax, (%edx)
				addl	$2, %edx
				movl	$62, %ecx
				movl	%edx, %edi
				rep stosl
				leal	-3868(%ebp), %eax
				leal	-3612(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
				leal	-3612(%ebp), %eax
				leal	-3868(%ebp), %edx
				movl	$64, %ecx
				movl	%eax, %edi
				movl	%edx, %esi
				rep movsl
		.LBE167:
		.LBB168:
		.LBB169:
				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
		.LBE169:
		.LBE168:
		.LBB170:
		.LBB171:
				call	_imp_newline@PLT
		.LBE171:
		.LBE170:
   27   %for i = 0, 1, 5 %cycle
				movl	$-1, -7312(%ebp)
		.L4:
				cmpl	$5, -7312(%ebp)
				je	.L12
				addl	$1, -7312(%ebp)
				nop
		.L6:
		.LBB180:
		.LBB181:
				call	_imp_newline@PLT
				movl	$0, -7300(%ebp)
		.LBE181:
		.LBE180:
		.LBB182:
		.LBB183:
				subl	$12, %esp
				pushl	-7300(%ebp)
				call	exit@PLT
		.LBE183:
		.LBE182:
		.LFE189:
				.data
				.align 32
		X.6021:
				.long	1717986918
				.long	-1071159706
				.long	858993459
				.long	-1074580685
				.long	0
				.long	-1075838976
				.long	0
				.long	1071644672
				.long	858993459
				.long	1072902963
				.long	1717986918
				.long	1076323942
				.align 8
		R.6024:
				.long	-1717986918
				.long	1078999449
				.section	.rodata
				.align 8
		.LC12:
				.long	1413754136
				.long	1074340347
				.align 8
		.LC13:
				.long	0
				.long	1071644672
				.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:
		.LFB190:
				movl	(%esp), %eax
				ret
		.LFE190:
				.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:
   28     r = x(i)
				movl	-7312(%ebp), %eax
				fldl	X.6021@GOTOFF(%ebx,%eax,8)
				fstpl	R.6024@GOTOFF(%ebx)
   29     write(int(r),8)
				fldl	R.6024@GOTOFF(%ebx)
				fstpl	-7288(%ebp)
		.LBB172:
		.LBB173:
				fldl	-7288(%ebp)
				fldl	.LC13@GOTOFF(%ebx)
				faddp	%st, %st(1)
				fstpl	-7280(%ebp)
		.LBB174:
		.LBB175:
				subl	$8, %esp
				pushl	-7276(%ebp)
				pushl	-7280(%ebp)
				call	floor@PLT
				addl	$16, %esp
				fnstcw	-7326(%ebp)
				movzwl	-7326(%ebp), %eax
				orb	$12, %ah
				movw	%ax, -7328(%ebp)
				fldcw	-7328(%ebp)
				fistpl	-7332(%ebp)
				fldcw	-7326(%ebp)
				movl	-7332(%ebp), %eax
		.LBE175:
		.LBE174:
		.LBE173:
		.LBE172:
				subl	$8, %esp
				pushl	$8
				pushl	%eax
				call	_imp_writeint@PLT
				addl	$16, %esp
   30     write(intpt(r),10)
				fldl	R.6024@GOTOFF(%ebx)
				fstpl	-7272(%ebp)
		.LBB176:
		.LBB177:
				subl	$8, %esp
				pushl	-7268(%ebp)
				pushl	-7272(%ebp)
				call	floor@PLT
				addl	$16, %esp
				fnstcw	-7326(%ebp)
				movzwl	-7326(%ebp), %eax
				orb	$12, %ah
				movw	%ax, -7328(%ebp)
				fldcw	-7328(%ebp)
				fistpl	-7332(%ebp)
				fldcw	-7326(%ebp)
				movl	-7332(%ebp), %eax
		.LBE177:
		.LBE176:
				subl	$8, %esp
				pushl	$10
				pushl	%eax
				call	_imp_writeint@PLT
				addl	$16, %esp
		.LBB178:
		.LBB179:
				call	_imp_newline@PLT
		.LBE179:
		.LBE178:
   31     newline
   32   %repeat
				jmp	.L4
		.L12:
   33   newline
   34
   35 %endofprogram
   45 Statements compiled
