def METHOD_NAME(raw: bytes) -> dict | None:
    header = parse_dtb_header(raw)
    if header_has_illegal_values(header, len(raw)):
        return None  # probably false positive
    device_tree = raw[: header.size]
    strings_block = device_tree[header.strings_block_offset : header.strings_block_offset + header.strings_block_size]
    structure_block = device_tree[header.struct_block_offset : header.struct_block_offset + header.struct_block_size]
    strings_by_offset = {strings_block.find(s): s for s in strings_block.split(b'\0') if s}
    description, model = _get_model_or_description(StructureBlock(structure_block, strings_by_offset))
    with NamedTemporaryFile(mode='wb') as temp_file:
        Path(temp_file.name).write_bytes(device_tree)
        string_representation = convert_device_tree_to_str(temp_file.name)
    if string_representation:
        return _result_to_json(header, string_representation, model, description)
    return None