1 ARITHI new_allocptr
/R1 := zero
/R0 iadd
257
2 LABEL v
/L0
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_closure
/R3 std_arg
/R4 std_cont
/R5 )
4 STORE M
[ allocptr
/R1 + 0 ] := v
/R6
5 STORE M
[ allocptr
/R1 + 1 ] := std_cont
/R5
6 ARITHI closure
/R5 := allocptr
/R1 iadd
0
7 ARITHI int10
/R8 := zero
/R0 iadd
10
8 GETREAL real3.0
/R9 := 3.0
9 ARITHI new_allocptr
/R1 := allocptr
/R1 iadd
2
10 BRANCH IF zero
/R0 ieq zero
/R0 GOTO array
/L1
( zero
/R0 allocptr
/R1 exnhandler
/R2 n
/R8 v
/R9 v
/R5 )
11 LABEL array
/L1
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 n
/R8 v
/R9 v
/R5 )
12 STORE M
[ allocptr
/R1 + 0 ] := n
/R8
13 ARITH new_allocptr
/R1 := n
/R8 iadd allocptr
/R1
14 ARITH arr
/R4 := allocptr
/R1 isub n
/R8
15 BRANCH IF zero
/R0 ige n
/R8 GOTO else
/L8
( zero
/R0 allocptr
/R1 exnhandler
/R2 arr
/R4 v
/R5 )
17 STORE M
[ allocptr
/R1 + 1 ] := v
/R6
18 STORE M
[ allocptr
/R1 + 2 ] := arr
/R4
19 STORE M
[ allocptr
/R1 + 3 ] := v
/R5
20 ARITHI closure
/R5 := allocptr
/R1 iadd
1
21 STORE M
[ arr
/R4 + 1 ] := v
/R9
22 ARITHI int1
/R6 := zero
/R0 iadd
1
23 ARITHI new_allocptr
/R1 := allocptr
/R1 iadd
4
24 BRANCH IF zero
/R0 ieq zero
/R0 GOTO g
/L2
( zero
/R0 allocptr
/R1 exnhandler
/R2 i
/R6 v
/R5 arr
/R4 n
/R8 v
/R9 )
25 LABEL else
/L8
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 arr
/R4 v
/R5 )
26 FETCHi v
/R6 := M
[ v
/R5 + 0 ]
27 ARITHI new_allocptr
/R1 := allocptr
/R1 iadd
1
28 JUMP v
/R6 ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
29 LABEL g
/L2
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 i
/R6 v
/R5 arr
/R4 n
/R8 v
/R9 )
30 BRANCH IF i
/R6 ige n
/R8 GOTO else
/L9
( zero
/R0 allocptr
/R1 exnhandler
/R2 v
/R5 )
31 ARITH x
/R7 := arr
/R4 iadd i
/R6
32 STORE M
[ x
/R7 + 1 ] := v
/R9
33 ARITHI i
/R6 := i
/R6 iadd
1
34 BRANCH IF i
/R6 ige n
/R8 GOTO else
/L10
( zero
/R0 allocptr
/R1 exnhandler
/R2 v
/R5 )
35 ARITH x
/R7 := arr
/R4 iadd i
/R6
36 STORE M
[ x
/R7 + 1 ] := v
/R9
37 ARITHI i
/R6 := i
/R6 iadd
1
38 BRANCH IF zero
/R0 ieq zero
/R0 GOTO g
/L2
( zero
/R0 allocptr
/R1 exnhandler
/R2 i
/R6 v
/R5 arr
/R4 n
/R8 v
/R9 )
39 LABEL else
/L10
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 v
/R5 )
40 FETCHi v
/R6 := M
[ v
/R5 + 0 ]
41 MOVE std_arg
/R4 := zero
/R0
42 JUMP v
/R6 ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
43 LABEL else
/L9
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 v
/R5 )
44 FETCHi v
/R6 := M
[ v
/R5 + 0 ]
45 MOVE std_arg
/R4 := zero
/R0
46 JUMP v
/R6 ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
47 LABEL v
/L3
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
48 FETCHi arr
/R4 := M
[ std_cont
/R5 + 1 ]
49 FETCHi v
/R5 := M
[ std_cont
/R5 + 2 ]
50 FETCHi v
/R6 := M
[ v
/R5 + 0 ]
51 JUMP v
/R6 ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
52 LABEL v
/L4
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
54 STORE M
[ allocptr
/R1 + 0 ] := v
/R6
55 FETCHi x
/R6 := M
[ std_cont
/R5 + 1 ]
56 STORE M
[ allocptr
/R1 + 1 ] := x
/R6
57 STORE M
[ allocptr
/R1 + 2 ] := std_arg
/R4
58 ARITHI closure
/R5 := allocptr
/R1 iadd
0
59 ARITHI int10
/R8 := zero
/R0 iadd
10
60 GETREAL real4.0
/R9 := 4.0
61 ARITHI new_allocptr
/R1 := allocptr
/R1 iadd
3
62 BRANCH IF zero
/R0 ieq zero
/R0 GOTO array
/L1
( zero
/R0 allocptr
/R1 exnhandler
/R2 n
/R8 v
/R9 v
/R5 )
63 LABEL v
/L5
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
65 STORE M
[ allocptr
/R1 + 0 ] := v
/R6
66 FETCHi x
/R6 := M
[ std_cont
/R5 + 1 ]
67 STORE M
[ allocptr
/R1 + 1 ] := x
/R6
68 ARITHI closure
/R11 := allocptr
/R1 iadd
0
69 GETREAL real0.0
/R10 := 0.0
70 ARITHI new_allocptr
/R1 := allocptr
/R1 iadd
2
72 BRANCH IF zero
/R0 ieq zero
/R0 GOTO f
/L6
( zero
/R0 allocptr
/R1 exnhandler
/R2 k
/R8 Q
/R10 v
/R11 X1
/R4 closure
/R5 )
73 LABEL f
/L6
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 k
/R8 Q
/R10 v
/R11 X1
/R4 closure
/R5 )
74 ARITHI int10
/R6 := zero
/R0 iadd
10
75 BRANCH IF k
/R8 ige int10
/R6 GOTO else
/L11
( zero
/R0 allocptr
/R1 exnhandler
/R2 v
/R11 Q
/R10 )
76 ARITHI v
/R9 := k
/R8 iadd
1
77 FETCHi Z1
/R6 := M
[ closure
/R5 + 2 ]
78 ARITH x
/R6 := Z1
/R6 iadd k
/R8
79 FETCHm v
/R7 := M
[ x
/R6 + 1 ]
80 ARITH x
/R6 := X1
/R4 iadd k
/R8
81 FETCHm v
/R6 := M
[ x
/R6 + 1 ]
82 ARITH v
/R6 := v
/R7 fmul v
/R6
83 ARITH v
/R10 := Q
/R10 fadd v
/R6
85 BRANCH IF zero
/R0 ieq zero
/R0 GOTO f
/L6
( zero
/R0 allocptr
/R1 exnhandler
/R2 k
/R8 Q
/R10 v
/R11 X1
/R4 closure
/R5 )
86 LABEL else
/L11
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 v
/R11 Q
/R10 )
87 FETCHi v
/R6 := M
[ v
/R11 + 0 ]
88 MOVE std_cont
/R5 := v
/R11
89 MOVE std_arg
/R4 := Q
/R10
90 JUMP v
/R6 ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
91 LABEL v
/L7
: ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )
92 STORE M
[ allocptr
/R1 + 0 ] := std_arg
/R4
93 ARITHI S
/R4 := allocptr
/R1 iadd
0
94 FETCHi v
/R5 := M
[ std_cont
/R5 + 1 ]
95 FETCHi v
/R6 := M
[ v
/R5 + 0 ]
96 ARITHI new_allocptr
/R1 := allocptr
/R1 iadd
1
97 JUMP v
/R6 ( zero
/R0 allocptr
/R1 exnhandler
/R2 std_cont
/R5 std_arg
/R4 )