         Edinburgh IMP77 Compiler - Version 8.4
    1 %begin
				.machine ppc
				.section	".text"
		.Ltext0:
				.align 2
				.globl main
		main:
		.LFB185:
		.LVL0:
				stwu 1,-1856(1)
				mflr 0
				stw 0,1860(1)
				stw 29,1844(1)
				stw 30,1848(1)
				stw 31,1852(1)
				lwz 9,-28680(2)
				stw 9,1836(1)
				li 9,0
    2   %reals %long
				bl _imp_initialise
		.LVL1:
		.LBB18:
    3
    4   %integer rounds
    5   %real pi = 1.0
    6
				lis 9,.LC2@ha
				lfd 11,.LC2@l(9)
		.LBB27:
				lis 9,.LC2@ha
				lfd 11,.LC2@l(9)
				b .L6
		.LFE185:
				.section	.rodata
				.align 2
				.set	.LANCHOR0,. + 0
		.LC0:
				.byte	10
				.string	"rounds.txt"
				.zero	244
		__PRETTY_FUNCTION__.6584:
				.string	"_imp_SELECTINPUT"
		.LC1:
				.byte	21
				.string	"test-new/leibnitz.imp"
				.zero	233
				.section	.rodata.cst8,"aM",@progbits,8
				.align 3
		.LC2:
				.long	1072693248
				.long	0
		.LC5:
				.long	1127219200
				.long	-2147483648
		.LC7:
				.long	1074790400
				.long	0
				.section	.rodata.str1.4,"aMS",@progbits,1
				.align 2
		.LC4:
				.string	"Illegal cycle I = 2, 1, ROUNDS"
				.section	".text"
		.Letext0:
    7   !%on %event 9 %start
    8   !  print string("Cannot open file"); newline
    9   !  %stop
   10   !%finish
   11
   12   %integer i
   13
   14   open input(1, "rounds.txt");   ! open file
				lis 31,.LANCHOR0@ha
				la 31,.LANCHOR0@l(31)
				li 5,256
				mr 4,31
				addi 3,1,1580
				bl memcpy
		.LVL2:
				li 5,256
				addi 4,1,1580
				addi 3,1,556
				bl memcpy
		.LVL3:
				li 5,256
				addi 4,1,556
				addi 3,1,1580
				bl memcpy
		.LVL4:
		.LBE18:
		.LBB19:
		.LBB20:
				li 5,256
				addi 4,1,1580
				addi 3,1,288
				bl memcpy
		.LVL5:
				addi 4,1,288
				li 3,1
				bl _imp_openinput
		.LVL6:
		.LBE20:
		.LBE19:
		.LBB21:
		.LBB22:
				lis 9,_imp_InStream@ha
				li 10,1
				stw 10,_imp_InStream@l(9)
				lis 9,_imp_infile+280@ha
				lwz 10,_imp_infile+280@l(9)
				lis 9,_imp_InFile@ha
				stw 10,_imp_InFile@l(9)
				addi 3,31,256
				bl check_instream
		.LVL7:
		.LBE22:
		.LBE21:
   15   select input(1)
   16
   17   read(rounds)
				addi 3,1,552
				bl _imp_readint
		.LVL8:
		.LBB23:
		.LBB24:
				bl _imp_closeinput
		.LVL9:
		.LBE24:
		.LBE23:
   18
   19   close input;                   ! close file
   20
   21   rounds = rounds + 2;           ! do this outside the loop
				lwz 31,552(1)
				addi 30,31,2
				stw 30,552(1)
		.LVL10:
		.LBB25:
   22
   23   %for i=2, 1, rounds %cycle
   24     %long %real x = -1.0 + 2.0 * (i & 1); ! allows vectorization
   25     pi = pi + (x / (2 * i - 1)); ! double / unsigned = double
				cmpwi 7,31,0
				blt 7,.L13
		.L2:
		.LVL11:
				lis 7,0x4330
				lis 9,.LC5@ha
				lfd 10,.LC5@l(9)
				fmr 9,11
				addi 9,31,1
				mtctr 9
		.LVL12:
		.L7:
				rlwinm 9,10,0,31,31
				xoris 9,9,0x8000
				stw 9,28(1)
				stw 7,24(1)
				lfd 0,24(1)
				fsub 0,0,10
				fadd 0,0,0
				fsub 0,0,9
				xoris 9,8,0x8000
				stw 9,20(1)
				stw 7,16(1)
				lfd 12,16(1)
				fsub 12,12,10
				fdiv 0,0,12
				fadd 11,11,0
		.LVL14:
		.LDL1:
				addi 8,8,2
				lis 9,_imp_current_file@ha
				lwz 4,_imp_current_file@l(9)
				cmpwi 7,4,0
				beq 7,.L3
				addi 3,1,1068
				bl _imp_c2istr
		.LVL20:
		.L4:
				lis 9,_imp_current_line@ha
				lwz 29,_imp_current_line@l(9)
				cmpwi 7,29,0
				bne 7,.L5
				li 29,25
		.L5:
				lis 4,.LC4@ha
				la 4,.LC4@l(4)
				addi 3,1,1324
				bl _imp_c2istr
		.LVL21:
				li 5,256
				addi 4,1,1068
				addi 3,1,288
				bl memcpy
		.LVL22:
				li 5,256
				addi 4,1,1324
				addi 3,1,32
				bl memcpy
		.LVL23:
				li 8,0
				li 7,1
				li 6,5
				addi 5,1,32
				mr 4,29
				addi 3,1,288
				bl _signal_event
		.LVL24:
				b .L2
		.L3:
		.LBB26:
				li 5,256
				lis 4,.LANCHOR0@ha
				la 4,.LANCHOR0@l(4)
				addi 4,4,273
				addi 3,1,1324
				bl memcpy
		.LVL25:
				li 5,256
				addi 4,1,1324
				addi 3,1,812
				bl memcpy
		.LVL26:
		.LBE26:
				li 5,256
				addi 4,1,812
				addi 3,1,1068
				bl memcpy
		.LVL27:
				b .L4
		.LVL28:
		.L10:
		.LBE34:
   26   %repeat
				li 10,1
		.LBE25:
   27
   28   pi = pi * 4
				cmpwi 7,30,1
				beq 7,.L10
				li 8,3
				bdnz .L7
		.LVL15:
		.L6:
		.LBE27:
		.LBB28:
		.LBB29:
				li 3,16
				lis 9,.LC7@ha
				lfd 1,.LC7@l(9)
				fmul 1,11,1
		.LVL16:
				bl _imp_printfl
		.LVL17:
		.LBE29:
		.LBE28:
		.LBB30:
		.LBB31:
				bl _imp_newline
		.LVL18:
		.LBE31:
		.LBE30:
		.LBB32:
		.LBB33:
				li 3,0
				bl exit
		.LVL19:
		.L13:
		.LBE33:
		.LBE32:
		.LBB34:
   29   print fl(pi, 16);              ! print 16 decimal digits of pi
				addi 10,10,1
		.LVL13:
   30   newline
   31
   32 %endofprogram
   18 Statements compiled
