+ left = (struct pvertex*)alloca(pimg_fb.height * sizeof *left);
+ right = (struct pvertex*)alloca(pimg_fb.height * sizeof *right);
+ memset(left, 0, pimg_fb.height * sizeof *left);
+ memset(right, 0, pimg_fb.height * sizeof *right);
+
+ for(i=0; i<nverts; i++) {
+ int next = NEXTIDX(i);
+ int32_t y0 = pv[i].y;
+ int32_t y1 = pv[next].y;
+
+ if((y0 >> 8) == (y1 >> 8)) {
+ if(y0 > y1) {
+ int idx = y0 >> 8;
+ left[idx].x = pv[i].x < pv[next].x ? pv[i].x : pv[next].x;
+ right[idx].x = pv[i].x < pv[next].x ? pv[next].x : pv[i].x;
+ }
+ } else {
+ scan_edge(pv + i, pv + next, y0 > y1 ? left : right);
+ }