This is the reason people don't like writing in assembly:
PUNPCKLBW/PUNPCKLWD/PUNPCKLDQ - Unpack Low Packed Data
Description Unpacks and interleaves the low-order data elements (bytes, words, or doublewords) of the destination and source operands into the destination operand (see Figure 3-26). The destination operand must be an MMX register; the source operand may be either an MMX register or a memory location. When source data comes from an MMX register, the upper 32 bits of the register are ignored. When the source data comes from a memory, only 32-bits are accessed from memory.
Non-technical people: that PUNP...whatever jumble up there is supposed to be a name that programmers can remember. Yeah right.