
	.global main 
	.align 4
.str8:
	.asciz "hello\n"
.str9:
	.asciz "here1\n"
.str10:
	.asciz "a is now %d, and x is now %d\n"
.str11:
	.asciz "%d "
.str12:
	.asciz "\n"

	.align 4
main:

	save %sp,-200,%sp
	mov 6,%o0
	st %o0,[%fp-20]
	mov 0,%o0
	st %o0,[%fp-24]
	set .str8,%o0
	st %o0,[%fp-28]
	mov 20,%o0
	st %o0,[%fp-32]
	st %o0,[%fp-36]
	st %o0,[%fp-40]
	st %o0,[%fp-44]
	st %o0,[%fp-48]
	ba endfunc5
	nop
func4:
	save %sp,-200,%sp
	st %i0,[%fp-20]
	ld [%fp+180],%o0
	add %o0,%i0,%o1
	st %o1,[%fp+180]
	ld [%fp+180],%o0
	mov %o0,%i0
	ret
	restore
endfunc5:
	ld [%fp-28],%o1
	mov %o1,%o0
	call printf
	nop
	mov 4,%o1
	mov %o0,%l0
	mov %o1,%o0
	call func4
	nop
	st %o0,[%fp-24]
	mov 4,%o1
	mov %o0,%l0
	mov %o1,%o0
	call func4
	nop
	st %o0,[%fp-24]
	set .str9,%o1
	mov %o1,%o0
	call printf
	nop
	set .str10,%o1
	mov %o0,%l0
	ld [%fp-20],%o0
	mov %o1,%l1
	mov %o0,%l2
	ld [%fp-24],%o0
	mov %o0,%l3
	mov %o1,%o0
	mov %l2,%o1
	mov %l3,%o2
	call printf
	nop
	mov 4,%o1
	st %o1,[%fp-20]
	mov 1,%o1
	mov 0,%o2
	mov -32,%g7
	mov %o2,%o3
	sll %o3,2,%o3
	sub %g7,%o3,%o3
	st %o1,[%fp+%o3]
	mov 2,%o1
	mov 1,%o2
	mov -32,%g7
	mov %o2,%o3
	sll %o3,2,%o3
	sub %g7,%o3,%o3
	st %o1,[%fp+%o3]
	mov 3,%o1
	mov 2,%o2
	mov -32,%g7
	mov %o2,%o3
	sll %o3,2,%o3
	sub %g7,%o3,%o3
	st %o1,[%fp+%o3]
	mov 4,%o1
	mov 3,%o2
	mov -32,%g7
	mov %o2,%o3
	sll %o3,2,%o3
	sub %g7,%o3,%o3
	st %o1,[%fp+%o3]
	mov 5,%o1
	mov 4,%o2
	mov -32,%g7
	mov %o2,%o3
	sll %o3,2,%o3
	sub %g7,%o3,%o3
	st %o1,[%fp+%o3]
swhile6:
	ld [%fp-20],%o1
	mov 0,%o2
	cmp %o1,%o2
	mov 1,%o1
	bge bool7
	nop
	mov %g0,%o1
bool7:
	cmp %o1,%g0
	be ewhile6
	nop
	set .str11,%o1
	mov %o0,%l0
	ld [%fp-20],%o0
	sll %o0,2,%o0
	mov -32,%g7
	sub %g7,%o0,%o0
	ld [%fp+%o0],%o0
	mov %o0,%l1
	mov %o1,%o0
	mov %l1,%o1
	call printf
	nop
	ld [%fp-20],%o1
	mov 1,%o2
	sub %o1,%o2,%o3
	st %o3,[%fp-20]
	ba swhile6
	nop
ewhile6:
	set .str12,%o1
	mov %o1,%o0
	call printf
	nop

	mov 1, %g1
	ta 0
