def METHOD_NAME(addr, length):
    end = addr + length
    field_list = list()
    subtable_num = 0
    base_len_DMARDeviceScope = ctypes.sizeof(DMARDeviceScope_factory(0))
    len_DMARDeviceScopePath = ctypes.sizeof(DMARDeviceScopePath)
    while addr < end:
        subtable_num += 1
        subtable = DMARDeviceScope_factory(0).from_address(addr)
        num_dev_scope_path = (subtable.length - base_len_DMARDeviceScope) // len_DMARDeviceScopePath
        cls = DMARDeviceScope_factory(num_dev_scope_path)
        addr += subtable.length
        field_list.append( ('subtable{}'.format(subtable_num), cls) )
    return field_list