I seem to explain badly.

The command USBIN doesn't write bytes to the buffer one after another.

I send 3 bytes and hope that all of them would be sent into the buffer (array of 3). But really after the first received byte the program writes something to the other 2 buffer bytes and begins receiving next byte. Then adds to it 2 its own etc...

One fact is clear: all those nowhere bytes are the same every time they are written. So I think there is some cause why those strange bytes appeared.