var foo = function (C, A) {
    for(var B in (A||{})) {
        C[B]=A[B];
    }
    return C;
}

var protos = [];
for (var i = 0; i < 256; i++) {
    var proto = Object.create(null);
    protos.push(proto);
    proto.aa = 1;
    proto.ab = 1;
    proto.ac = 1;
    proto.ad = 1;
    proto.ae = 1;
    proto.af = 1;
    proto.ag = 1;
    proto.ah = 1;
    proto.ai = 1;
    proto.aj = 1;
    proto.ak = 1;
    proto.al = 1;
    proto.am = 1;
    proto.an = 1;
    proto.ao = 1;
    proto.ap = 1;
    proto.aq = 1;
    proto.ar = 1;
    proto.as = 1;
    proto.at = 1;
    proto.au = 1;
    proto.av = 1;
    proto.aw = 1;
    proto.ax = 1;
    proto.ay = 1;
    proto.az = 1;
    proto.ba = 1;
    proto.bb = 1;
    proto.bc = 1;
    proto.bd = 1;
    proto.be = 1;
    proto.bf = 1;
    var weirdObject = Object.create(proto);
    var result = foo({}, weirdObject);
    for (var p in result) {
        if (result[p] !== result["" + p])
            throw new Error("OUT");
    }
}
