import types
def inv(fn):
t=fn.__code__
c=list(t.co_code)
idxs=[i+1 for i,j in enumerate(c) if j=='d' and c[i+1]!='\0']
for i in range(len(idxs)/2):
c[idxs[i]], c[idxs[-i-1]] = c[idxs[-i-1]], c[idxs[i]]
outcode=types.CodeType( t.co_argcount, t.co_nlocals, t.co_stacksize, t.co_flags, ''.join(c), t.co_consts, t.co_names, t.co_varnames, t.co_filename, t.co_name, t.co_firstlineno, t.co_lnotab)
return types.FunctionType(outcode, globals(), fn.__name__[::-1])
@inv
def f():
print 'Line1'
print 'Line2'
print 'Line3'
print 'Line4'
f()
aW1wb3J0IHR5cGVzCgpkZWYgaW52KGZuKToKICAgIHQ9Zm4uX19jb2RlX18KICAgIGM9bGlzdCh0LmNvX2NvZGUpCiAgICBpZHhzPVtpKzEgZm9yIGksaiBpbiBlbnVtZXJhdGUoYykgaWYgaj09J2QnIGFuZCBjW2krMV0hPSdcMCddCiAgICBmb3IgaSBpbiByYW5nZShsZW4oaWR4cykvMik6CiAgICAgICAgY1tpZHhzW2ldXSwgY1tpZHhzWy1pLTFdXSA9IGNbaWR4c1staS0xXV0sIGNbaWR4c1tpXV0KICAgIG91dGNvZGU9dHlwZXMuQ29kZVR5cGUoIHQuY29fYXJnY291bnQsIHQuY29fbmxvY2FscywgdC5jb19zdGFja3NpemUsIHQuY29fZmxhZ3MsICcnLmpvaW4oYyksIHQuY29fY29uc3RzLCB0LmNvX25hbWVzLCB0LmNvX3Zhcm5hbWVzLCB0LmNvX2ZpbGVuYW1lLCB0LmNvX25hbWUsIHQuY29fZmlyc3RsaW5lbm8sIHQuY29fbG5vdGFiKQogICAgcmV0dXJuIHR5cGVzLkZ1bmN0aW9uVHlwZShvdXRjb2RlLCBnbG9iYWxzKCksIGZuLl9fbmFtZV9fWzo6LTFdKQoKQGludgpkZWYgZigpOgogICAgcHJpbnQgJ0xpbmUxJwogICAgcHJpbnQgJ0xpbmUyJwogICAgcHJpbnQgJ0xpbmUzJwogICAgcHJpbnQgJ0xpbmU0JwoKZigpCg==