yes, the problem gets caused by invalid swizzling!

try to replace

lrp r0.rgb,t3.b,r0,t2 // blend the result with t2 depending on t3 blue
+mov r0.a,c0

with:

mov r1.a,t3.b
lrp r0.rgb,r1.a,r0,t2 // blend the result with t2 depending on t3 blue
+mov r0.a,c0

Quote:

The .b replicate functionality is available in ps.1.1 - ps.1.3 since the release of DirectX 8.1, but this swizzle is only valid together with an alpha write mask in the destination register of an instruction [...]




http://www.shaderx.com/direct3d.net/tutorials/shader/shader3.html -> swizzling/using selectors