That's why they invented HLSL shaders ^^
Well I can only ask what your mul instruction is supposed to do because what I can recall from the average asm register is that mul is defined like this:
Code:
mul r0,r0,r1
But that offcourse depends from which you use as a parameter. Is the first parameter a row or a column vector and visa versa with the second one. But it also seems you use an older syntax of assembly shader then I'm used too so maybe you could ask it or wait untill some user how are really familiar with this give their vision

Cheers
Frazzle