int get_prop(int obj, int id)
    {
        int cla = 0;
        int [] call_args = new int[2];

        if ((id & 0xFFFF0000) != 0) {
            cla = z.memory.getInt(z.classes_table + ((id & 0xFFFF) * 4));
            call_args[0] = obj;
            call_args[1] = cla;

            if (oc_cl(2, call_args) == 0)
                return 0;

            id >>>= 16;
            obj = cla;
        }

        call_args[0] = obj;
        call_args[1] = id;
        int prop = cptab(2, call_args);
        if (prop == 0)
            return 0;

        if (obj_in_class(obj) && (cla == 0)) {
            if ((id < z.indiv_prop_start) || (id >= z.indiv_prop_start+8))
                return 0;
        }

        if (z.memory.getInt(z.self) != obj) {
            if ((z.memory.get(prop + 9) & 1) != 0)
                return 0;
        }
        return prop;
    }