rendered paste bodypirs_object *pirs_get_filetable (pirs_t *pirs) { struct __pears_file_ent *file_entry; int offset; int height; int i; offset = 0; pirs_dt_table *table; for (height = 0;; height++) { file_entry = (struct __pears_file_ent *)&(pirs->buf[P_OFF_FILETABLE + offset]); if (file_entry->filename[0] == '\0') break; offset += sizeof (struct __pears_file_ent); } table = pirs_alloc_table (7, height * 7, "File table"); table->header[0] = "Filename"; table->header[1] = "unknown0"; table->header[2] = "unknown1"; table->header[3] = "offset"; table->header[4] = "unknown3"; table->header[5] = "size"; table->header[6] = "unknown5"; i = 0; offset = 0; while (1) { file_entry = (struct __pears_file_ent *)&(pirs->buf[P_OFF_FILETABLE + offset]); if (file_entry->filename[0] == '\0') break; table->entries[i++] = pirs_alloc_table_ent (String, (unsigned long)strdup (file_entry->filename)); table->entries[i++] = pirs_alloc_table_ent (Hexa32, bs32(file_entry->unknown0)); table->entries[i++] = pirs_alloc_table_ent (Hexa32, bs32(file_entry->unknown1)); table->entries[i++] = pirs_alloc_table_ent (Hexa32, bs32(file_entry->unknown2 >> 4)); table->entries[i++] = pirs_alloc_table_ent (Hexa32, bs32(file_entry->unknown3)); table->entries[i++] = pirs_alloc_table_ent (Hexa32, bs32(file_entry->unknown4)); table->entries[i++] = pirs_alloc_table_ent (Hexa32, bs32(file_entry->unknown5)); offset += sizeof (struct __pears_file_ent); } return pirs_alloc_object (Table, table);}