for (i = wall_size, g = destination, src=source_index; i--; src++) {
    for (s = S_4, f = psi[*src]; s--; g++, f++) {
        for (c = 0; c < 3; c++) {
            /* + universal projector */
            g->f[0][c].re = ???(f->f[][c]);
            g->f[0][c].im = ???(f->f[][c]);
            g->f[1][c].re = ???(f->f[][c]);
            g->f[1][c].im = ???(f->f[][c]);
            /* - universal projector */
        }
    }
}

What is where:
   wall_size -- number of 4-points on the surface
   destination -- start of the send buffer
   source_index -- integer array of 5-address for s=0 of the wall sources
In the universal projector:
   VecFermion *f -- source of the projection
   VecHalf 

Check how vreal_mk1() and vreal_mk4() work. Maybe improved.


DO RECONSTURCTION CAREFULLY....