	.data

	.text
___start:
	jal	f_main
	li	$v0, 10
	syscall		 # stoppe l'execution du processus
f_max:
	subi	$sp, $sp, 4		 # empile registre
	sw	$fp, 0($sp)
	move	$fp, $sp		 # nouvelle valeur de $fp
	subi	$sp, $sp, 4		 # empile registre
	sw	$ra, 0($sp)
	lw	$t1, 8($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	lw	$t1, 4($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	lw	$t1, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	lw	$t0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	li	$t2, -1		 # inf
	blt	$t0, $t1, i_e2
	li	$t2, 0
i_e2:
	subi	$sp, $sp, 4		 # empile registre
	sw	$t2, 0($sp)
	lw	$t0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	beq	$t0, $zero, i_e1
	lw	$t1, 4($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	lw	$t0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	sw	$t0, 12($fp)		 # ecriture de la valeur de retour
	lw	$ra, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	lw	$fp, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	jr	$ra
i_e1:
	lw	$t1, 8($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	lw	$t0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	sw	$t0, 12($fp)		 # ecriture de la valeur de retour
	lw	$ra, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	lw	$fp, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	jr	$ra
	lw	$ra, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	lw	$fp, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	jr	$ra
f_main:
	subi	$sp, $sp, 4		 # empile registre
	sw	$fp, 0($sp)
	move	$fp, $sp		 # nouvelle valeur de $fp
	subi	$sp, $sp, 4		 # empile registre
	sw	$ra, 0($sp)
	subi	$sp, $sp, 8	# allocation variables locales
	li	$v0, 5
	syscall		 # lecture
	subi	$sp, $sp, 4		 # empile registre
	sw	$v0, 0($sp)
	lw	$t1, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	sw	$t1, -8($fp)		 # stocke variable
	li	$v0, 5
	syscall		 # lecture
	subi	$sp, $sp, 4		 # empile registre
	sw	$v0, 0($sp)
	lw	$t1, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	sw	$t1, -12($fp)		 # stocke variable
	subi	$sp, $sp, 4		 # allocation valeur de retour
				# empile arg 0
	lw	$t1, -8($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
				# empile arg 1
	lw	$t1, -12($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	jal	f_max
	addi	$sp, $sp, 8		# desallocation parametres
	lw	$t1, -8($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	lw	$t1, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	lw	$t0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	li	$t2, -1		 # egal
	beq	$t0, $t1, i_e5
	li	$t2, 0
i_e5:
	subi	$sp, $sp, 4		 # empile registre
	sw	$t2, 0($sp)
	lw	$t0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	beq	$t0, $zero, i_e3
	lw	$t1, -8($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	lw	$a0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	li	$v0, 1
	syscall		 # ecriture
	li	$a0, '\n'
	li	$v0, 11
	syscall		 # ecrire char
	j	i_e4
i_e3:
	lw	$t1, -12($fp)		 # lit variable dans $t1
	subi	$sp, $sp, 4		 # empile registre
	sw	$t1, 0($sp)
	lw	$a0, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	li	$v0, 1
	syscall		 # ecriture
	li	$a0, '\n'
	li	$v0, 11
	syscall		 # ecrire char
i_e4:
	addi	$sp, $sp, 8	# desallocation variables locales
	lw	$ra, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	lw	$fp, 0($sp)		 # depile vers registre
	addi	$sp, $sp, 4
	jr	$ra
