#!C:\Python24

import os, re, sys, mmap

# file names
name_exe = raw_input("Exe Path: ")
name_blend = os.path.splitext(name_exe)[0] + '.blend'

# open input file
file_in = open(name_exe, 'rb+')

# memory mapped input file
data = mmap.mmap(file_in.fileno(), os.path.getsize(name_exe))

# regular expression
r = re.compile('BLENDER[_-][vV][0-9]{3}')

# search blender's header
result = re.search(r, data)

if (not result):
    print >>sys.stderr, 'No BLENDER header found'
    sys.exit(1)

# offset file
offset = result.start()

# open output file
file_out = open(name_blend, 'wb')

# write data
file_out.write(data[offset:])

# report

if (data[offset + 7] == '_'):
    bits = 32
else:
    bits = 64

if (data[offset + 8] == 'v'):
    endian = 'Little'
else:
    endian = 'Big'

version = data[offset + 9] + '.' + data[offset + 10] + data[offset + 11]

print 'File input: "%s"' % name_exe
print 'Offset: %d (%#x)' % (offset, offset)
print 'File output: "%s"' % name_blend
print bits, 'bits'
print endian, 'endian'
print 'Version:', version

sys.exit(0)