def get_blockhash(self, blocknum, table_offset = 0):
        """ Given a block number return the hash object that goes with it """
        record = blocknum % 0xAA
        #Num tables * space blocks between each (0xAB or 0xAC for [0])
        tablenum = blocknum // 0xAA * self.table_spacing[self.table_size_shift][0]
        if blocknum >= 0xAA:
            tablenum += (blocknum // 0x70E4 + 1) << self.table_size_shift #skip level 1 tables 
            if blocknum >= 0x70E4:
                tablenum += 1 << self.table_size_shift #If we're into level 2 add the level 2 table

        # Read the table block, get the correct record and pass it to BlockHashRecord
        
        # Fix to point at the first table (these numbers are offset from data block numbers)
        tablenum += table_offset - (1 << self.table_size_shift) 
        hashdata = self.read_block(tablenum)
        return BlockHashRecord(blocknum, hashdata[record * 0x18: record * 0x18 + 0x18],\
                               table = tablenum, record = record)
dataset/ETHPy150Open arkem/py360/py360/stfs.py/STFS.get_blockhash/original