Я вам ещё раз повторяю!
Вы пытаетесь считать пустой ByteArray.
Смотрим пошагово....
Описали переменную и дали ей новый ПУСТОЙ ByteArray.

Код AS3:
var addinfo:ByteArray = new ByteArray();
Ура - теперь у нас есть чистый, девственный экземпляр класса ByteArray.
Берём другой ByteArray (неважно - пустой он или нет) и пытаемся записать в него ровно 22 байта с нулевой позиции из addinfo (нашего наичистейшего массива байтов).

Код AS3:
co.readBytes(addinfo,0,22);
Теперь вопрос (та-да-да-да):
Откуда у нас добавятся байты????
Что-же будет в нашем co???
Могу объяснить совсем на пальцах.
Берём ведёрко с чем нибудь (а может и ни с чем), берём второе ведёрко (100% - пустое) и начинаем перекладывать из второго ведёрка в первое его содержимое. Что же будет в первом ведёрке, после того как мы завершим перекладывать содерижмое из второго???