robot36/app/src/main/rs/blur_generated.rsh

1406 lines
38 KiB
Text

/* code generated by 'utils/blur.c' */
static uchar value_blur(int pixel, int begin, int end)
{
int p = (pixel * (end - begin) + (end - begin) / 2) / bitmap_width + begin;
int i = p & buffer_mask;
int weight_sum = 0;
int value_sum = 0;
switch (blur_power) {
case 0:
if ((p-1) < begin || end <= (p+1) || (i-1) < 0 || buffer_length <= (i+1)) {
if (begin <= (p-1)) {
weight_sum += 217;
value_sum += 217 * value_buffer[(i-1)&buffer_mask];
}
if ((p+0) < end) {
weight_sum += 19608;
value_sum += 19608 * value_buffer[(i+0)&buffer_mask];
}
if ((p+1) < end) {
weight_sum += 217;
value_sum += 217 * value_buffer[(i+1)&buffer_mask];
}
return value_sum / weight_sum;
}
return (178 * value_buffer[i-1] +
16027 * value_buffer[i+0] +
178 * value_buffer[i+1]) >> 14;
case 1:
if ((p-3) < begin || end <= (p+3) || (i-3) < 0 || buffer_length <= (i+3)) {
if (begin <= (p-3)) {
weight_sum += 72;
value_sum += 72 * value_buffer[(i-3)&buffer_mask];
}
if (begin <= (p-2)) {
weight_sum += 884;
value_sum += 884 * value_buffer[(i-2)&buffer_mask];
}
if (begin <= (p-1)) {
weight_sum += 3964;
value_sum += 3964 * value_buffer[(i-1)&buffer_mask];
}
if ((p+0) < end) {
weight_sum += 6536;
value_sum += 6536 * value_buffer[(i+0)&buffer_mask];
}
if ((p+1) < end) {
weight_sum += 3964;
value_sum += 3964 * value_buffer[(i+1)&buffer_mask];
}
if ((p+2) < end) {
weight_sum += 884;
value_sum += 884 * value_buffer[(i+2)&buffer_mask];
}
if ((p+3) < end) {
weight_sum += 72;
value_sum += 72 * value_buffer[(i+3)&buffer_mask];
}
return value_sum / weight_sum;
}
return (72 * value_buffer[i-3] +
884 * value_buffer[i-2] +
3966 * value_buffer[i-1] +
6539 * value_buffer[i+0] +
3966 * value_buffer[i+1] +
884 * value_buffer[i+2] +
72 * value_buffer[i+3]) >> 14;
case 2:
if ((p-5) < begin || end <= (p+5) || (i-5) < 0 || buffer_length <= (i+5)) {
if (begin <= (p-5)) {
weight_sum += 43;
value_sum += 43 * value_buffer[(i-5)&buffer_mask];
}
if (begin <= (p-4)) {
weight_sum += 220;
value_sum += 220 * value_buffer[(i-4)&buffer_mask];
}
if (begin <= (p-3)) {
weight_sum += 776;
value_sum += 776 * value_buffer[(i-3)&buffer_mask];
}
if (begin <= (p-2)) {
weight_sum += 1908;
value_sum += 1908 * value_buffer[(i-2)&buffer_mask];
}
if (begin <= (p-1)) {
weight_sum += 3275;
value_sum += 3275 * value_buffer[(i-1)&buffer_mask];
}
if ((p+0) < end) {
weight_sum += 3921;
value_sum += 3921 * value_buffer[(i+0)&buffer_mask];
}
if ((p+1) < end) {
weight_sum += 3275;
value_sum += 3275 * value_buffer[(i+1)&buffer_mask];
}
if ((p+2) < end) {
weight_sum += 1908;
value_sum += 1908 * value_buffer[(i+2)&buffer_mask];
}
if ((p+3) < end) {
weight_sum += 776;
value_sum += 776 * value_buffer[(i+3)&buffer_mask];
}
if ((p+4) < end) {
weight_sum += 220;
value_sum += 220 * value_buffer[(i+4)&buffer_mask];
}
if ((p+5) < end) {
weight_sum += 43;
value_sum += 43 * value_buffer[(i+5)&buffer_mask];
}
return value_sum / weight_sum;
}
return (43 * value_buffer[i-5] +
220 * value_buffer[i-4] +
776 * value_buffer[i-3] +
1911 * value_buffer[i-2] +
3279 * value_buffer[i-1] +
3926 * value_buffer[i+0] +
3279 * value_buffer[i+1] +
1911 * value_buffer[i+2] +
776 * value_buffer[i+3] +
220 * value_buffer[i+4] +
43 * value_buffer[i+5]) >> 14;
case 3:
if ((p-9) < begin || end <= (p+9) || (i-9) < 0 || buffer_length <= (i+9)) {
if (begin <= (p-9)) {
weight_sum += 24;
value_sum += 24 * value_buffer[(i-9)&buffer_mask];
}
if (begin <= (p-8)) {
weight_sum += 62;
value_sum += 62 * value_buffer[(i-8)&buffer_mask];
}
if (begin <= (p-7)) {
weight_sum += 143;
value_sum += 143 * value_buffer[(i-7)&buffer_mask];
}
if (begin <= (p-6)) {
weight_sum += 294;
value_sum += 294 * value_buffer[(i-6)&buffer_mask];
}
if (begin <= (p-5)) {
weight_sum += 543;
value_sum += 543 * value_buffer[(i-5)&buffer_mask];
}
if (begin <= (p-4)) {
weight_sum += 895;
value_sum += 895 * value_buffer[(i-4)&buffer_mask];
}
if (begin <= (p-3)) {
weight_sum += 1321;
value_sum += 1321 * value_buffer[(i-3)&buffer_mask];
}
if (begin <= (p-2)) {
weight_sum += 1744;
value_sum += 1744 * value_buffer[(i-2)&buffer_mask];
}
if (begin <= (p-1)) {
weight_sum += 2061;
value_sum += 2061 * value_buffer[(i-1)&buffer_mask];
}
if ((p+0) < end) {
weight_sum += 2178;
value_sum += 2178 * value_buffer[(i+0)&buffer_mask];
}
if ((p+1) < end) {
weight_sum += 2061;
value_sum += 2061 * value_buffer[(i+1)&buffer_mask];
}
if ((p+2) < end) {
weight_sum += 1744;
value_sum += 1744 * value_buffer[(i+2)&buffer_mask];
}
if ((p+3) < end) {
weight_sum += 1321;
value_sum += 1321 * value_buffer[(i+3)&buffer_mask];
}
if ((p+4) < end) {
weight_sum += 895;
value_sum += 895 * value_buffer[(i+4)&buffer_mask];
}
if ((p+5) < end) {
weight_sum += 543;
value_sum += 543 * value_buffer[(i+5)&buffer_mask];
}
if ((p+6) < end) {
weight_sum += 294;
value_sum += 294 * value_buffer[(i+6)&buffer_mask];
}
if ((p+7) < end) {
weight_sum += 143;
value_sum += 143 * value_buffer[(i+7)&buffer_mask];
}
if ((p+8) < end) {
weight_sum += 62;
value_sum += 62 * value_buffer[(i+8)&buffer_mask];
}
if ((p+9) < end) {
weight_sum += 24;
value_sum += 24 * value_buffer[(i+9)&buffer_mask];
}
return value_sum / weight_sum;
}
return (24 * value_buffer[i-9] +
62 * value_buffer[i-8] +
143 * value_buffer[i-7] +
295 * value_buffer[i-6] +
544 * value_buffer[i-5] +
897 * value_buffer[i-4] +
1323 * value_buffer[i-3] +
1747 * value_buffer[i-2] +
2064 * value_buffer[i-1] +
2182 * value_buffer[i+0] +
2064 * value_buffer[i+1] +
1747 * value_buffer[i+2] +
1323 * value_buffer[i+3] +
897 * value_buffer[i+4] +
544 * value_buffer[i+5] +
295 * value_buffer[i+6] +
143 * value_buffer[i+7] +
62 * value_buffer[i+8] +
24 * value_buffer[i+9]) >> 14;
case 4:
if ((p-17) < begin || end <= (p+17) || (i-17) < 0 || buffer_length <= (i+17)) {
if (begin <= (p-17)) {
weight_sum += 12;
value_sum += 12 * value_buffer[(i-17)&buffer_mask];
}
if (begin <= (p-16)) {
weight_sum += 21;
value_sum += 21 * value_buffer[(i-16)&buffer_mask];
}
if (begin <= (p-15)) {
weight_sum += 34;
value_sum += 34 * value_buffer[(i-15)&buffer_mask];
}
if (begin <= (p-14)) {
weight_sum += 54;
value_sum += 54 * value_buffer[(i-14)&buffer_mask];
}
if (begin <= (p-13)) {
weight_sum += 83;
value_sum += 83 * value_buffer[(i-13)&buffer_mask];
}
if (begin <= (p-12)) {
weight_sum += 122;
value_sum += 122 * value_buffer[(i-12)&buffer_mask];
}
if (begin <= (p-11)) {
weight_sum += 175;
value_sum += 175 * value_buffer[(i-11)&buffer_mask];
}
if (begin <= (p-10)) {
weight_sum += 243;
value_sum += 243 * value_buffer[(i-10)&buffer_mask];
}
if (begin <= (p-9)) {
weight_sum += 326;
value_sum += 326 * value_buffer[(i-9)&buffer_mask];
}
if (begin <= (p-8)) {
weight_sum += 425;
value_sum += 425 * value_buffer[(i-8)&buffer_mask];
}
if (begin <= (p-7)) {
weight_sum += 537;
value_sum += 537 * value_buffer[(i-7)&buffer_mask];
}
if (begin <= (p-6)) {
weight_sum += 658;
value_sum += 658 * value_buffer[(i-6)&buffer_mask];
}
if (begin <= (p-5)) {
weight_sum += 781;
value_sum += 781 * value_buffer[(i-5)&buffer_mask];
}
if (begin <= (p-4)) {
weight_sum += 899;
value_sum += 899 * value_buffer[(i-4)&buffer_mask];
}
if (begin <= (p-3)) {
weight_sum += 1002;
value_sum += 1002 * value_buffer[(i-3)&buffer_mask];
}
if (begin <= (p-2)) {
weight_sum += 1083;
value_sum += 1083 * value_buffer[(i-2)&buffer_mask];
}
if (begin <= (p-1)) {
weight_sum += 1135;
value_sum += 1135 * value_buffer[(i-1)&buffer_mask];
}
if ((p+0) < end) {
weight_sum += 1153;
value_sum += 1153 * value_buffer[(i+0)&buffer_mask];
}
if ((p+1) < end) {
weight_sum += 1135;
value_sum += 1135 * value_buffer[(i+1)&buffer_mask];
}
if ((p+2) < end) {
weight_sum += 1083;
value_sum += 1083 * value_buffer[(i+2)&buffer_mask];
}
if ((p+3) < end) {
weight_sum += 1002;
value_sum += 1002 * value_buffer[(i+3)&buffer_mask];
}
if ((p+4) < end) {
weight_sum += 899;
value_sum += 899 * value_buffer[(i+4)&buffer_mask];
}
if ((p+5) < end) {
weight_sum += 781;
value_sum += 781 * value_buffer[(i+5)&buffer_mask];
}
if ((p+6) < end) {
weight_sum += 658;
value_sum += 658 * value_buffer[(i+6)&buffer_mask];
}
if ((p+7) < end) {
weight_sum += 537;
value_sum += 537 * value_buffer[(i+7)&buffer_mask];
}
if ((p+8) < end) {
weight_sum += 425;
value_sum += 425 * value_buffer[(i+8)&buffer_mask];
}
if ((p+9) < end) {
weight_sum += 326;
value_sum += 326 * value_buffer[(i+9)&buffer_mask];
}
if ((p+10) < end) {
weight_sum += 243;
value_sum += 243 * value_buffer[(i+10)&buffer_mask];
}
if ((p+11) < end) {
weight_sum += 175;
value_sum += 175 * value_buffer[(i+11)&buffer_mask];
}
if ((p+12) < end) {
weight_sum += 122;
value_sum += 122 * value_buffer[(i+12)&buffer_mask];
}
if ((p+13) < end) {
weight_sum += 83;
value_sum += 83 * value_buffer[(i+13)&buffer_mask];
}
if ((p+14) < end) {
weight_sum += 54;
value_sum += 54 * value_buffer[(i+14)&buffer_mask];
}
if ((p+15) < end) {
weight_sum += 34;
value_sum += 34 * value_buffer[(i+15)&buffer_mask];
}
if ((p+16) < end) {
weight_sum += 21;
value_sum += 21 * value_buffer[(i+16)&buffer_mask];
}
if ((p+17) < end) {
weight_sum += 12;
value_sum += 12 * value_buffer[(i+17)&buffer_mask];
}
return value_sum / weight_sum;
}
return (12 * value_buffer[i-17] +
21 * value_buffer[i-16] +
34 * value_buffer[i-15] +
54 * value_buffer[i-14] +
83 * value_buffer[i-13] +
122 * value_buffer[i-12] +
175 * value_buffer[i-11] +
243 * value_buffer[i-10] +
327 * value_buffer[i-9] +
427 * value_buffer[i-8] +
539 * value_buffer[i-7] +
660 * value_buffer[i-6] +
783 * value_buffer[i-5] +
901 * value_buffer[i-4] +
1005 * value_buffer[i-3] +
1087 * value_buffer[i-2] +
1139 * value_buffer[i-1] +
1156 * value_buffer[i+0] +
1139 * value_buffer[i+1] +
1087 * value_buffer[i+2] +
1005 * value_buffer[i+3] +
901 * value_buffer[i+4] +
783 * value_buffer[i+5] +
660 * value_buffer[i+6] +
539 * value_buffer[i+7] +
427 * value_buffer[i+8] +
327 * value_buffer[i+9] +
243 * value_buffer[i+10] +
175 * value_buffer[i+11] +
122 * value_buffer[i+12] +
83 * value_buffer[i+13] +
54 * value_buffer[i+14] +
34 * value_buffer[i+15] +
21 * value_buffer[i+16] +
12 * value_buffer[i+17]) >> 14;
case 5:
if ((p-33) < begin || end <= (p+33) || (i-33) < 0 || buffer_length <= (i+33)) {
if (begin <= (p-33)) {
weight_sum += 6;
value_sum += 6 * value_buffer[(i-33)&buffer_mask];
}
if (begin <= (p-32)) {
weight_sum += 8;
value_sum += 8 * value_buffer[(i-32)&buffer_mask];
}
if (begin <= (p-31)) {
weight_sum += 11;
value_sum += 11 * value_buffer[(i-31)&buffer_mask];
}
if (begin <= (p-30)) {
weight_sum += 14;
value_sum += 14 * value_buffer[(i-30)&buffer_mask];
}
if (begin <= (p-29)) {
weight_sum += 18;
value_sum += 18 * value_buffer[(i-29)&buffer_mask];
}
if (begin <= (p-28)) {
weight_sum += 23;
value_sum += 23 * value_buffer[(i-28)&buffer_mask];
}
if (begin <= (p-27)) {
weight_sum += 29;
value_sum += 29 * value_buffer[(i-27)&buffer_mask];
}
if (begin <= (p-26)) {
weight_sum += 36;
value_sum += 36 * value_buffer[(i-26)&buffer_mask];
}
if (begin <= (p-25)) {
weight_sum += 44;
value_sum += 44 * value_buffer[(i-25)&buffer_mask];
}
if (begin <= (p-24)) {
weight_sum += 54;
value_sum += 54 * value_buffer[(i-24)&buffer_mask];
}
if (begin <= (p-23)) {
weight_sum += 66;
value_sum += 66 * value_buffer[(i-23)&buffer_mask];
}
if (begin <= (p-22)) {
weight_sum += 80;
value_sum += 80 * value_buffer[(i-22)&buffer_mask];
}
if (begin <= (p-21)) {
weight_sum += 96;
value_sum += 96 * value_buffer[(i-21)&buffer_mask];
}
if (begin <= (p-20)) {
weight_sum += 113;
value_sum += 113 * value_buffer[(i-20)&buffer_mask];
}
if (begin <= (p-19)) {
weight_sum += 133;
value_sum += 133 * value_buffer[(i-19)&buffer_mask];
}
if (begin <= (p-18)) {
weight_sum += 155;
value_sum += 155 * value_buffer[(i-18)&buffer_mask];
}
if (begin <= (p-17)) {
weight_sum += 180;
value_sum += 180 * value_buffer[(i-17)&buffer_mask];
}
if (begin <= (p-16)) {
weight_sum += 206;
value_sum += 206 * value_buffer[(i-16)&buffer_mask];
}
if (begin <= (p-15)) {
weight_sum += 234;
value_sum += 234 * value_buffer[(i-15)&buffer_mask];
}
if (begin <= (p-14)) {
weight_sum += 264;
value_sum += 264 * value_buffer[(i-14)&buffer_mask];
}
if (begin <= (p-13)) {
weight_sum += 295;
value_sum += 295 * value_buffer[(i-13)&buffer_mask];
}
if (begin <= (p-12)) {
weight_sum += 327;
value_sum += 327 * value_buffer[(i-12)&buffer_mask];
}
if (begin <= (p-11)) {
weight_sum += 360;
value_sum += 360 * value_buffer[(i-11)&buffer_mask];
}
if (begin <= (p-10)) {
weight_sum += 393;
value_sum += 393 * value_buffer[(i-10)&buffer_mask];
}
if (begin <= (p-9)) {
weight_sum += 425;
value_sum += 425 * value_buffer[(i-9)&buffer_mask];
}
if (begin <= (p-8)) {
weight_sum += 456;
value_sum += 456 * value_buffer[(i-8)&buffer_mask];
}
if (begin <= (p-7)) {
weight_sum += 485;
value_sum += 485 * value_buffer[(i-7)&buffer_mask];
}
if (begin <= (p-6)) {
weight_sum += 512;
value_sum += 512 * value_buffer[(i-6)&buffer_mask];
}
if (begin <= (p-5)) {
weight_sum += 535;
value_sum += 535 * value_buffer[(i-5)&buffer_mask];
}
if (begin <= (p-4)) {
weight_sum += 556;
value_sum += 556 * value_buffer[(i-4)&buffer_mask];
}
if (begin <= (p-3)) {
weight_sum += 572;
value_sum += 572 * value_buffer[(i-3)&buffer_mask];
}
if (begin <= (p-2)) {
weight_sum += 584;
value_sum += 584 * value_buffer[(i-2)&buffer_mask];
}
if (begin <= (p-1)) {
weight_sum += 591;
value_sum += 591 * value_buffer[(i-1)&buffer_mask];
}
if ((p+0) < end) {
weight_sum += 594;
value_sum += 594 * value_buffer[(i+0)&buffer_mask];
}
if ((p+1) < end) {
weight_sum += 591;
value_sum += 591 * value_buffer[(i+1)&buffer_mask];
}
if ((p+2) < end) {
weight_sum += 584;
value_sum += 584 * value_buffer[(i+2)&buffer_mask];
}
if ((p+3) < end) {
weight_sum += 572;
value_sum += 572 * value_buffer[(i+3)&buffer_mask];
}
if ((p+4) < end) {
weight_sum += 556;
value_sum += 556 * value_buffer[(i+4)&buffer_mask];
}
if ((p+5) < end) {
weight_sum += 535;
value_sum += 535 * value_buffer[(i+5)&buffer_mask];
}
if ((p+6) < end) {
weight_sum += 512;
value_sum += 512 * value_buffer[(i+6)&buffer_mask];
}
if ((p+7) < end) {
weight_sum += 485;
value_sum += 485 * value_buffer[(i+7)&buffer_mask];
}
if ((p+8) < end) {
weight_sum += 456;
value_sum += 456 * value_buffer[(i+8)&buffer_mask];
}
if ((p+9) < end) {
weight_sum += 425;
value_sum += 425 * value_buffer[(i+9)&buffer_mask];
}
if ((p+10) < end) {
weight_sum += 393;
value_sum += 393 * value_buffer[(i+10)&buffer_mask];
}
if ((p+11) < end) {
weight_sum += 360;
value_sum += 360 * value_buffer[(i+11)&buffer_mask];
}
if ((p+12) < end) {
weight_sum += 327;
value_sum += 327 * value_buffer[(i+12)&buffer_mask];
}
if ((p+13) < end) {
weight_sum += 295;
value_sum += 295 * value_buffer[(i+13)&buffer_mask];
}
if ((p+14) < end) {
weight_sum += 264;
value_sum += 264 * value_buffer[(i+14)&buffer_mask];
}
if ((p+15) < end) {
weight_sum += 234;
value_sum += 234 * value_buffer[(i+15)&buffer_mask];
}
if ((p+16) < end) {
weight_sum += 206;
value_sum += 206 * value_buffer[(i+16)&buffer_mask];
}
if ((p+17) < end) {
weight_sum += 180;
value_sum += 180 * value_buffer[(i+17)&buffer_mask];
}
if ((p+18) < end) {
weight_sum += 155;
value_sum += 155 * value_buffer[(i+18)&buffer_mask];
}
if ((p+19) < end) {
weight_sum += 133;
value_sum += 133 * value_buffer[(i+19)&buffer_mask];
}
if ((p+20) < end) {
weight_sum += 113;
value_sum += 113 * value_buffer[(i+20)&buffer_mask];
}
if ((p+21) < end) {
weight_sum += 96;
value_sum += 96 * value_buffer[(i+21)&buffer_mask];
}
if ((p+22) < end) {
weight_sum += 80;
value_sum += 80 * value_buffer[(i+22)&buffer_mask];
}
if ((p+23) < end) {
weight_sum += 66;
value_sum += 66 * value_buffer[(i+23)&buffer_mask];
}
if ((p+24) < end) {
weight_sum += 54;
value_sum += 54 * value_buffer[(i+24)&buffer_mask];
}
if ((p+25) < end) {
weight_sum += 44;
value_sum += 44 * value_buffer[(i+25)&buffer_mask];
}
if ((p+26) < end) {
weight_sum += 36;
value_sum += 36 * value_buffer[(i+26)&buffer_mask];
}
if ((p+27) < end) {
weight_sum += 29;
value_sum += 29 * value_buffer[(i+27)&buffer_mask];
}
if ((p+28) < end) {
weight_sum += 23;
value_sum += 23 * value_buffer[(i+28)&buffer_mask];
}
if ((p+29) < end) {
weight_sum += 18;
value_sum += 18 * value_buffer[(i+29)&buffer_mask];
}
if ((p+30) < end) {
weight_sum += 14;
value_sum += 14 * value_buffer[(i+30)&buffer_mask];
}
if ((p+31) < end) {
weight_sum += 11;
value_sum += 11 * value_buffer[(i+31)&buffer_mask];
}
if ((p+32) < end) {
weight_sum += 8;
value_sum += 8 * value_buffer[(i+32)&buffer_mask];
}
if ((p+33) < end) {
weight_sum += 6;
value_sum += 6 * value_buffer[(i+33)&buffer_mask];
}
return value_sum / weight_sum;
}
return (6 * value_buffer[i-33] +
8 * value_buffer[i-32] +
11 * value_buffer[i-31] +
14 * value_buffer[i-30] +
18 * value_buffer[i-29] +
23 * value_buffer[i-28] +
29 * value_buffer[i-27] +
36 * value_buffer[i-26] +
45 * value_buffer[i-25] +
55 * value_buffer[i-24] +
67 * value_buffer[i-23] +
80 * value_buffer[i-22] +
96 * value_buffer[i-21] +
114 * value_buffer[i-20] +
134 * value_buffer[i-19] +
156 * value_buffer[i-18] +
180 * value_buffer[i-17] +
207 * value_buffer[i-16] +
235 * value_buffer[i-15] +
265 * value_buffer[i-14] +
296 * value_buffer[i-13] +
329 * value_buffer[i-12] +
361 * value_buffer[i-11] +
394 * value_buffer[i-10] +
426 * value_buffer[i-9] +
457 * value_buffer[i-8] +
487 * value_buffer[i-7] +
514 * value_buffer[i-6] +
538 * value_buffer[i-5] +
558 * value_buffer[i-4] +
574 * value_buffer[i-3] +
586 * value_buffer[i-2] +
594 * value_buffer[i-1] +
596 * value_buffer[i+0] +
594 * value_buffer[i+1] +
586 * value_buffer[i+2] +
574 * value_buffer[i+3] +
558 * value_buffer[i+4] +
538 * value_buffer[i+5] +
514 * value_buffer[i+6] +
487 * value_buffer[i+7] +
457 * value_buffer[i+8] +
426 * value_buffer[i+9] +
394 * value_buffer[i+10] +
361 * value_buffer[i+11] +
329 * value_buffer[i+12] +
296 * value_buffer[i+13] +
265 * value_buffer[i+14] +
235 * value_buffer[i+15] +
207 * value_buffer[i+16] +
180 * value_buffer[i+17] +
156 * value_buffer[i+18] +
134 * value_buffer[i+19] +
114 * value_buffer[i+20] +
96 * value_buffer[i+21] +
80 * value_buffer[i+22] +
67 * value_buffer[i+23] +
55 * value_buffer[i+24] +
45 * value_buffer[i+25] +
36 * value_buffer[i+26] +
29 * value_buffer[i+27] +
23 * value_buffer[i+28] +
18 * value_buffer[i+29] +
14 * value_buffer[i+30] +
11 * value_buffer[i+31] +
8 * value_buffer[i+32] +
6 * value_buffer[i+33]) >> 14;
case 6:
if ((p-65) < begin || end <= (p+65) || (i-65) < 0 || buffer_length <= (i+65)) {
if (begin <= (p-65)) {
weight_sum += 3;
value_sum += 3 * value_buffer[(i-65)&buffer_mask];
}
if (begin <= (p-64)) {
weight_sum += 3;
value_sum += 3 * value_buffer[(i-64)&buffer_mask];
}
if (begin <= (p-63)) {
weight_sum += 4;
value_sum += 4 * value_buffer[(i-63)&buffer_mask];
}
if (begin <= (p-62)) {
weight_sum += 5;
value_sum += 5 * value_buffer[(i-62)&buffer_mask];
}
if (begin <= (p-61)) {
weight_sum += 5;
value_sum += 5 * value_buffer[(i-61)&buffer_mask];
}
if (begin <= (p-60)) {
weight_sum += 6;
value_sum += 6 * value_buffer[(i-60)&buffer_mask];
}
if (begin <= (p-59)) {
weight_sum += 7;
value_sum += 7 * value_buffer[(i-59)&buffer_mask];
}
if (begin <= (p-58)) {
weight_sum += 8;
value_sum += 8 * value_buffer[(i-58)&buffer_mask];
}
if (begin <= (p-57)) {
weight_sum += 9;
value_sum += 9 * value_buffer[(i-57)&buffer_mask];
}
if (begin <= (p-56)) {
weight_sum += 10;
value_sum += 10 * value_buffer[(i-56)&buffer_mask];
}
if (begin <= (p-55)) {
weight_sum += 12;
value_sum += 12 * value_buffer[(i-55)&buffer_mask];
}
if (begin <= (p-54)) {
weight_sum += 13;
value_sum += 13 * value_buffer[(i-54)&buffer_mask];
}
if (begin <= (p-53)) {
weight_sum += 15;
value_sum += 15 * value_buffer[(i-53)&buffer_mask];
}
if (begin <= (p-52)) {
weight_sum += 16;
value_sum += 16 * value_buffer[(i-52)&buffer_mask];
}
if (begin <= (p-51)) {
weight_sum += 18;
value_sum += 18 * value_buffer[(i-51)&buffer_mask];
}
if (begin <= (p-50)) {
weight_sum += 21;
value_sum += 21 * value_buffer[(i-50)&buffer_mask];
}
if (begin <= (p-49)) {
weight_sum += 23;
value_sum += 23 * value_buffer[(i-49)&buffer_mask];
}
if (begin <= (p-48)) {
weight_sum += 25;
value_sum += 25 * value_buffer[(i-48)&buffer_mask];
}
if (begin <= (p-47)) {
weight_sum += 28;
value_sum += 28 * value_buffer[(i-47)&buffer_mask];
}
if (begin <= (p-46)) {
weight_sum += 31;
value_sum += 31 * value_buffer[(i-46)&buffer_mask];
}
if (begin <= (p-45)) {
weight_sum += 34;
value_sum += 34 * value_buffer[(i-45)&buffer_mask];
}
if (begin <= (p-44)) {
weight_sum += 38;
value_sum += 38 * value_buffer[(i-44)&buffer_mask];
}
if (begin <= (p-43)) {
weight_sum += 42;
value_sum += 42 * value_buffer[(i-43)&buffer_mask];
}
if (begin <= (p-42)) {
weight_sum += 46;
value_sum += 46 * value_buffer[(i-42)&buffer_mask];
}
if (begin <= (p-41)) {
weight_sum += 50;
value_sum += 50 * value_buffer[(i-41)&buffer_mask];
}
if (begin <= (p-40)) {
weight_sum += 54;
value_sum += 54 * value_buffer[(i-40)&buffer_mask];
}
if (begin <= (p-39)) {
weight_sum += 59;
value_sum += 59 * value_buffer[(i-39)&buffer_mask];
}
if (begin <= (p-38)) {
weight_sum += 64;
value_sum += 64 * value_buffer[(i-38)&buffer_mask];
}
if (begin <= (p-37)) {
weight_sum += 70;
value_sum += 70 * value_buffer[(i-37)&buffer_mask];
}
if (begin <= (p-36)) {
weight_sum += 75;
value_sum += 75 * value_buffer[(i-36)&buffer_mask];
}
if (begin <= (p-35)) {
weight_sum += 81;
value_sum += 81 * value_buffer[(i-35)&buffer_mask];
}
if (begin <= (p-34)) {
weight_sum += 88;
value_sum += 88 * value_buffer[(i-34)&buffer_mask];
}
if (begin <= (p-33)) {
weight_sum += 94;
value_sum += 94 * value_buffer[(i-33)&buffer_mask];
}
if (begin <= (p-32)) {
weight_sum += 101;
value_sum += 101 * value_buffer[(i-32)&buffer_mask];
}
if (begin <= (p-31)) {
weight_sum += 108;
value_sum += 108 * value_buffer[(i-31)&buffer_mask];
}
if (begin <= (p-30)) {
weight_sum += 115;
value_sum += 115 * value_buffer[(i-30)&buffer_mask];
}
if (begin <= (p-29)) {
weight_sum += 123;
value_sum += 123 * value_buffer[(i-29)&buffer_mask];
}
if (begin <= (p-28)) {
weight_sum += 130;
value_sum += 130 * value_buffer[(i-28)&buffer_mask];
}
if (begin <= (p-27)) {
weight_sum += 138;
value_sum += 138 * value_buffer[(i-27)&buffer_mask];
}
if (begin <= (p-26)) {
weight_sum += 146;
value_sum += 146 * value_buffer[(i-26)&buffer_mask];
}
if (begin <= (p-25)) {
weight_sum += 155;
value_sum += 155 * value_buffer[(i-25)&buffer_mask];
}
if (begin <= (p-24)) {
weight_sum += 163;
value_sum += 163 * value_buffer[(i-24)&buffer_mask];
}
if (begin <= (p-23)) {
weight_sum += 171;
value_sum += 171 * value_buffer[(i-23)&buffer_mask];
}
if (begin <= (p-22)) {
weight_sum += 180;
value_sum += 180 * value_buffer[(i-22)&buffer_mask];
}
if (begin <= (p-21)) {
weight_sum += 188;
value_sum += 188 * value_buffer[(i-21)&buffer_mask];
}
if (begin <= (p-20)) {
weight_sum += 197;
value_sum += 197 * value_buffer[(i-20)&buffer_mask];
}
if (begin <= (p-19)) {
weight_sum += 205;
value_sum += 205 * value_buffer[(i-19)&buffer_mask];
}
if (begin <= (p-18)) {
weight_sum += 213;
value_sum += 213 * value_buffer[(i-18)&buffer_mask];
}
if (begin <= (p-17)) {
weight_sum += 221;
value_sum += 221 * value_buffer[(i-17)&buffer_mask];
}
if (begin <= (p-16)) {
weight_sum += 229;
value_sum += 229 * value_buffer[(i-16)&buffer_mask];
}
if (begin <= (p-15)) {
weight_sum += 237;
value_sum += 237 * value_buffer[(i-15)&buffer_mask];
}
if (begin <= (p-14)) {
weight_sum += 244;
value_sum += 244 * value_buffer[(i-14)&buffer_mask];
}
if (begin <= (p-13)) {
weight_sum += 251;
value_sum += 251 * value_buffer[(i-13)&buffer_mask];
}
if (begin <= (p-12)) {
weight_sum += 258;
value_sum += 258 * value_buffer[(i-12)&buffer_mask];
}
if (begin <= (p-11)) {
weight_sum += 265;
value_sum += 265 * value_buffer[(i-11)&buffer_mask];
}
if (begin <= (p-10)) {
weight_sum += 271;
value_sum += 271 * value_buffer[(i-10)&buffer_mask];
}
if (begin <= (p-9)) {
weight_sum += 276;
value_sum += 276 * value_buffer[(i-9)&buffer_mask];
}
if (begin <= (p-8)) {
weight_sum += 281;
value_sum += 281 * value_buffer[(i-8)&buffer_mask];
}
if (begin <= (p-7)) {
weight_sum += 286;
value_sum += 286 * value_buffer[(i-7)&buffer_mask];
}
if (begin <= (p-6)) {
weight_sum += 290;
value_sum += 290 * value_buffer[(i-6)&buffer_mask];
}
if (begin <= (p-5)) {
weight_sum += 293;
value_sum += 293 * value_buffer[(i-5)&buffer_mask];
}
if (begin <= (p-4)) {
weight_sum += 296;
value_sum += 296 * value_buffer[(i-4)&buffer_mask];
}
if (begin <= (p-3)) {
weight_sum += 298;
value_sum += 298 * value_buffer[(i-3)&buffer_mask];
}
if (begin <= (p-2)) {
weight_sum += 300;
value_sum += 300 * value_buffer[(i-2)&buffer_mask];
}
if (begin <= (p-1)) {
weight_sum += 301;
value_sum += 301 * value_buffer[(i-1)&buffer_mask];
}
if ((p+0) < end) {
weight_sum += 301;
value_sum += 301 * value_buffer[(i+0)&buffer_mask];
}
if ((p+1) < end) {
weight_sum += 301;
value_sum += 301 * value_buffer[(i+1)&buffer_mask];
}
if ((p+2) < end) {
weight_sum += 300;
value_sum += 300 * value_buffer[(i+2)&buffer_mask];
}
if ((p+3) < end) {
weight_sum += 298;
value_sum += 298 * value_buffer[(i+3)&buffer_mask];
}
if ((p+4) < end) {
weight_sum += 296;
value_sum += 296 * value_buffer[(i+4)&buffer_mask];
}
if ((p+5) < end) {
weight_sum += 293;
value_sum += 293 * value_buffer[(i+5)&buffer_mask];
}
if ((p+6) < end) {
weight_sum += 290;
value_sum += 290 * value_buffer[(i+6)&buffer_mask];
}
if ((p+7) < end) {
weight_sum += 286;
value_sum += 286 * value_buffer[(i+7)&buffer_mask];
}
if ((p+8) < end) {
weight_sum += 281;
value_sum += 281 * value_buffer[(i+8)&buffer_mask];
}
if ((p+9) < end) {
weight_sum += 276;
value_sum += 276 * value_buffer[(i+9)&buffer_mask];
}
if ((p+10) < end) {
weight_sum += 271;
value_sum += 271 * value_buffer[(i+10)&buffer_mask];
}
if ((p+11) < end) {
weight_sum += 265;
value_sum += 265 * value_buffer[(i+11)&buffer_mask];
}
if ((p+12) < end) {
weight_sum += 258;
value_sum += 258 * value_buffer[(i+12)&buffer_mask];
}
if ((p+13) < end) {
weight_sum += 251;
value_sum += 251 * value_buffer[(i+13)&buffer_mask];
}
if ((p+14) < end) {
weight_sum += 244;
value_sum += 244 * value_buffer[(i+14)&buffer_mask];
}
if ((p+15) < end) {
weight_sum += 237;
value_sum += 237 * value_buffer[(i+15)&buffer_mask];
}
if ((p+16) < end) {
weight_sum += 229;
value_sum += 229 * value_buffer[(i+16)&buffer_mask];
}
if ((p+17) < end) {
weight_sum += 221;
value_sum += 221 * value_buffer[(i+17)&buffer_mask];
}
if ((p+18) < end) {
weight_sum += 213;
value_sum += 213 * value_buffer[(i+18)&buffer_mask];
}
if ((p+19) < end) {
weight_sum += 205;
value_sum += 205 * value_buffer[(i+19)&buffer_mask];
}
if ((p+20) < end) {
weight_sum += 197;
value_sum += 197 * value_buffer[(i+20)&buffer_mask];
}
if ((p+21) < end) {
weight_sum += 188;
value_sum += 188 * value_buffer[(i+21)&buffer_mask];
}
if ((p+22) < end) {
weight_sum += 180;
value_sum += 180 * value_buffer[(i+22)&buffer_mask];
}
if ((p+23) < end) {
weight_sum += 171;
value_sum += 171 * value_buffer[(i+23)&buffer_mask];
}
if ((p+24) < end) {
weight_sum += 163;
value_sum += 163 * value_buffer[(i+24)&buffer_mask];
}
if ((p+25) < end) {
weight_sum += 155;
value_sum += 155 * value_buffer[(i+25)&buffer_mask];
}
if ((p+26) < end) {
weight_sum += 146;
value_sum += 146 * value_buffer[(i+26)&buffer_mask];
}
if ((p+27) < end) {
weight_sum += 138;
value_sum += 138 * value_buffer[(i+27)&buffer_mask];
}
if ((p+28) < end) {
weight_sum += 130;
value_sum += 130 * value_buffer[(i+28)&buffer_mask];
}
if ((p+29) < end) {
weight_sum += 123;
value_sum += 123 * value_buffer[(i+29)&buffer_mask];
}
if ((p+30) < end) {
weight_sum += 115;
value_sum += 115 * value_buffer[(i+30)&buffer_mask];
}
if ((p+31) < end) {
weight_sum += 108;
value_sum += 108 * value_buffer[(i+31)&buffer_mask];
}
if ((p+32) < end) {
weight_sum += 101;
value_sum += 101 * value_buffer[(i+32)&buffer_mask];
}
if ((p+33) < end) {
weight_sum += 94;
value_sum += 94 * value_buffer[(i+33)&buffer_mask];
}
if ((p+34) < end) {
weight_sum += 88;
value_sum += 88 * value_buffer[(i+34)&buffer_mask];
}
if ((p+35) < end) {
weight_sum += 81;
value_sum += 81 * value_buffer[(i+35)&buffer_mask];
}
if ((p+36) < end) {
weight_sum += 75;
value_sum += 75 * value_buffer[(i+36)&buffer_mask];
}
if ((p+37) < end) {
weight_sum += 70;
value_sum += 70 * value_buffer[(i+37)&buffer_mask];
}
if ((p+38) < end) {
weight_sum += 64;
value_sum += 64 * value_buffer[(i+38)&buffer_mask];
}
if ((p+39) < end) {
weight_sum += 59;
value_sum += 59 * value_buffer[(i+39)&buffer_mask];
}
if ((p+40) < end) {
weight_sum += 54;
value_sum += 54 * value_buffer[(i+40)&buffer_mask];
}
if ((p+41) < end) {
weight_sum += 50;
value_sum += 50 * value_buffer[(i+41)&buffer_mask];
}
if ((p+42) < end) {
weight_sum += 46;
value_sum += 46 * value_buffer[(i+42)&buffer_mask];
}
if ((p+43) < end) {
weight_sum += 42;
value_sum += 42 * value_buffer[(i+43)&buffer_mask];
}
if ((p+44) < end) {
weight_sum += 38;
value_sum += 38 * value_buffer[(i+44)&buffer_mask];
}
if ((p+45) < end) {
weight_sum += 34;
value_sum += 34 * value_buffer[(i+45)&buffer_mask];
}
if ((p+46) < end) {
weight_sum += 31;
value_sum += 31 * value_buffer[(i+46)&buffer_mask];
}
if ((p+47) < end) {
weight_sum += 28;
value_sum += 28 * value_buffer[(i+47)&buffer_mask];
}
if ((p+48) < end) {
weight_sum += 25;
value_sum += 25 * value_buffer[(i+48)&buffer_mask];
}
if ((p+49) < end) {
weight_sum += 23;
value_sum += 23 * value_buffer[(i+49)&buffer_mask];
}
if ((p+50) < end) {
weight_sum += 21;
value_sum += 21 * value_buffer[(i+50)&buffer_mask];
}
if ((p+51) < end) {
weight_sum += 18;
value_sum += 18 * value_buffer[(i+51)&buffer_mask];
}
if ((p+52) < end) {
weight_sum += 16;
value_sum += 16 * value_buffer[(i+52)&buffer_mask];
}
if ((p+53) < end) {
weight_sum += 15;
value_sum += 15 * value_buffer[(i+53)&buffer_mask];
}
if ((p+54) < end) {
weight_sum += 13;
value_sum += 13 * value_buffer[(i+54)&buffer_mask];
}
if ((p+55) < end) {
weight_sum += 12;
value_sum += 12 * value_buffer[(i+55)&buffer_mask];
}
if ((p+56) < end) {
weight_sum += 10;
value_sum += 10 * value_buffer[(i+56)&buffer_mask];
}
if ((p+57) < end) {
weight_sum += 9;
value_sum += 9 * value_buffer[(i+57)&buffer_mask];
}
if ((p+58) < end) {
weight_sum += 8;
value_sum += 8 * value_buffer[(i+58)&buffer_mask];
}
if ((p+59) < end) {
weight_sum += 7;
value_sum += 7 * value_buffer[(i+59)&buffer_mask];
}
if ((p+60) < end) {
weight_sum += 6;
value_sum += 6 * value_buffer[(i+60)&buffer_mask];
}
if ((p+61) < end) {
weight_sum += 5;
value_sum += 5 * value_buffer[(i+61)&buffer_mask];
}
if ((p+62) < end) {
weight_sum += 5;
value_sum += 5 * value_buffer[(i+62)&buffer_mask];
}
if ((p+63) < end) {
weight_sum += 4;
value_sum += 4 * value_buffer[(i+63)&buffer_mask];
}
if ((p+64) < end) {
weight_sum += 3;
value_sum += 3 * value_buffer[(i+64)&buffer_mask];
}
if ((p+65) < end) {
weight_sum += 3;
value_sum += 3 * value_buffer[(i+65)&buffer_mask];
}
return value_sum / weight_sum;
}
return (3 * value_buffer[i-65] +
3 * value_buffer[i-64] +
4 * value_buffer[i-63] +
5 * value_buffer[i-62] +
5 * value_buffer[i-61] +
6 * value_buffer[i-60] +
7 * value_buffer[i-59] +
8 * value_buffer[i-58] +
9 * value_buffer[i-57] +
10 * value_buffer[i-56] +
12 * value_buffer[i-55] +
13 * value_buffer[i-54] +
15 * value_buffer[i-53] +
17 * value_buffer[i-52] +
19 * value_buffer[i-51] +
21 * value_buffer[i-50] +
23 * value_buffer[i-49] +
26 * value_buffer[i-48] +
28 * value_buffer[i-47] +
31 * value_buffer[i-46] +
35 * value_buffer[i-45] +
38 * value_buffer[i-44] +
42 * value_buffer[i-43] +
46 * value_buffer[i-42] +
50 * value_buffer[i-41] +
55 * value_buffer[i-40] +
60 * value_buffer[i-39] +
65 * value_buffer[i-38] +
70 * value_buffer[i-37] +
76 * value_buffer[i-36] +
82 * value_buffer[i-35] +
88 * value_buffer[i-34] +
95 * value_buffer[i-33] +
102 * value_buffer[i-32] +
109 * value_buffer[i-31] +
116 * value_buffer[i-30] +
123 * value_buffer[i-29] +
131 * value_buffer[i-28] +
139 * value_buffer[i-27] +
147 * value_buffer[i-26] +
156 * value_buffer[i-25] +
164 * value_buffer[i-24] +
172 * value_buffer[i-23] +
181 * value_buffer[i-22] +
189 * value_buffer[i-21] +
198 * value_buffer[i-20] +
206 * value_buffer[i-19] +
215 * value_buffer[i-18] +
223 * value_buffer[i-17] +
231 * value_buffer[i-16] +
238 * value_buffer[i-15] +
246 * value_buffer[i-14] +
253 * value_buffer[i-13] +
260 * value_buffer[i-12] +
266 * value_buffer[i-11] +
272 * value_buffer[i-10] +
278 * value_buffer[i-9] +
283 * value_buffer[i-8] +
288 * value_buffer[i-7] +
292 * value_buffer[i-6] +
295 * value_buffer[i-5] +
298 * value_buffer[i-4] +
300 * value_buffer[i-3] +
302 * value_buffer[i-2] +
303 * value_buffer[i-1] +
303 * value_buffer[i+0] +
303 * value_buffer[i+1] +
302 * value_buffer[i+2] +
300 * value_buffer[i+3] +
298 * value_buffer[i+4] +
295 * value_buffer[i+5] +
292 * value_buffer[i+6] +
288 * value_buffer[i+7] +
283 * value_buffer[i+8] +
278 * value_buffer[i+9] +
272 * value_buffer[i+10] +
266 * value_buffer[i+11] +
260 * value_buffer[i+12] +
253 * value_buffer[i+13] +
246 * value_buffer[i+14] +
238 * value_buffer[i+15] +
231 * value_buffer[i+16] +
223 * value_buffer[i+17] +
215 * value_buffer[i+18] +
206 * value_buffer[i+19] +
198 * value_buffer[i+20] +
189 * value_buffer[i+21] +
181 * value_buffer[i+22] +
172 * value_buffer[i+23] +
164 * value_buffer[i+24] +
156 * value_buffer[i+25] +
147 * value_buffer[i+26] +
139 * value_buffer[i+27] +
131 * value_buffer[i+28] +
123 * value_buffer[i+29] +
116 * value_buffer[i+30] +
109 * value_buffer[i+31] +
102 * value_buffer[i+32] +
95 * value_buffer[i+33] +
88 * value_buffer[i+34] +
82 * value_buffer[i+35] +
76 * value_buffer[i+36] +
70 * value_buffer[i+37] +
65 * value_buffer[i+38] +
60 * value_buffer[i+39] +
55 * value_buffer[i+40] +
50 * value_buffer[i+41] +
46 * value_buffer[i+42] +
42 * value_buffer[i+43] +
38 * value_buffer[i+44] +
35 * value_buffer[i+45] +
31 * value_buffer[i+46] +
28 * value_buffer[i+47] +
26 * value_buffer[i+48] +
23 * value_buffer[i+49] +
21 * value_buffer[i+50] +
19 * value_buffer[i+51] +
17 * value_buffer[i+52] +
15 * value_buffer[i+53] +
13 * value_buffer[i+54] +
12 * value_buffer[i+55] +
10 * value_buffer[i+56] +
9 * value_buffer[i+57] +
8 * value_buffer[i+58] +
7 * value_buffer[i+59] +
6 * value_buffer[i+60] +
5 * value_buffer[i+61] +
5 * value_buffer[i+62] +
4 * value_buffer[i+63] +
3 * value_buffer[i+64] +
3 * value_buffer[i+65]) >> 14;
default:
return value_buffer[i];
}
return 0;
}