#!/usr/bin/env python import sys, struct ip, r, f = 0x00, [0x00]*4, [False] def _add(r1, r2): r[r1] = ((r[r1] + r[r2]) & 0xFF) def _addv(r1, v): r[r1] = ((r[r1] + v) & 0xFF) def _sub(r1, r2): r[r1] = ((r[r1] - r[r2]) & 0xFF) def _subv(r1, v): r[r1] = ((r[r1] - v) & 0xFF) def _xor(r1, r2): r[r1] = (r[r1] ^ r[r2]) def _xorv(r1, v): r[r1] = (r[r1] ^ v) def _cmp(r1, r2): f[0] = (r[r1] == r[r2]) def _cmpv(r1, v): f[0] = (r[r1] == v) def _je(o): global ip; ip = (o if f[0] else ip) def _jne(o): global ip; ip = (o if not f[0] else ip) def _wchr(r1): sys.stdout.write(chr(r[r1])) def _rchr(r1): r[r1] = ord(sys.stdin.read(1)) ins = [_add, _addv, _sub, _subv, _xor, _xorv, _cmp, _cmpv, _je, _jne, _wchr, _rchr] ins_cmd = ["add", "addv", "sub", "subv", "xor", "xorv", "cmp", "cmpv", "je", "jne", "wchr", "rchr"] def run(codez): global ip while ip < len(codez): c_ins = ins[ord(codez[ip])] if c_ins in [_je, _jne]: #print format(ip,'04X')+': '+ins_cmd[ord(codez[ip])]+'('+format(struct.unpack('