def parse_filetable(self):
        """ Generate objects for all the filelistings """
        data = StringIO()
        self.filelistings = []
        self.allfiles = {}
        #for x in range(0, self.filetable_blockcount):
        #    data.write(self.read_block(self.filetable_blocknumber + x))
        #data = data.getvalue()
        data = self.read_filetable(self.filetable_blocknumber, self.filetable_blockcount)

        for x in range(0, len(data), 0x40): # File records are 0x40 length
            try:
                self.filelistings.append(FileListing(data[x:x+0x40]))
            except AssertionError:
                pass
        for fl in self.filelistings: # Build a dictionary to access filelistings by path
            path_components = [fl.filename]
            a = fl
            while a.pathindex != -1 and a.pathindex < len(self.filelistings):
                try:
                    a = self.filelistings[a.pathindex]
                    path_components.append(a.filename)
                except IndexError:
                    raise AssertionError("IndexError: %s %d %d" % (self.filename, a.pathindex, len(self.filelistings)))
            path_components.append('')
            path_components.reverse()
            self.allfiles["/".join(path_components)] = fl
dataset/ETHPy150Open arkem/py360/py360/stfs.py/STFS.parse_filetable/original