Hi,
I believe it does try to implement virtual ports for icmp packets as well just like we have ports in tcp and udp and pix maintains this information in port table.
Here is syslog message from two different source ports trying to send icmp to a destiantion port
%FWSM-6-305011: Built dynamic icmp translation from inside:17x.6x.227.146/14832 to outside:172.16.171.201/1025
%FWSM-6-305011: Built dynamic icmp translation from inside:17x.6x.8x.158/21692 to outside:172.16.171.201/1026
you can see it is implemeing ports for icmp sessions as well.
Thanks
Nadeem