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

	.data
	.align 2
data_base:
	.space 4
	.asciiz "short circuit failed in or\n"
	.asciiz "short circuit failed in and\n"
	.asciiz "hello world from main\n"
	.asciiz "some values (13,14): %d %d\n"
	.asciiz "returned a variable, value is %d, should be 81\n"
	.asciiz "returned a constant, value is %d, should be 1\n"
	.asciiz "if failed on a && proc\n"
	.asciiz "successfully did a short-circuited and.\n"
	.asciiz "if failed on a || proc\n"
	.asciiz "if failed on !a || proc\n"
	.asciiz "sum from 0 to 99 is %d, should be 4950\n"
	.asciiz "successfully did a short-circuited or.\n"
	.asciiz "successfully did a short-circuited or.\n"
	.asciiz "if failed on !a && proc\n"
	.asciiz "successfully did a short-circuited and.\n"
	.asciiz "args: %d+%d+%d+%d+%d+%d=%d\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
_test_short_circuit:
	.ent _test_short_circuit
	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,64
	nop		# test_short_circuit begins here
	move $2,$4
	move $21,$2
	move $2,$5
	move $20,$2
	sne $19,$20,1
	move $2,$19
	bne $2,$0,label_3
label_2:
	li $2,1
label_4:
	nop		# test_short_circuit'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 _test_short_circuit
label_3:
	sne $18,$21,1
	move $2,$18
	bne $2,$0,label_0
label_1:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 4
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	move $17,$2
	b label_2
label_0:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 32
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	move $16,$2
	b label_2
_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,160
	nop		# main begins here
	li $2,0
	move $16,$2
	li $2,0
	sw $2,-100($30)
	li $2,0
	sw $2,-144($30)
	li $2,0
	sw $2,-148($30)
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 61
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-84($30)
	li $2,13
	sw $2,0($23)
	li $2,14
	sw $2,-144($30)
	nop		# Function call: 3 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	lw $6,-144($30)
	lw $5,0($23)
	la $4,data_base + 84
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-76($30)
	nop		# Function call: 6 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	lw $9,-144($30)
	lw $8,-144($30)
	lw $7,-144($30)
	lw $6,0($23)
	lw $5,0($23)
	lw $4,0($23)
	jal _test_long_args
	nop		# Clean up from call
	nop		# Function call sequence completed
	sw $2,-68($30)
	lw $2,-68($30)
	sw $2,-100($30)
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	lw $5,-100($30)
	la $4,data_base + 112
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	move $21,$2
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	li $5,1
	li $4,0
	jal _test_short_circuit
	nop		# Clean up from call
	nop		# Function call sequence completed
	move $19,$2
	move $2,$19
	move $16,$2
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	move $5,$16
	la $4,data_base + 160
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	move $17,$2
	li $2,1
	move $16,$2
	move $2,$16
	bne $2,$0,label_22
label_21:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 207
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-140($30)
label_23:
	sne $25,$16,1
	sw $25,-136($30)
	lw $2,-136($30)
	bne $2,$0,label_18
label_17:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 231
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-132($30)
label_19:
	move $2,$16
	bne $2,$0,label_12
label_14:
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	li $5,0
	li $4,0
	jal _test_short_circuit
	nop		# Clean up from call
	nop		# Function call sequence completed
	sw $2,-128($30)
	lw $2,-128($30)
	bne $2,$0,label_12
label_13:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 272
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-124($30)
label_15:
	sne $25,$16,1
	sw $25,-120($30)
	lw $2,-120($30)
	bne $2,$0,label_8
label_10:
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	li $5,1
	li $4,0
	jal _test_short_circuit
	nop		# Clean up from call
	nop		# Function call sequence completed
	sw $2,-116($30)
	lw $2,-116($30)
	bne $2,$0,label_8
label_9:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 296
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-112($30)
label_11:
	li $2,0
	sw $2,-148($30)
	li $2,0
	sw $2,-100($30)
	li $2,100
	sw $2,-144($30)
label_5:
	lw $2,-148($30)
	lw $24,-144($30)
	slt $25,$2,$24
	sw $25,-108($30)
	lw $2,-108($30)
	bne $2,$0,label_6
label_7:
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	lw $5,-100($30)
	la $4,data_base + 321
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-104($30)
label_24:
	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
label_6:
	lw $2,-100($30)
	lw $24,-148($30)
	add $25,$2,$24
	sw $25,-96($30)
	lw $2,-96($30)
	sw $2,-100($30)
	lw $2,-148($30)
	add $25,$2,1
	sw $25,-92($30)
	lw $2,-92($30)
	sw $2,-148($30)
	b label_5
label_8:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 361
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-88($30)
	b label_11
label_12:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 401
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-80($30)
	b label_15
label_18:
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	li $5,0
	li $4,1
	jal _test_short_circuit
	nop		# Clean up from call
	nop		# Function call sequence completed
	sw $2,-72($30)
	lw $2,-72($30)
	bne $2,$0,label_16
	b label_17
label_16:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 441
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	move $22,$2
	b label_19
label_22:
	nop		# Function call: 2 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	li $5,1
	li $4,1
	jal _test_short_circuit
	nop		# Clean up from call
	nop		# Function call sequence completed
	move $20,$2
	move $2,$20
	bne $2,$0,label_20
	b label_21
label_20:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 466
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	move $18,$2
	b label_23
_test_long_args:
	.ent _test_long_args
	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,112
	nop		# test_long_args begins here
	move $2,$4
	sw $2,-68($30)
	move $2,$5
	move $22,$2
	move $2,$6
	move $21,$2
	move $2,$7
	move $20,$2
	move $2,$8
	move $19,$2
	move $2,$9
	move $18,$2
	lw $2,-68($30)
	add $17,$2,$22
	add $16,$17,$21
	add $25,$16,$20
	sw $25,-104($30)
	lw $2,-104($30)
	add $25,$2,$19
	sw $25,-100($30)
	lw $2,-100($30)
	add $25,$2,$18
	sw $25,-96($30)
	nop		# Function call: 8 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	lw $11,-96($30)
	move $10,$18
	move $9,$19
	move $8,$20
	move $7,$21
	move $6,$22
	lw $5,-68($30)
	la $4,data_base + 507
	jal printf
	nop		# Clean up from callout
	nop		# Function callout sequence completed
	sw $2,-92($30)
	lw $2,-68($30)
	add $25,$2,$22
	sw $25,-88($30)
	lw $2,-88($30)
	add $25,$2,$21
	sw $25,-84($30)
	lw $2,-84($30)
	add $25,$2,$20
	sw $25,-80($30)
	lw $2,-80($30)
	add $25,$2,$19
	sw $25,-76($30)
	lw $2,-76($30)
	add $25,$2,$18
	sw $25,-72($30)
	lw $2,-72($30)
label_25:
	nop		# test_long_args'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 _test_long_args
array_bounds_runtime_exception:
	nop		# Function call: 1 args, 0 callersaves, 0 padding
	nop		# Placement of arguments
	la $4,data_base + 535
	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 + 593
	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

