def METHOD_NAME(
    self, METHOD_NAME: Callable[[], None], rom: NintendoDSRom, config: Pmd2Data
) -> None:
    if not self.is_applied(rom, config):
        if config.game_version == GAME_VERSION_EOS:
            if config.game_region == GAME_REGION_US:
                rank_table = FLOOR_RANKS_TABLE_US
                item_table = ITEM_AVAILABLE_TABLE_US
                forbid_table = FLOOR_FORBID_TABLE_US
            if config.game_region == GAME_REGION_EU:
                rank_table = FLOOR_RANKS_TABLE_EU
                item_table = ITEM_AVAILABLE_TABLE_EU
                forbid_table = FLOOR_FORBID_TABLE_EU
        header = bytearray(NB_ITEMS_TABLE * 4)
        rank_data = bytearray(0)
        forbid_data = bytearray(0)
        current_ptr = u32_checked(len(header))
        for i in range(NB_ITEMS_TABLE):
            start = read_u32(rom.arm9, rank_table + i * 4) - ARM9_START
            end = start + 1 + FLOORS_NB[i]
            if end % 4 != 0:
                end += 4 - (end % 4)
            rdata = rom.arm9[start:end]
            fdata = bytearray(len(rdata))
            x = forbid_table
            while rom.arm9[x] != 0x64:
                if rom.arm9[x] == i:
                    fdata[rom.arm9[x + 1]] = 1
                x += 2
            rom.arm9 = (
                rom.arm9[:start] + bytes([0xCC] * (end - start)) + rom.arm9[end:]
            )
            write_u32(header, current_ptr, i * 4)
            rank_data += bytearray(rdata)
            forbid_data += bytearray(fdata)
            current_ptr += end - start  # type: ignore
        file_data = header + rank_data
        if FLOOR_RANKS_PATH not in rom.filenames:
            create_file_in_rom(rom, FLOOR_RANKS_PATH, file_data)
        else:
            rom.setFileByName(FLOOR_RANKS_PATH, file_data)
        file_data = header + forbid_data
        if FLOOR_FORBID_PATH not in rom.filenames:
            create_file_in_rom(rom, FLOOR_FORBID_PATH, file_data)
        else:
            rom.setFileByName(FLOOR_FORBID_PATH, file_data)
        dungeon_list = HardcodedDungeons.get_dungeon_list(rom.arm9, config)
        groups = [d.mappa_index for d in dungeon_list]
        print(hex(len(groups)))
        list_available = []
        for x in range(AVAILABLE_ITEMS_NB):
            list_available.append(bytearray(0x100 // 8))
            for i, g in enumerate(groups):
                off = item_table + g * (AVAILABLE_ITEMS_NB // 8) + (x // 8)
                if rom.arm9[off] & (1 << (x % 8)):
                    list_available[-1][i // 8] |= 1 << (i % 8)
        file_data = bytearray().join(list_available)
        if AVAILABLE_ITEMS_PATH not in rom.filenames:
            create_file_in_rom(rom, AVAILABLE_ITEMS_PATH, file_data)
        else:
            rom.setFileByName(AVAILABLE_ITEMS_PATH, file_data)
    try:
        METHOD_NAME()
    except RuntimeError as ex:
        raise ex