I think this would be difficult to create as a single cross. I assume you are looking to have 124*256 individual bins. I would create an array of covergroup instances
covergroup cg(int idx1,idx2)
ab_idx: coverpoint (a == idx1 && b == idx2 || a == idx2 && b == idx1) {
bins match = {1};
}
c_idx: coverpoint c {
bins c_idx[] = {[0:123]};
}
cross_ab_c: cross ab_idx, c_idx;
endgroup
cg cg_h[256];
int dup= 0;
for(int i1=0;i1<16;i1++)
for(int i2=0;i2<16;i2++)
cg_h[dup++] = new(i1,i2);