    # MIPS assembly: native format
    # Automatically generated by ASM.MIPSGenerator

	.data
	.align 2
data_base:
	.space 0
	.asciiz "Hello, World.\n"
	.asciiz "Runtime exception: array index out of bounds.  Aborting.\n"
	.asciiz "Runtime exception: control fell off the end of a non-void procedure.  Aborting.\n"
	.text
	.globl main
main:
	la $23,data_base
	jal _main
	nop		# Function call: 0 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	jal exit
	nop		# Clean up from callout
	nop		# Function callout sequence completed
_main:
	.ent _main
	sw $30,-4($29)
	move $30,$29
	sw $31,-8($29)
	sw $16,-12($29)
	sw $17,-16($29)
	sw $18,-20($29)
	sw $19,-24($29)
	sw $20,-28($29)
	sw $21,-32($29)
	sw $22,-36($29)
	sub $29,$29,48
	nop		# main begins here
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 0
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	move $16,$2
label_0:
	nop		# main's epilogue
	move $29,$30
	lw $30,-4($29)
	lw $31,-8($29)
	lw $16,-12($29)
	lw $17,-16($29)
	lw $18,-20($29)
	lw $19,-24($29)
	lw $20,-28($29)
	lw $21,-32($29)
	lw $22,-36($29)
	jr $31
	.end _main
array_bounds_runtime_exception:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 15
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	nop		# Function call: 0 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	jal exit
	nop		# Clean up from callout
	nop		# Function callout sequence completed
fell_off_end_runtime_exception:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 73
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	nop		# Function call: 0 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	jal exit
	nop		# Clean up from callout
	nop		# Function callout sequence completed

