slide static method

void slide(
  1. List<int> r,
  2. List<int> a
)

Implementation

static void slide(List<int> r, List<int> a) {
  int i, b, k;

  // First loop: Initialize r[i] based on a[i >> 3] and bitwise operations.
  for (i = 0; i < 256; ++i) {
    r[i] = 1 & (a[i >> 3] >> (i & 7));
  }

  // Second loop: Update r based on the specified conditions.
  for (i = 0; i < 256; ++i) {
    if (r[i] != 0) {
      for (b = 1; b <= 6 && i + b < 256; ++b) {
        if (r[i + b] != 0) {
          if (r[i] + (r[i + b] << b) <= 15) {
            r[i] += r[i + b] << b;
            r[i + b] = 0;
          } else if (r[i] - (r[i + b] << b) >= -15) {
            r[i] -= r[i + b] << b;
            for (k = i + b; k < 256; ++k) {
              if (r[k] == 0) {
                r[k] = 1;
                break;
              }
              r[k] = 0;
            }
          } else {
            break;
          }
        }
      }
    }
  }
}