def process_file(
        filepath: str, padding_char: int = 256, maxlen: int = 2**20
    ) -> tuple[np.ndarray, int]:  # pragma: no cover
        """
        Go from raw file to numpy array.

        :param filepath: Path to the file we convert to a numpy array
        :param padding_char: The char to use to pad the input if it is shorter than maxlen
        :param maxlen: Maximum size of the file processed by the model. Currently set to 1MB
        :return data: A numpy array of the PE file
        :return size_of_original_file: Size of the PE file
        """
        with open(filepath, "rb") as file:
            open_file = file.read()
        size_of_original_file = len(open_file)

        data = np.ones((maxlen,), dtype=np.uint16) * padding_char
        selected_bytes = np.frombuffer(open_file[:maxlen], dtype=np.uint8)
        data[: len(selected_bytes)] = selected_bytes

        return data, size_of_original_file

        Go from raw file to numpy array.

        :param filepath: Path to the file we convert to a numpy array
        :param padding_char: The char to use to pad the input if it is shorter than maxlen
        :param maxlen: Maximum size of the file processed by the model. Currently set to 1MB
        :return data: A numpy array of the PE file
        :return size_of_original_file: Size of the PE file
        
art/attacks/evasion/pe_malware_attack.py