# Purely for shits and giggles.
glabel StableRandom
lw $t0, ($a0)
bne $t0, $zero, .leftloaded
lw $t1, 4($a0)
srl $t2, $t1, 24
addiu $t3, $zero, 4
.leftloop:
sll $t4, $t2, 3
addiu $t5, $t2, 29
sll $t2, $t4, 3
addu $t5, $t4, $t5
addu $t4, $t2, $t5
addiu $t3, $t3, -1
andi $t2, $t4, 255
sll $t4, $t0, 8
bne $t3, $zero, .leftloop
or $t0, $t2, $t4
lui $t3, 256
addiu $t3, $t3, -1
sll $t2, $t2, 24
and $t3, $t1, $t3
or $t1, $t3, $t2
.leftloaded:
srl $t2, $t0, 8
xor $t3, $t0, $t2
sll $t0, $t3, 9
xor $t2, $t3, $t0
srl $t3, $t2, 23
xor $t0, $t2, $t3
andi $t4, $t1, 255
addiu $t2, $t4, -210
bltz $t2, .noreduction
srl $t3, $t1, 8
addu $t4, $zero, $t2
.noreduction:
srl $t2, $t1, 16
andi $t3, $t3, 255
andi $t2, $t2, 255
addu $t5, $t4, $t3
addu $t5, $t5, $t2
srl $t1, $t1, 24
beq $t5, $zero, .reloadright
addiu $at, $zero, 719
bne $t5, $at, .rightloaded
nop
.reloadright:
sll $t4, $t1, 3
addiu $t3, $t1, 29
sll $t2, $t4, 3
addu $t4, $t4, $t3
addu $t1, $t2, $t4
sll $t5, $t1, 3
addiu $t3, $t1, 29
sll $t4, $t5, 3
addu $t6, $t5, $t3
andi $t2, $t1, 255
addu $t1, $t4, $t6
sll $t5, $t1, 3
andi $t4, $t1, 255
addiu $t3, $t1, 29
sltiu $at, $t4, 210
addu $t5, $t5, $t3
addiu $at, $at, -1
sll $t6, $t1, 6
andi $at, $at, 210
addu $t1, $t5, $t6
subu $t4, $t4, $at
andi $t3, $t1, 255
.rightloaded:
addiu $at, $zero, 210
multu $at, $t2
sll $t2, $t3, 16
mflo $t5
addu $t4, $t5, $t4
srl $t3, $t4, 8
andi $t5, $t4, 255
addu $t2, $t2, $t3
sll $t4, $t5, 8
addu $t2, $t2, $t4
sll $t3, $t1, 3
addiu $t4, $t1, 29
sll $t1, $t1, 6
addu $t3, $t3, $t4
addu $t4, $t1, $t3
sll $t1, $t4, 24
addu $t1, $t1, $t2
sw $t0, ($a0)
sw $t1, 4($a0)
srl $t2, $t1, 27
andi $t3, $t2, 24
srl $t4, $t1, 28
srlv $t5, $t0, $t3
srl $t2, $t1, 8
andi $t3, $t4, 3
andi $t1, $t2, 255
andi $t0, $t5, 255
addu $t2, $t0, $t1
beq $t3, $zero, .done
addiu $at, $zero, 1
xor $t2, $t0, $t1
beq $t3, $at, .done
addiu $at, $zero, 2
subu $t2, $t0, $t1
beq $t3, $at, .done
nop
subu $t2, $t1, $t0
.done:
jr $ra
andi $v0, $t2, 255
Comments