private static void shade(short[] imageColorArray, int[] imageShadeArray) {
        int i = 512;
        int j = 512;

        int k = 0;
        for (int m = 0; m < j; m++) {
            for (int n = 0; n < i; k++) {
                if (imageShadeArray[k] != 0) {
                    float f1;
                    if (n == 0) {
                        f1 = imageColorArray[(k + 1)] - imageColorArray[k];
                    } else if (n == i - 1) {
                        f1 = imageColorArray[k] - imageColorArray[(k - 1)];
                    } else {
                        f1 = (imageColorArray[(k + 1)] - imageColorArray[(k - 1)]) * 2;
                    }
                    float f2;
                    if (m == 0) {
                        f2 = imageColorArray[(k + i)] - imageColorArray[k];
                    } else if (m == j - 1) {
                        f2 = imageColorArray[k] - imageColorArray[(k - i)];
                    } else {
                        f2 = (imageColorArray[(k + i)] - imageColorArray[(k - i)]) * 2;
                    }
                    float f3 = f1 + f2;
                    if (f3 > 10.0F) {
                        f3 = 10.0F;
                    }
                    if (f3 < -10.0F) {
                        f3 = -10.0F;
                    }

                    f3 = (float) (f3 + (imageColorArray[k] - 64) / 7.0D);

                    imageShadeArray[k] = Color.shade(imageShadeArray[k], (int) (f3 * 8.0F));
                }
                n++;
            }
        }
    }