Because the Cg program does something completly different.
BTW, if you’re using Cg you can look at what the output assembly is with the stand alone compiler.
What the original code does is:
TEX tex0, fragment.texcoord[0], texture[1], 2D; // Lookup texunit 1 at TexCoord0.xy
SUB tex0.x, tex0.x, 0.01; // Subtract 0.01 from the resulting red value.
TEX tex1, fragment.texcoord[0], texture[0], 2D;// Lookup texunit 0 at TexCoord0.xy
MUL outColor, tex0, tex1; // Resulting color is either tex0 * tex1 colors
KIL tex0.x; // OR if tex0.red is < 0 don’t draw at all.
What you did wrong is to subtract 0.01 from the texcoord0.xyzw, you multiplied the texture coordinate0 by the first color and forgot the kill completely.