operations = [
function addr(a, b, c, r) { r[c] = r[a] + r[b] },
function addi(a, b, c, r) { r[c] = r[a] + b },
function mulr(a, b, c, r) { r[c] = r[a] * r[b] },
function muli(a, b, c, r) { r[c] = r[a] * b },
function banr(a, b, c, r) { r[c] = r[a] & r[b] },
function bani(a, b, c, r) { r[c] = r[a] & b },
function borr(a, b, c, r) { r[c] = r[a] | r[b] },
function bori(a, b, c, r) { r[c] = r[a] | b },
function setr(a, b, c, r) { r[c] = r[a] },
function seti(a, b, c, r) { r[c] = a },
function gtir(a, b, c, r) { r[c] = a > r[b] ? 1 : 0 },
function gtri(a, b, c, r) { r[c] = r[a] > b ? 1 : 0 },
function gtrr(a, b, c, r) { r[c] = r[a] > r[b] ? 1 : 0 },
function eqir(a, b, c, r) { r[c] = a === r[b] ? 1 : 0 },
function eqri(a, b, c, r) { r[c] = r[a] === b ? 1 : 0 },
function eqrr(a, b, c, r) { r[c] = r[a] === r[b] ? 1 : 0 },
]