.symbol
 fp 30
 sp 29
 retval 28
 rads 27
 ax 1100
 s0 1120
 s1 1121
 s2 1122
 s3 1123
.code 0
 mov fp #3500
 mov sp #3000
 jal rads main
 trap r0 #0
; fun main pv 0
:main
cid r3
eq r2 r3 #0
jt r2 core0
eq r2 r3 #1
jt r2 core1
eq r2 r3 #2
jt r2 core2
jmp core3
trap r0 #0
:L101
ret rads
; fun suma pv 1
:suma
; gnAsg :(#2 0 )
; gnAsg :(#2 (+ #2 (vec ax #1 )))
; gnAsg :(#1 (+ #1 4 ))
st r1 @1 fp
st r2 @2 fp
st r3 @3 fp
st r4 @4 fp
add fp fp #5
st rads @0 fp
pop sp r1
mov r2 #0
jmp L103
:L104
ld r4 @ax r1
add r3 r2 r4
mov r2 r3
add r3 r1 #4
mov r1 r3
:L103
lt r3 r1 #20
jt r3 L104
mov retval r2
jmp L102
:L102
ld rads @0 fp
sub fp fp #5
ld r4 @4 fp
ld r3 @3 fp
ld r2 @2 fp
ld r1 @1 fp
ret rads
; fun printa pv 0
:printa
; gnAsg :(#1 0 )
st r1 @1 fp
st r2 @2 fp
add fp fp #3
st rads @0 fp
mov r1 #0
jmp L106
:L107
ld r2 @ax r1
trap r2 #1
add r1 r1 #1
:L106
lt r2 r1 #20
jt r2 L107
:L105
ld rads @0 fp
sub fp fp #3
ld r2 @2 fp
ld r1 @1 fp
ret rads
; fun core0 pv 0
:core0
; gnAsg :(s0 (call suma 0 ))
; gnAsg :(#1 (+ (+ (+ s0 s1 )s2 )s3 ))
mov sp #3000
mov fp #3500
mov r2 #0
push sp r2
jal rads suma
st r28 s0
sync
ld r2 s0
ld r4 s1
add r3 r2 r4
ld r4 s2
add r2 r3 r4
ld r4 s3
add r3 r2 r4
mov r1 r3
trap r1 #1
trap r0 #0
:L108
ret rads
; fun core1 pv 0
:core1
; gnAsg :(s1 (call suma 1 ))
mov sp #4000
mov fp #4500
mov r1 #1
push sp r1
jal rads suma
st r28 s1
sync
trap r0 #0
:L109
ret rads
; fun core2 pv 0
:core2
; gnAsg :(s2 (call suma 2 ))
mov sp #5000
mov fp #5500
mov r1 #2
push sp r1
jal rads suma
st r28 s2
sync
trap r0 #0
:L110
ret rads
; fun core3 pv 0
:core3
; gnAsg :(s3 (call suma 3 ))
mov sp #6000
mov fp #6500
mov r1 #3
push sp r1
jal rads suma
st r28 s3
sync
trap r0 #0
:L111
ret rads
; fun initdata pv 0
:initdata
.data 1100
  1 2 3 4 5 6 7 8 9 10
  11 12 13 14 15 16 17 18 19 20

.end
