#!/usr/bin/env python
from sys import argv

def f1r(input): # 0x00437890
  for j in range(len(input))[::-1]:
    c = (ord(input[j]) - ord(input[j-1])) & 0x7f
    if c == 3:
      c = 0
    input = input[:j] + chr(c) + input[j+1:]
  return input.rstrip('\x00')

def f2r(input): # 0x00437710
  out = ''
  for i in range(len(input)/2):
    c = (ord(input[2*i]) - ord('A')) << 4 # nibbles left
    d = ord(input[2*i+1]) - ord('A') # nibbles right
    out += chr(c+d)
  return out

def f3r(input): # 0x00437AA0
  return input[::-1]

if __name__=='__main__':
  input = argv[1]
  print "input: %s (%i)" % (input, len(input))
  v3 = f3r(input)
  print "f3r: %r %s" % (v3, v3.encode("hex"))
  v2 = f2r(v3)
  print "f2r: %r %s" % (v2, v2.encode("hex"))
  v1 = f1r(v2)
  print "f1r: %r %s" % (v1, v1.encode("hex"))
  print v1
